{"version":3,"file":"index.fBDzJt_X.js","sources":["../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/check.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/check-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/chevron-down.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/chevron-down-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/chevron-left.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/chevron-left-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/chevron-right.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/chevron-right-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/chevron-up.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/chevron-up-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/close-circle-fill.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/close-circle-fill-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/close.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/close-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/edit.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/edit-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/less.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/less-icon.vue.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/assets/icons/spinner.svg.mjs","../../../../../../app/node_modules/@frontiers/brink-icons/dist/components/spinner-icon.vue.mjs","../../../../../../app/node_modules/@vueuse/shared/index.mjs","../../../../../../app/node_modules/@vueuse/core/index.mjs","../../../../../../app/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../../../app/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../../../app/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../../../app/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../../../app/node_modules/@floating-ui/vue/dist/floating-ui.vue.esm.js","../../../../../../app/node_modules/@frontiers/brink-ui/dist/index.js"],"sourcesContent":["import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"m41.418 13.248-1.353-1.356a.955.955 0 0 0-.3-.21.975.975 0 0 0-.737 0 .946.946 0 0 0-.31.21l-19.06 19.053-10.42-10.416a.944.944 0 0 0-.3-.207.963.963 0 0 0-.366-.075.976.976 0 0 0-.37.075.944.944 0 0 0-.3.207L6.55 21.888a.96.96 0 0 0 0 1.353l13.134 13.137 21.77-21.774a.963.963 0 0 0 0-1.356h-.035Z\" }, null, -1), r = [\n  c\n];\nfunction s(a, l) {\n  return e(), t(\"svg\", n, r);\n}\nconst _ = { render: s };\nexport {\n  _ as default,\n  s as render\n};\n//# sourceMappingURL=check.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as p, createBlock as r, unref as s } from \"vue\";\nimport a from \"../assets/icons/check.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"check-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = c(() => o[l.size]);\n    return (t, d) => (p(), r(s(a), {\n      fill: t.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=check-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"M41.553 17.7 40.2 16.341a.953.953 0 0 0-.3-.21.975.975 0 0 0-.737 0 .945.945 0 0 0-.31.21l-15 15-15-15a.994.994 0 0 0-.3-.207.975.975 0 0 0-.735 0 .994.994 0 0 0-.3.207L6.165 17.7a.96.96 0 0 0 0 1.353l17.7 17.7 17.718-17.721a.96.96 0 0 0 0-1.353l-.03.021Z\" }, null, -1), r = [\n  c\n];\nfunction l(s, a) {\n  return e(), t(\"svg\", n, r);\n}\nconst _ = { render: l };\nexport {\n  _ as default,\n  l as render\n};\n//# sourceMappingURL=chevron-down.svg.mjs.map\n","import { defineComponent as t, computed as c, openBlock as r, createBlock as p, unref as s } from \"vue\";\nimport d from \"../assets/icons/chevron-down.svg.mjs\";\nconst u = /* @__PURE__ */ t({\n  __name: \"chevron-down-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = c(() => o[l.size]);\n    return (n, a) => (r(), p(s(d), {\n      fill: n.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=chevron-down-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"M30.357 6.306a.966.966 0 0 0-.675.279L11.961 24.303l17.7 17.7a.96.96 0 0 0 1.353 0l1.359-1.353a.955.955 0 0 0 .21-.3.977.977 0 0 0 0-.736.948.948 0 0 0-.21-.311l-15-15 15-15a.946.946 0 0 0 .207-.3.963.963 0 0 0 .075-.366.978.978 0 0 0-.075-.369.946.946 0 0 0-.207-.3l-1.359-1.353a.969.969 0 0 0-.657-.309Z\" }, null, -1), l = [\n  c\n];\nfunction r(a, s) {\n  return e(), t(\"svg\", n, l);\n}\nconst _ = { render: r };\nexport {\n  _ as default,\n  r as render\n};\n//# sourceMappingURL=chevron-left.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as r, createBlock as p, unref as s } from \"vue\";\nimport f from \"../assets/icons/chevron-left.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"chevron-left-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, t = c(() => o[l.size]);\n    return (i, a) => (r(), p(s(f), {\n      fill: i.fill,\n      width: t.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=chevron-left-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"m16.923 6.291-1.356 1.353a.948.948 0 0 0-.282.678.97.97 0 0 0 .072.369.94.94 0 0 0 .21.3l15 15-15 15a.945.945 0 0 0-.207.3.978.978 0 0 0-.075.369.94.94 0 0 0 .282.666l1.359 1.353a.96.96 0 0 0 1.353 0l17.7-17.7-17.721-17.7a.963.963 0 0 0-1.356 0l.02.012Z\" }, null, -1), l = [\n  c\n];\nfunction r(s, a) {\n  return e(), t(\"svg\", n, l);\n}\nconst _ = { render: r };\nexport {\n  _ as default,\n  r as render\n};\n//# sourceMappingURL=chevron-right.svg.mjs.map\n","import { defineComponent as n, computed as r, openBlock as c, createBlock as p, unref as s } from \"vue\";\nimport a from \"../assets/icons/chevron-right.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"chevron-right-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = r(() => o[l.size]);\n    return (t, d) => (c(), p(s(a), {\n      fill: t.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=chevron-right-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"m6.846 30.663 1.353 1.359a.923.923 0 0 0 1.035.207.946.946 0 0 0 .3-.207l15-15 15 14.985c.085.09.187.16.3.21a.977.977 0 0 0 .735 0 .955.955 0 0 0 .3-.21l1.353-1.356a.963.963 0 0 0 0-1.356l-17.7-17.7L6.804 29.316a.96.96 0 0 0 0 1.353l.042-.006Z\" }, null, -1), l = [\n  c\n];\nfunction r(s, a) {\n  return e(), t(\"svg\", n, l);\n}\nconst _ = { render: r };\nexport {\n  _ as default,\n  r as render\n};\n//# sourceMappingURL=chevron-up.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as p, createBlock as r, unref as s } from \"vue\";\nimport u from \"../assets/icons/chevron-up.svg.mjs\";\nconst m = /* @__PURE__ */ n({\n  __name: \"chevron-up-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = c(() => o[l.size]);\n    return (t, a) => (p(), r(s(u), {\n      fill: t.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  m as default\n};\n//# sourceMappingURL=chevron-up-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst l = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, a = /* @__PURE__ */ o(\"path\", { d: \"M24 2.88a21.12 21.12 0 1 0 0 42.24 21.12 21.12 0 0 0 0-42.24Zm10.18 28.589a.96.96 0 0 1 0 1.358l-1.358 1.359a.96.96 0 0 1-1.353 0l-7.47-7.47-7.468 7.47a.96.96 0 0 1-1.353 0l-1.359-1.359a.96.96 0 0 1 0-1.358L21.283 24l-7.464-7.464a.96.96 0 0 1 0-1.358l1.358-1.359a.96.96 0 0 1 1.354 0L24 21.288l7.469-7.469a.96.96 0 0 1 1.353 0l1.359 1.359a.96.96 0 0 1 0 1.358L26.717 24l7.464 7.469Z\" }, null, -1), n = [\n  a\n];\nfunction c(r, s) {\n  return e(), t(\"svg\", l, n);\n}\nconst _ = { render: c };\nexport {\n  _ as default,\n  c as render\n};\n//# sourceMappingURL=close-circle-fill.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as r, createBlock as p, unref as s } from \"vue\";\nimport f from \"../assets/icons/close-circle-fill.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"close-circle-fill-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(l) {\n    const e = l, i = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, o = c(() => i[e.size]);\n    return (t, a) => (r(), p(s(f), {\n      fill: t.fill,\n      width: o.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=close-circle-fill-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as l, createElementVNode as o } from \"vue\";\nconst t = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, n = /* @__PURE__ */ o(\"path\", {\n  \"fill-rule\": \"evenodd\",\n  d: \"M24.044 26.694 10.438 40.257a.957.957 0 0 1-1.36 0l-1.355-1.359a.957.957 0 0 1 0-1.356L21.33 23.979 7.755 10.464a.956.956 0 0 1 0-1.356l1.359-1.359a.957.957 0 0 1 1.355 0l13.575 13.515L37.566 7.743a.96.96 0 0 1 1.36 0l1.356 1.359a.956.956 0 0 1 0 1.356L26.76 23.979l13.5 13.563a.956.956 0 0 1 0 1.356l-1.36 1.359a.955.955 0 0 1-1.355 0l-13.5-13.563Z\",\n  \"clip-rule\": \"evenodd\"\n}, null, -1), a = [\n  n\n];\nfunction c(r, d) {\n  return e(), l(\"svg\", t, a);\n}\nconst i = { render: c };\nexport {\n  i as default,\n  c as render\n};\n//# sourceMappingURL=close.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as p, createBlock as r, unref as s } from \"vue\";\nimport a from \"../assets/icons/close.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"close-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = c(() => o[l.size]);\n    return (t, d) => (p(), r(s(a), {\n      fill: t.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=close-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as o, createElementVNode as t } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, l = /* @__PURE__ */ t(\"path\", {\n  \"fill-rule\": \"evenodd\",\n  d: \"M5.156 34.993v7.85h7.85l23.155-23.152-7.85-7.851L5.155 34.993Zm37.076-21.375a2.084 2.084 0 0 0 0-2.95l-4.899-4.9a2.087 2.087 0 0 0-2.951 0L30.55 9.599l7.851 7.85 3.831-3.83Z\",\n  \"clip-rule\": \"evenodd\"\n}, null, -1), c = [\n  l\n];\nfunction r(d, s) {\n  return e(), o(\"svg\", n, c);\n}\nconst i = { render: r };\nexport {\n  i as default,\n  r as render\n};\n//# sourceMappingURL=edit.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as p, createBlock as r, unref as s } from \"vue\";\nimport d from \"../assets/icons/edit.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"edit-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, i = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, o = c(() => i[l.size]);\n    return (t, a) => (p(), r(s(d), {\n      fill: t.fill,\n      width: o.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=edit-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst c = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, n = /* @__PURE__ */ o(\"path\", { d: \"M41.228 22.08H6.77a.96.96 0 0 0-.96.96v1.92c0 .53.43.96.96.96h34.458c.53 0 .96-.43.96-.96v-1.92a.96.96 0 0 0-.96-.96Z\" }, null, -1), r = [\n  n\n];\nfunction s(a, d) {\n  return e(), t(\"svg\", c, r);\n}\nconst _ = { render: s };\nexport {\n  _ as default,\n  s as render\n};\n//# sourceMappingURL=less.svg.mjs.map\n","import { defineComponent as n, computed as c, openBlock as p, createBlock as r, unref as s } from \"vue\";\nimport a from \"../assets/icons/less.svg.mjs\";\nconst u = /* @__PURE__ */ n({\n  __name: \"less-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, o = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, i = c(() => o[l.size]);\n    return (t, d) => (p(), r(s(a), {\n      fill: t.fill,\n      width: i.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=less-icon.vue.mjs.map\n","import { openBlock as e, createElementBlock as t, createElementVNode as o } from \"vue\";\nconst n = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n}, c = /* @__PURE__ */ o(\"path\", { d: \"M24.906 8.89a.93.93 0 0 1-.96-.923v-1.92a.926.926 0 0 1 .987-.945 18.6 18.6 0 0 1 6.252 1.37A18.92 18.92 0 1 1 6.468 31.19 18.57 18.57 0 0 1 5.1 25.028v-.117a.96.96 0 0 1 .96-.96h1.92a1.032 1.032 0 0 1 .957 1.089c.03.623.105 1.242.225 1.854a15.082 15.082 0 1 0 25.452-13.605 14.823 14.823 0 0 0-9.651-4.395l-.057-.003Z\" }, null, -1), r = [\n  c\n];\nfunction a(s, l) {\n  return e(), t(\"svg\", n, r);\n}\nconst _ = { render: a };\nexport {\n  _ as default,\n  a as render\n};\n//# sourceMappingURL=spinner.svg.mjs.map\n","import { defineComponent as t, computed as p, openBlock as r, createBlock as c, unref as s } from \"vue\";\nimport a from \"../assets/icons/spinner.svg.mjs\";\nconst u = /* @__PURE__ */ t({\n  __name: \"spinner-icon\",\n  props: {\n    fill: { default: \"currentColor\" },\n    size: { default: \"md\" }\n  },\n  setup(e) {\n    const l = e, i = {\n      sm: \"12px\",\n      md: \"16px\",\n      lg: \"24px\",\n      xl: \"32px\",\n      \"2xl\": \"48px\"\n    }, o = p(() => i[l.size]);\n    return (n, d) => (r(), c(s(a), {\n      fill: n.fill,\n      width: o.value,\n      style: {\n        verticalAlign: \"middle\",\n        display: \"inline-block\",\n        height: \"auto\"\n      }\n    }, null, 8, [\"fill\", \"width\"]));\n  }\n});\nexport {\n  u as default\n};\n//# sourceMappingURL=spinner-icon.vue.mjs.map\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, {\n    ...options,\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  });\n  return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = typeof fn === \"function\" ? fn : fn.get;\n  const set = typeof fn === \"function\" ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get();\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = /* @__PURE__ */ new Set();\n  const off = (fn) => {\n    fns.delete(fn);\n  };\n  const on = (fn) => {\n    fns.add(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (param) => {\n    return Promise.all(Array.from(fns).map((fn) => param ? fn(param) : fn()));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return (...args) => {\n    if (!initialized) {\n      state = scope.run(() => stateFactory(...args));\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n  var _a;\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"provideLocal must be called in setup\");\n  if (!localProvidedStateMap.has(instance))\n    localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n  const localProvidedState = localProvidedStateMap.get(instance);\n  localProvidedState[key] = value;\n  provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n  var _a;\n  const key = args[0];\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"injectLocal must be called in setup\");\n  if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n    return localProvidedStateMap.get(instance)[key];\n  return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n  const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provideLocal(key, state);\n    return state;\n  };\n  const useInjectedState = () => injectLocal(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!state) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n    return;\n  }\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = { ...obj };\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction toValue(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(\n    keys.map((key) => {\n      const value = obj[key];\n      return [\n        key,\n        typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n      ];\n    })\n  );\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n  var _a;\n  return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = toValue(ms);\n    const maxDuration = toValue(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = toValue(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n  mounted: isVue3 ? \"mounted\" : \"inserted\",\n  updated: isVue3 ? \"updated\" : \"componentUpdated\",\n  unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = Number.parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n  return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n    return (!omitUndefined || value !== void 0) && !keys.includes(key);\n  }));\n}\nfunction objectEntries(obj) {\n  return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n  if (args.length !== 1)\n    return toRef$1(...args);\n  const r = args[0];\n  return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = toValue(defaultValue);\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = toValue(defaultValue);\n      trigger();\n    }, toValue(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(\n    debounceFilter(ms, options),\n    fn\n  );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(\n    throttleFilter(ms, trailing, leading, rejectOnCancel),\n    fn\n  );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(\n    ref,\n    {\n      get,\n      set,\n      untrackedGet,\n      silentSet,\n      peek,\n      lay\n    },\n    { enumerable: true }\n  );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    if (isVue2) {\n      set$1(...args);\n    } else {\n      const [target, key, value] = args;\n      target[key] = value;\n    }\n  }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  return watch(\n    source,\n    createFilterWrapper(\n      eventFilter,\n      cb\n    ),\n    watchOptions\n  );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n  const {\n    eventFilter: filter,\n    ...watchOptions\n  } = options;\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter\n    }\n  );\n  return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options || {};\n  const watchers = [];\n  const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n  const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchers.push(watchPausable(\n      left,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        right.value = transformLTR(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchers.push(watchPausable(\n      right,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        left.value = transformRTL(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  const stop = () => {\n    watchers.forEach((w) => w.stop());\n  };\n  return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(\n    source,\n    (newValue) => targets.forEach((target) => target.value = newValue),\n    { flush, deep, immediate }\n  );\n}\n\nfunction toRefs(objectRef, options = {}) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        var _a;\n        const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n        if (replaceRef) {\n          if (Array.isArray(objectRef.value)) {\n            const copy = [...objectRef.value];\n            copy[key] = v;\n            objectRef.value = copy;\n          } else {\n            const newObject = { ...objectRef.value, [key]: v };\n            Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n            objectRef.value = newObject;\n          }\n        } else {\n          objectRef.value[key] = v;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n  if (getCurrentInstance())\n    onBeforeMount(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n  if (getCurrentInstance())\n    onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n  if (getCurrentInstance())\n    onMounted(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n  if (getCurrentInstance())\n    onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        r,\n        (v) => {\n          if (condition(v) !== isNot) {\n            stop == null ? void 0 : stop();\n            resolve(v);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        [r, value],\n        ([v1, v2]) => {\n          if (isNot !== (v1 === v2)) {\n            stop == null ? void 0 : stop();\n            resolve(v1);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n          stop == null ? void 0 : stop();\n          return toValue(r);\n        })\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(toValue(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(toValue(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n  return value === othVal;\n}\nfunction useArrayDifference(...args) {\n  var _a;\n  const list = args[0];\n  const values = args[1];\n  let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n  if (typeof compareFn === \"string\") {\n    const key = compareFn;\n    compareFn = (value, othVal) => value[key] === othVal[key];\n  }\n  return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => toValue(\n    toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => toValue(\n    !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n  return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n  var _a;\n  const list = args[0];\n  const value = args[1];\n  let comparator = args[2];\n  let formIndex = 0;\n  if (isArrayIncludesOptions(comparator)) {\n    formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n    comparator = comparator.comparator;\n  }\n  if (typeof comparator === \"string\") {\n    const key = comparator;\n    comparator = (element, value2) => element[key] === toValue(value2);\n  }\n  comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n  return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n    toValue(element),\n    toValue(value),\n    index,\n    toValue(array)\n  )));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n  return computed(() => {\n    const resolved = toValue(list);\n    return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n  return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n  return array.reduce((acc, v) => {\n    if (!acc.some((x) => fn(v, x, array)))\n      acc.push(v);\n    return acc;\n  }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n  return computed(() => {\n    const resolvedList = toValue(list).map((element) => toValue(element));\n    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n  });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  let _initialValue = unref(initialValue);\n  const count = ref(initialValue);\n  const {\n    max = Number.POSITIVE_INFINITY,\n    min = Number.NEGATIVE_INFINITY\n  } = options;\n  const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n  const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = _initialValue) => {\n    _initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n  const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n  const v = num % 100;\n  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    Yo: () => formatOrdinal(years),\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    Mo: () => formatOrdinal(month + 1),\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n    D: () => String(days),\n    Do: () => formatOrdinal(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    Ho: () => formatOrdinal(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    ho: () => formatOrdinal(hours % 12 || 12),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mo: () => formatOrdinal(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    so: () => formatOrdinal(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n    var _a2, _b;\n    return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n  });\n}\nfunction normalizeDate(date) {\n  if (date === null)\n    return new Date(Number.NaN);\n  if (date === void 0)\n    return /* @__PURE__ */ new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = toValue(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || typeof interval === \"function\") {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(\n    callback ? () => {\n      update();\n      callback(counter.value);\n    } : update,\n    interval,\n    { immediate }\n  );\n  if (exposeControls) {\n    return {\n      counter,\n      reset,\n      ...controls\n    };\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(\n    source,\n    () => ms.value = timestamp(),\n    options\n  );\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, toValue(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(\n    callback != null ? callback : noop,\n    interval,\n    options\n  );\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return {\n      ready,\n      ...controls\n    };\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = toValue(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && Number.isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = toValue(truthyValue);\n      _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = Array.from({ length: oldList.length });\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n  const {\n    count,\n    ...watchOptions\n  } = options;\n  const current = ref(0);\n  const stop = watchWithFilter(\n    source,\n    (...args) => {\n      current.value += 1;\n      if (current.value >= toValue(count))\n        nextTick(() => stop());\n      cb(...args);\n    },\n    watchOptions\n  );\n  return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n  const {\n    debounce = 0,\n    maxWait = void 0,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: debounceFilter(debounce, { maxWait })\n    }\n  );\n}\n\nfunction watchDeep(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      deep: true\n    }\n  );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  const filteredCb = createFilterWrapper(\n    eventFilter,\n    cb\n  );\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(\n      source,\n      (...args) => {\n        if (!ignore.value)\n          filteredCb(...args);\n      },\n      watchOptions\n    );\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(\n      watch(\n        source,\n        () => {\n          syncCounter.value++;\n        },\n        { ...watchOptions, flush: \"sync\" }\n      )\n    );\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(\n      watch(\n        source,\n        (...args) => {\n          const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n          ignoreCounter.value = 0;\n          syncCounter.value = 0;\n          if (ignore)\n            return;\n          filteredCb(...args);\n        },\n        watchOptions\n      )\n    );\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      immediate: true\n    }\n  );\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n  return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n  const {\n    throttle = 0,\n    trailing = true,\n    leading = true,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: throttleFilter(throttle, trailing, leading)\n    }\n  );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return {\n    ...res,\n    trigger\n  };\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => toValue(item));\n  return toValue(sources);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  return watch(\n    source,\n    (v, ov, onInvalidate) => {\n      if (v)\n        cb(v, ov, onInvalidate);\n    },\n    options\n  );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\nimport { useEventListener as useEventListener$1 } from '@vueuse/core';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = true,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nfunction createReusableTemplate(options = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n    return;\n  }\n  const {\n    inheritAttrs = true\n  } = options;\n  const render = shallowRef();\n  const define = /* #__PURE__ */ defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        render.value = slots.default;\n      };\n    }\n  });\n  const reuse = /* #__PURE__ */ defineComponent({\n    inheritAttrs,\n    setup(_, { attrs, slots }) {\n      return () => {\n        var _a;\n        if (!render.value && process.env.NODE_ENV !== \"production\")\n          throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n        const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n        return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n      };\n    }\n  });\n  return makeDestructurable(\n    { define, reuse },\n    [define, reuse]\n  );\n}\nfunction keysToCamelKebabCase(obj) {\n  const newObj = {};\n  for (const key in obj)\n    newObj[camelize(key)] = obj[key];\n  return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n  if (!isVue3) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n    return;\n  }\n  let index = 0;\n  const instances = ref([]);\n  function create(...args) {\n    const props = shallowReactive({\n      key: index++,\n      args,\n      promise: void 0,\n      resolve: () => {\n      },\n      reject: () => {\n      },\n      isResolving: false,\n      options\n    });\n    instances.value.push(props);\n    props.promise = new Promise((_resolve, _reject) => {\n      props.resolve = (v) => {\n        props.isResolving = true;\n        return _resolve(v);\n      };\n      props.reject = _reject;\n    }).finally(() => {\n      props.promise = void 0;\n      const index2 = instances.value.indexOf(props);\n      if (index2 !== -1)\n        instances.value.splice(index2, 1);\n    });\n    return props.promise;\n  }\n  function start(...args) {\n    if (options.singleton && instances.value.length > 0)\n      return instances.value[0].promise;\n    return create(...args);\n  }\n  const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n    const renderList = () => instances.value.map((props) => {\n      var _a;\n      return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n    });\n    if (options.transition)\n      return () => h(TransitionGroup, options.transition, renderList);\n    return renderList;\n  });\n  component.start = start;\n  return component;\n}\n\nfunction createUnrefFn(fn) {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => toValue(i)));\n  };\n}\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = toValue(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(\n    () => [unrefElement(target), toValue(options)],\n    ([el, options2]) => {\n      cleanup();\n      if (!el)\n        return;\n      const optionsClone = isObject(options2) ? { ...options2 } : options2;\n      cleanups.push(\n        ...events.flatMap((event) => {\n          return listeners.map((listener) => register(el, event, listener, optionsClone));\n        })\n      );\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n    window.document.documentElement.addEventListener(\"click\", noop);\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return ignore.some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  const cleanup = [\n    useEventListener(window, \"click\", listener, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      setTimeout(() => {\n        var _a;\n        const el = unrefElement(target);\n        if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n          handler(event);\n      }, 0);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n}\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const {\n    target = defaultWindow,\n    eventName = \"keydown\",\n    passive = false,\n    dedupe = false\n  } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (e.repeat && toValue(dedupe))\n      return;\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    timeout = setTimeout(\n      () => handler(ev),\n      (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n    );\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  const cleanup = [\n    useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n    useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  if (keyCode >= 97 && keyCode <= 122)\n    return true;\n  return false;\n}\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const {\n    window = defaultWindow,\n    deep = true\n  } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const getDeepActiveElement = () => {\n    var _a2;\n    let element = document == null ? void 0 : document.activeElement;\n    if (deep) {\n      while (element == null ? void 0 : element.shadowRoot)\n        element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n    }\n    return element;\n  };\n  const activeElement = computedWithControl(\n    () => null,\n    () => getDeepActiveElement()\n  );\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      activeElement.trigger();\n    }, true);\n    useEventListener(window, \"focus\", activeElement.trigger, true);\n  }\n  return activeElement;\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  if (getCurrentInstance()) {\n    onMounted(() => {\n      isMounted.value = true;\n    });\n  }\n  return isMounted;\n}\n\nfunction useSupported(callback) {\n  const isMounted = useMounted();\n  return computed(() => {\n    isMounted.value;\n    return Boolean(callback());\n  });\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    fpsLimit = void 0,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    const delta = timestamp - (previousFrameTimestamp || timestamp);\n    if (intervalLimit && delta < intervalLimit) {\n      rafId = window.requestAnimationFrame(loop);\n      return;\n    }\n    fn({ delta, timestamp });\n    previousFrameTimestamp = timestamp;\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nfunction useAnimate(target, keyframes, options) {\n  let config;\n  let animateOptions;\n  if (isObject(options)) {\n    config = options;\n    animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n  } else {\n    config = { duration: options };\n    animateOptions = options;\n  }\n  const {\n    window = defaultWindow,\n    immediate = true,\n    commitStyles,\n    persist,\n    playbackRate: _playbackRate = 1,\n    onReady,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = config;\n  const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n  const animate = shallowRef(void 0);\n  const store = shallowReactive({\n    startTime: null,\n    currentTime: null,\n    timeline: null,\n    playbackRate: _playbackRate,\n    pending: false,\n    playState: immediate ? \"idle\" : \"paused\",\n    replaceState: \"active\"\n  });\n  const pending = computed(() => store.pending);\n  const playState = computed(() => store.playState);\n  const replaceState = computed(() => store.replaceState);\n  const startTime = computed({\n    get() {\n      return store.startTime;\n    },\n    set(value) {\n      store.startTime = value;\n      if (animate.value)\n        animate.value.startTime = value;\n    }\n  });\n  const currentTime = computed({\n    get() {\n      return store.currentTime;\n    },\n    set(value) {\n      store.currentTime = value;\n      if (animate.value) {\n        animate.value.currentTime = value;\n        syncResume();\n      }\n    }\n  });\n  const timeline = computed({\n    get() {\n      return store.timeline;\n    },\n    set(value) {\n      store.timeline = value;\n      if (animate.value)\n        animate.value.timeline = value;\n    }\n  });\n  const playbackRate = computed({\n    get() {\n      return store.playbackRate;\n    },\n    set(value) {\n      store.playbackRate = value;\n      if (animate.value)\n        animate.value.playbackRate = value;\n    }\n  });\n  const play = () => {\n    if (animate.value) {\n      try {\n        animate.value.play();\n        syncResume();\n      } catch (e) {\n        syncPause();\n        onError(e);\n      }\n    } else {\n      update();\n    }\n  };\n  const pause = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.pause();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const reverse = () => {\n    var _a;\n    !animate.value && update();\n    try {\n      (_a = animate.value) == null ? void 0 : _a.reverse();\n      syncResume();\n    } catch (e) {\n      syncPause();\n      onError(e);\n    }\n  };\n  const finish = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.finish();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const cancel = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.cancel();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  watch(() => unrefElement(target), (el) => {\n    el && update();\n  });\n  watch(() => keyframes, (value) => {\n    !animate.value && update();\n    if (!unrefElement(target) && animate.value) {\n      animate.value.effect = new KeyframeEffect(\n        unrefElement(target),\n        toValue(value),\n        animateOptions\n      );\n    }\n  }, { deep: true });\n  tryOnMounted(() => {\n    nextTick(() => update(true));\n  });\n  tryOnScopeDispose(cancel);\n  function update(init) {\n    const el = unrefElement(target);\n    if (!isSupported.value || !el)\n      return;\n    animate.value = el.animate(toValue(keyframes), animateOptions);\n    if (commitStyles)\n      animate.value.commitStyles();\n    if (persist)\n      animate.value.persist();\n    if (_playbackRate !== 1)\n      animate.value.playbackRate = _playbackRate;\n    if (init && !immediate)\n      animate.value.pause();\n    else\n      syncResume();\n    onReady == null ? void 0 : onReady(animate.value);\n  }\n  useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n  const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n    if (!animate.value)\n      return;\n    store.pending = animate.value.pending;\n    store.playState = animate.value.playState;\n    store.replaceState = animate.value.replaceState;\n    store.startTime = animate.value.startTime;\n    store.currentTime = animate.value.currentTime;\n    store.timeline = animate.value.timeline;\n    store.playbackRate = animate.value.playbackRate;\n  }, { immediate: false });\n  function syncResume() {\n    if (isSupported.value)\n      resumeRef();\n  }\n  function syncPause() {\n    if (isSupported.value && window)\n      window.requestAnimationFrame(pauseRef);\n  }\n  return {\n    isSupported,\n    animate,\n    // actions\n    play,\n    pause,\n    reverse,\n    finish,\n    cancel,\n    // state\n    pending,\n    playState,\n    replaceState,\n    startTime,\n    currentTime,\n    timeline,\n    playbackRate\n  };\n}\n\nfunction useAsyncQueue(tasks, options) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop,\n    signal\n  } = options || {};\n  const promiseState = {\n    aborted: \"aborted\",\n    fulfilled: \"fulfilled\",\n    pending: \"pending\",\n    rejected: \"rejected\"\n  };\n  const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, new Error(\"aborted\"));\n        return;\n      }\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      const done = curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        activeIndex.value === tasks.length - 1 && onFinished();\n        return currentRes;\n      });\n      if (!signal)\n        return done;\n      return Promise.race([done, whenAborted(signal)]);\n    }).catch((e) => {\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, e);\n        return e;\n      }\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\nfunction whenAborted(signal) {\n  return new Promise((resolve, reject) => {\n    const error = new Error(\"aborted\");\n    if (signal.aborted)\n      reject(error);\n    else\n      signal.addEventListener(\"abort\", () => reject(error), { once: true });\n  });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = shallowRef(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw e;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  const shell = {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n  function waitUntilIsLoaded() {\n    return new Promise((resolve, reject) => {\n      until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilIsLoaded().then(onFulfilled, onRejected);\n    }\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = toValue(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || typeof target === \"function\")\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useBattery(options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      useEventListener(battery, events, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    // Device:\n    device,\n    requestDevice,\n    // Server:\n    server,\n    // Errors:\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const handler = (event) => {\n    matches.value = event.matches;\n  };\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", handler);\n    else\n      mediaQuery.removeListener(handler);\n  };\n  const stopWatch = watchEffect(() => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(toValue(query));\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", handler);\n    else\n      mediaQuery.addListener(handler);\n    matches.value = mediaQuery.matches;\n  });\n  tryOnScopeDispose(() => {\n    stopWatch();\n    cleanup();\n    mediaQuery = void 0;\n  });\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  xs: 0,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetify = {\n  xs: 600,\n  sm: 960,\n  md: 1264,\n  lg: 1904\n};\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 600,\n  sm: 1024,\n  md: 1440,\n  lg: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = breakpoints[k];\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => greaterOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  return Object.assign(shortcutMethods, {\n    greater(k) {\n      return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    greaterOrEqual,\n    smaller(k) {\n      return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    smallerOrEqual(k) {\n      return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    },\n    current() {\n      const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n      return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n    }\n  });\n}\n\nfunction useBroadcastChannel(options) {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = shallowRef(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n}\n\nconst WRITABLE_PROPERTIES = [\n  \"hash\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n  const { window = defaultWindow } = options;\n  const refs = Object.fromEntries(\n    WRITABLE_PROPERTIES.map((key) => [key, ref()])\n  );\n  for (const [key, ref2] of objectEntries(refs)) {\n    watch(ref2, (value) => {\n      if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n        return;\n      window.location[key] = value;\n    });\n  }\n  const buildState = (trigger) => {\n    var _a;\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { origin } = (window == null ? void 0 : window.location) || {};\n    for (const key of WRITABLE_PROPERTIES)\n      refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n    return reactive({\n      trigger,\n      state: state2,\n      length,\n      origin,\n      ...refs\n    });\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  let permissionStatus;\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = ref();\n  const onChange = () => {\n    if (permissionStatus)\n      state.value = permissionStatus.state;\n  };\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus) {\n      try {\n        permissionStatus = await navigator.permissions.query(desc);\n        useEventListener(permissionStatus, \"change\", onChange);\n        onChange();\n      } catch (e) {\n        state.value = \"prompt\";\n      }\n    }\n    return permissionStatus;\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const permissionRead = usePermission(\"clipboard-read\");\n  const permissionWrite = usePermission(\"clipboard-write\");\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateText);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nfunction useClipboardItems(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const content = ref([]);\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateContent() {\n    if (isSupported.value) {\n      navigator.clipboard.read().then((items) => {\n        content.value = items;\n      });\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateContent);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      await navigator.clipboard.write(value);\n      content.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    content,\n    copied,\n    copy\n  };\n}\n\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    // watch options\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(toValue(source));\n  }\n  if (!manual && (isRef(source) || typeof source === \"function\")) {\n    watch(source, sync, {\n      ...options,\n      deep,\n      immediate\n    });\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n  if (!(globalKey in _global))\n    _global[globalKey] = _global[globalKey] || {};\n  return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    },\n    initOnMounted\n  } = options;\n  const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = toValue(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n    data,\n    () => write(data.value),\n    { flush, deep, eventFilter }\n  );\n  if (window && listenToStorageChanges) {\n    tryOnMounted(() => {\n      useEventListener(window, \"storage\", update);\n      useEventListener(window, customStorageEventName, updateFromCustomEvent);\n      if (initOnMounted)\n        update();\n    });\n  }\n  if (!initOnMounted)\n    update();\n  return data;\n  function write(v) {\n    try {\n      if (v == null) {\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        const oldValue = storage.getItem(key);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          if (window) {\n            window.dispatchEvent(new CustomEvent(customStorageEventName, {\n              detail: {\n                key,\n                oldValue,\n                newValue: serialized,\n                storageArea: storage\n              }\n            }));\n          }\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit !== null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (typeof mergeDefaults === \"function\")\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return { ...rawInit, ...value };\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n        data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto,\n    disableTransition = true\n  } = options;\n  const modes = {\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\",\n    ...options.modes || {}\n  };\n  const preferredDark = usePreferredDark({ window });\n  const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n  const updateHTMLAttrs = getSSRHandler(\n    \"updateHTMLAttrs\",\n    (selector2, attribute2, value) => {\n      const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n      if (!el)\n        return;\n      let style;\n      if (disableTransition) {\n        style = window.document.createElement(\"style\");\n        const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n        style.appendChild(document.createTextNode(styleString));\n        window.document.head.appendChild(style);\n      }\n      if (attribute2 === \"class\") {\n        const current = value.split(/\\s/g);\n        Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n          if (current.includes(v))\n            el.classList.add(v);\n          else\n            el.classList.remove(v);\n        });\n      } else {\n        el.setAttribute(attribute2, value);\n      }\n      if (disableTransition) {\n        window.getComputedStyle(style).opacity;\n        document.head.removeChild(style);\n      }\n    }\n  );\n  function defaultOnChanged(mode) {\n    var _a;\n    updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  tryOnMounted(() => onChanged(state.value));\n  const auto = computed({\n    get() {\n      return emitAuto ? store.value : state.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  try {\n    return Object.assign(auto, { store, system, state });\n  } catch (e) {\n    return auto;\n  }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const stopWatch = watch(\n    () => unrefElement(target),\n    (el) => {\n      cleanup();\n      if (isSupported.value && window && el) {\n        observer = new MutationObserver(callback);\n        observer.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true }\n  );\n  const takeRecords = () => {\n    return observer == null ? void 0 : observer.takeRecords();\n  };\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop,\n    takeRecords\n  };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n  const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  function updateCssVar() {\n    var _a;\n    const key = toValue(prop);\n    const el = toValue(elRef);\n    if (el && window) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }\n  if (observe) {\n    useMutationObserver(elRef, updateCssVar, {\n      attributeFilter: [\"style\", \"class\"],\n      window\n    });\n  }\n  watch(\n    [elRef, () => toValue(prop)],\n    updateCssVar,\n    { immediate: true }\n  );\n  watch(\n    variable,\n    (val) => {\n      var _a;\n      if ((_a = elRef.value) == null ? void 0 : _a.style)\n        elRef.value.style.setProperty(toValue(prop), val);\n    }\n  );\n  return variable;\n}\n\nfunction useCurrentElement() {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(\n    () => null,\n    () => vm.proxy.$el\n  );\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  const state = shallowRef(getInitialValue());\n  const listRef = toRef(list);\n  const index = computed({\n    get() {\n      var _a;\n      const targetList = listRef.value;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const targetList = listRef.value;\n    const length = targetList.length;\n    const index2 = (i % length + length) % length;\n    const value = targetList[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  function getInitialValue() {\n    var _a, _b;\n    return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n  }\n  watch(listRef, () => set(index.value));\n  return {\n    state,\n    index,\n    next,\n    prev\n  };\n}\n\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\"\n  } = options;\n  const mode = useColorMode({\n    ...options,\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  });\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      const modeVal = v ? \"dark\" : \"light\";\n      if (mode.system.value === modeVal)\n        mode.value = \"auto\";\n      else\n        mode.value = modeVal;\n    }\n  });\n  return isDark;\n}\n\nfunction fnBypass(v) {\n  return v;\n}\nfunction fnSetSource(source, value) {\n  return source.value = value;\n}\nfunction defaultDump(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(\n    source,\n    commit,\n    { deep, flush, eventFilter: composedFilter }\n  );\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return {\n    ...manualHistory,\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(\n      eventFilter,\n      (event) => {\n        acceleration.value = event.acceleration;\n        accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n        rotationRate.value = event.rotationRate;\n        interval.value = event.interval;\n      }\n    );\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe2 = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup2();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe2, { once: true });\n    }, cleanup2 = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n    };\n    let media;\n    observe2();\n    tryOnScopeDispose(cleanup2);\n  }\n  return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  let stream;\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n    if (stream) {\n      stream.getTracks().forEach((t) => t.stop());\n      stream = null;\n    }\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      stream = await navigator.mediaDevices.getUserMedia(constraints);\n      update();\n      permissionGranted.value = true;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility(options = {}) {\n  const { document = defaultDocument } = options;\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n  var _a, _b;\n  const {\n    pointerTypes,\n    preventDefault,\n    stopPropagation,\n    exact,\n    onMove,\n    onEnd,\n    onStart,\n    initialValue,\n    axis = \"both\",\n    draggingElement = defaultWindow,\n    containerElement,\n    handle: draggingHandle = target\n  } = options;\n  const position = ref(\n    (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n  );\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (pointerTypes)\n      return pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (toValue(preventDefault))\n      e.preventDefault();\n    if (toValue(stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (toValue(exact) && e.target !== toValue(target))\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n      y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n    };\n    if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    let { x, y } = position.value;\n    if (axis === \"x\" || axis === \"both\") {\n      x = e.clientX - pressedDelta.value.x;\n      if (container)\n        x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n    }\n    if (axis === \"y\" || axis === \"both\") {\n      y = e.clientY - pressedDelta.value.y;\n      if (container)\n        y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n    }\n    position.value = {\n      x,\n      y\n    };\n    onMove == null ? void 0 : onMove(position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    onEnd == null ? void 0 : onEnd(position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    const config = { capture: (_b = options.capture) != null ? _b : true };\n    useEventListener(draggingHandle, \"pointerdown\", start, config);\n    useEventListener(draggingElement, \"pointermove\", move, config);\n    useEventListener(draggingElement, \"pointerup\", end, config);\n  }\n  return {\n    ...toRefs(position),\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(\n      () => `left:${position.value.x}px;top:${position.value.y}px;`\n    )\n  };\n}\n\nfunction useDropZone(target, options = {}) {\n  const isOverDropZone = ref(false);\n  const files = shallowRef(null);\n  let counter = 0;\n  let isDataTypeIncluded = true;\n  if (isClient) {\n    const _options = typeof options === \"function\" ? { onDrop: options } : options;\n    const getFiles = (event) => {\n      var _a, _b;\n      const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n      return files.value = list.length === 0 ? null : list;\n    };\n    useEventListener$1(target, \"dragenter\", (event) => {\n      var _a;\n      if (_options.dataTypes && event.dataTransfer) {\n        const dataTypes = unref(_options.dataTypes);\n        isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(event.dataTransfer.types) : dataTypes ? dataTypes.some((item) => event.dataTransfer.types.includes(item)) : true;\n        if (!isDataTypeIncluded)\n          return;\n      }\n      event.preventDefault();\n      counter += 1;\n      isOverDropZone.value = true;\n      (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragover\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragleave\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      counter -= 1;\n      if (counter === 0)\n        isOverDropZone.value = false;\n      (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"drop\", (event) => {\n      var _a;\n      event.preventDefault();\n      counter = 0;\n      isOverDropZone.value = false;\n      (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n  }\n  return {\n    files,\n    isOverDropZone\n  };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n  const stopWatch = watch(\n    targets,\n    (els) => {\n      cleanup();\n      if (isSupported.value && window) {\n        observer = new ResizeObserver(callback);\n        for (const _el of els)\n          _el && observer.observe(_el, observerOptions);\n      }\n    },\n    { immediate: true, flush: \"post\", deep: true }\n  );\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function update() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useElementByPoint(options) {\n  const {\n    x,\n    y,\n    document = defaultDocument,\n    multiple,\n    interval = \"requestAnimationFrame\",\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => {\n    if (toValue(multiple))\n      return document && \"elementsFromPoint\" in document;\n    return document && \"elementFromPoint\" in document;\n  });\n  const element = ref(null);\n  const cb = () => {\n    var _a, _b;\n    element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n  };\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  return {\n    isSupported,\n    element,\n    ...controls\n  };\n}\n\nfunction useElementHover(el, options = {}) {\n  const {\n    delayEnter = 0,\n    delayLeave = 0,\n    window = defaultWindow\n  } = options;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  const { stop: stop1 } = useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n      if (window && isSVG.value) {\n        const $elem = unrefElement(target);\n        if ($elem) {\n          const styles = window.getComputedStyle($elem);\n          width.value = Number.parseFloat(styles.width);\n          height.value = Number.parseFloat(styles.height);\n        }\n      } else {\n        if (boxSize) {\n          const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n          width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n          height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n        } else {\n          width.value = entry.contentRect.width;\n          height.value = entry.contentRect.height;\n        }\n      }\n    },\n    options\n  );\n  tryOnMounted(() => {\n    const ele = unrefElement(target);\n    if (ele) {\n      width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n      height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n    }\n  });\n  const stop2 = watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    }\n  );\n  function stop() {\n    stop1();\n    stop2();\n  }\n  return {\n    width,\n    height,\n    stop\n  };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0.1,\n    window = defaultWindow,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  const targets = computed(() => {\n    const _target = toValue(target);\n    return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n  });\n  let cleanup = noop;\n  const isActive = ref(immediate);\n  const stopWatch = isSupported.value ? watch(\n    () => [targets.value, unrefElement(root), isActive.value],\n    ([targets2, root2]) => {\n      cleanup();\n      if (!isActive.value)\n        return;\n      if (!targets2.length)\n        return;\n      const observer = new IntersectionObserver(\n        callback,\n        {\n          root: unrefElement(root2),\n          rootMargin,\n          threshold\n        }\n      );\n      targets2.forEach((el) => el && observer.observe(el));\n      cleanup = () => {\n        observer.disconnect();\n        cleanup = noop;\n      };\n    },\n    { immediate, flush: \"post\" }\n  ) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n    isActive.value = false;\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    isActive,\n    pause() {\n      cleanup();\n      isActive.value = false;\n    },\n    resume() {\n      isActive.value = true;\n    },\n    stop\n  };\n}\n\nfunction useElementVisibility(element, options = {}) {\n  const { window = defaultWindow, scrollTarget } = options;\n  const elementIsVisible = ref(false);\n  useIntersectionObserver(\n    element,\n    ([{ isIntersecting }]) => {\n      elementIsVisible.value = isIntersecting;\n    },\n    {\n      root: scrollTarget,\n      window,\n      threshold: 0\n    }\n  );\n  return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || /* @__PURE__ */ new Set();\n    listeners.add(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    listeners.delete(listener);\n    if (!listeners.size)\n      reset();\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = shallowRef(null);\n  const {\n    withCredentials = false\n  } = options;\n  const close = () => {\n    if (eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n    }\n  };\n  const es = new EventSource(url, { withCredentials });\n  eventSource.value = es;\n  es.onopen = () => {\n    status.value = \"OPEN\";\n    error.value = null;\n  };\n  es.onerror = (e) => {\n    status.value = \"CLOSED\";\n    error.value = e;\n  };\n  es.onmessage = (e) => {\n    event.value = null;\n    data.value = e.data;\n  };\n  for (const event_name of events) {\n    useEventListener(es, event_name, (e) => {\n      event.value = event_name;\n      data.value = e.data || null;\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    close\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = toRef(newIcon);\n  const applyIcon = (icon) => {\n    const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n    if (!elements || elements.length === 0) {\n      const link = document == null ? void 0 : document.createElement(\"link\");\n      if (link) {\n        link.rel = rel;\n        link.href = `${baseUrl}${icon}`;\n        link.type = `image/${icon.split(\".\").pop()}`;\n        document == null ? void 0 : document.head.append(link);\n      }\n      return;\n    }\n    elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(\n    favicon,\n    (i, o) => {\n      if (typeof i === \"string\" && i !== o)\n        applyIcon(i);\n    },\n    { immediate: true }\n  );\n  return favicon;\n}\n\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries([...headers.entries()]);\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback)\n        return { ...ctx, ...await callback(ctx) };\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      for (const callback of callbacks) {\n        if (callback)\n          ctx = { ...ctx, ...await callback(ctx) };\n      }\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = toValue(config.baseUrl);\n      const targetUrl = toValue(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = {\n          ...options,\n          ...args[0],\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        };\n      } else {\n        fetchOptions = {\n          ...fetchOptions,\n          ...args[0],\n          headers: {\n            ...headersToObject(fetchOptions.headers) || {},\n            ...headersToObject(args[0].headers) || {}\n          }\n        };\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = {\n        ...options,\n        ...args[1],\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      };\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = {\n    immediate: true,\n    refetch: false,\n    timeout: 0,\n    updateDataOnError: false\n  };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = { ...options, ...args[0] };\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = { ...options, ...args[1] };\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData || null);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort) {\n      controller == null ? void 0 : controller.abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = {\n        ...fetchOptions,\n        signal: controller.signal\n      };\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  let executeCounter = 0;\n  const execute = async (throwOnFailed = false) => {\n    var _a2;\n    abort();\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    executeCounter += 1;\n    const currentExecuteCounter = executeCounter;\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      const payload = toValue(config.payload);\n      if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n        config.payloadType = \"json\";\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: toValue(url),\n      options: {\n        ...defaultFetchOptions,\n        ...fetchOptions\n      },\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return new Promise((resolve, reject) => {\n      var _a3;\n      fetch(\n        context.url,\n        {\n          ...defaultFetchOptions,\n          ...context.options,\n          headers: {\n            ...headersToObject(defaultFetchOptions.headers),\n            ...headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)\n          }\n        }\n      ).then(async (fetchResponse) => {\n        response.value = fetchResponse;\n        statusCode.value = fetchResponse.status;\n        responseData = await fetchResponse[config.type]();\n        if (!fetchResponse.ok) {\n          data.value = initialData || null;\n          throw new Error(fetchResponse.statusText);\n        }\n        if (options.afterFetch) {\n          ({ data: responseData } = await options.afterFetch({\n            data: responseData,\n            response: fetchResponse\n          }));\n        }\n        data.value = responseData;\n        responseEvent.trigger(fetchResponse);\n        return resolve(fetchResponse);\n      }).catch(async (fetchError) => {\n        let errorData = fetchError.message || fetchError.name;\n        if (options.onFetchError) {\n          ({ error: errorData, data: responseData } = await options.onFetchError({\n            data: responseData,\n            error: fetchError,\n            response: response.value\n          }));\n        }\n        error.value = errorData;\n        if (options.updateDataOnError)\n          data.value = responseData;\n        errorEvent.trigger(fetchError);\n        if (throwOnFailed)\n          return reject(fetchError);\n        return resolve(null);\n      }).finally(() => {\n        if (currentExecuteCounter === executeCounter)\n          loading(false);\n        if (timer)\n          timer.stop();\n        finallyEvent.trigger(null);\n      });\n    });\n  };\n  const refetch = toRef(options.refetch);\n  watch(\n    [\n      refetch,\n      toRef(url)\n    ],\n    ([refetch2]) => refetch2 && execute(),\n    { deep: true }\n  );\n  const shell = {\n    isFinished,\n    statusCode,\n    response,\n    error,\n    data,\n    isFetching,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    // method\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    // type\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch(\n            [\n              refetch,\n              toRef(config.payload)\n            ],\n            ([refetch2]) => refetch2 && execute(),\n            { deep: true }\n          );\n        }\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    Promise.resolve().then(() => execute());\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  };\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n    return `${start}/${end}`;\n  return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\",\n  reset: false,\n  directory: false\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  const { on: onChange, trigger } = createEventHook();\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n      trigger(files.value);\n    };\n  }\n  const reset = () => {\n    files.value = null;\n    if (input)\n      input.value = \"\";\n  };\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      ...localOptions\n    };\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    input.webkitdirectory = _options.directory;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    if (_options.reset)\n      reset();\n    input.click();\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset,\n    onChange\n  };\n}\n\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = options;\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n    fileHandle.value = handle;\n    await updateFile();\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    data.value = void 0;\n    await updateFile();\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    const type = toValue(dataType);\n    if (type === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    else if (type === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    else if (type === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => toValue(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false, focusVisible = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", (event) => {\n    var _a, _b;\n    if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n      innerFocused.value = true;\n  });\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus();\n    }\n  });\n  watch(\n    targetElement,\n    () => {\n      focused.value = initialValue;\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n  const activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst eventHandlers = [\n  \"fullscreenchange\",\n  \"webkitfullscreenchange\",\n  \"webkitendfullscreen\",\n  \"mozfullscreenchange\",\n  \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n  const {\n    document = defaultDocument,\n    autoExit = false\n  } = options;\n  const targetRef = computed(() => {\n    var _a;\n    return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n  });\n  const isFullscreen = ref(false);\n  const requestMethod = computed(() => {\n    return [\n      \"requestFullscreen\",\n      \"webkitRequestFullscreen\",\n      \"webkitEnterFullscreen\",\n      \"webkitEnterFullScreen\",\n      \"webkitRequestFullScreen\",\n      \"mozRequestFullScreen\",\n      \"msRequestFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const exitMethod = computed(() => {\n    return [\n      \"exitFullscreen\",\n      \"webkitExitFullscreen\",\n      \"webkitExitFullScreen\",\n      \"webkitCancelFullScreen\",\n      \"mozCancelFullScreen\",\n      \"msExitFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenEnabled = computed(() => {\n    return [\n      \"fullScreen\",\n      \"webkitIsFullScreen\",\n      \"webkitDisplayingFullscreen\",\n      \"mozFullScreen\",\n      \"msFullscreenElement\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenElementMethod = [\n    \"fullscreenElement\",\n    \"webkitFullscreenElement\",\n    \"mozFullScreenElement\",\n    \"msFullscreenElement\"\n  ].find((m) => document && m in document);\n  const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n  const isCurrentElementFullScreen = () => {\n    if (fullscreenElementMethod)\n      return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n    return false;\n  };\n  const isElementFullScreen = () => {\n    if (fullscreenEnabled.value) {\n      if (document && document[fullscreenEnabled.value] != null) {\n        return document[fullscreenEnabled.value];\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n          return Boolean(target2[fullscreenEnabled.value]);\n        }\n      }\n    }\n    return false;\n  };\n  async function exit() {\n    if (!isSupported.value || !isFullscreen.value)\n      return;\n    if (exitMethod.value) {\n      if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n        await document[exitMethod.value]();\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n          await target2[exitMethod.value]();\n      }\n    }\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value || isFullscreen.value)\n      return;\n    if (isElementFullScreen())\n      await exit();\n    const target2 = targetRef.value;\n    if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n      await target2[requestMethod.value]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    await (isFullscreen.value ? exit() : enter());\n  }\n  const handlerCallback = () => {\n    const isElementFullScreenValue = isElementFullScreen();\n    if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n      isFullscreen.value = isElementFullScreenValue;\n  };\n  useEventListener(document, eventHandlers, handlerCallback, false);\n  useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      ...gamepad,\n      id: gamepad.id,\n      hapticActuators,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (let i = 0; i < _gamepads.length; ++i) {\n      const gamepad = _gamepads[i];\n      if (gamepad) {\n        const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n        if (index > -1)\n          gamepads.value[index] = stateFromGamepad(gamepad);\n      }\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    if (_gamepads) {\n      for (let i = 0; i < _gamepads.length; ++i) {\n        const gamepad = _gamepads[i];\n        if (gamepad)\n          onGamepadConnected(gamepad);\n      }\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = shallowRef(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Number.POSITIVE_INFINITY,\n    longitude: Number.POSITIVE_INFINITY,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(\n        updatePosition,\n        (err) => error.value = err,\n        {\n          enableHighAccuracy,\n          maximumAge,\n          timeout\n        }\n      );\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const reset = () => {\n    idle.value = false;\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  };\n  const onEvent = createFilterWrapper(\n    eventFilter,\n    () => {\n      lastActive.value = timestamp();\n      reset();\n    }\n  );\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n    reset();\n  }\n  return {\n    idle,\n    lastActive,\n    reset\n  };\n}\n\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    if (clazz)\n      img.className = clazz;\n    if (loading)\n      img.loading = loading;\n    if (crossorigin)\n      img.crossOrigin = crossorigin;\n    if (referrerPolicy)\n      img.referrerPolicy = referrerPolicy;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n  const state = useAsyncState(\n    () => loadImage(toValue(options)),\n    void 0,\n    {\n      resetOnExecute: true,\n      ...asyncStateOptions\n    }\n  );\n  watch(\n    () => toValue(options),\n    () => state.execute(asyncStateOptions.delay),\n    { deep: true }\n  );\n  return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\",\n    window = defaultWindow\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c;\n    if (!window)\n      return;\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = toValue(_y)) != null ? _a : y.value,\n      left: (_b = toValue(_x)) != null ? _b : x.value,\n      behavior: toValue(behavior)\n    });\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const setArrivedState = (target) => {\n    var _a;\n    if (!window)\n      return;\n    const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n    const { display, flexDirection } = getComputedStyle(el);\n    const scrollLeft = el.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalX.value;\n    const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n    const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"row-reverse\") {\n      arrivedState.left = right;\n      arrivedState.right = left;\n    } else {\n      arrivedState.left = left;\n      arrivedState.right = right;\n    }\n    internalX.value = scrollLeft;\n    let scrollTop = el.scrollTop;\n    if (target === window.document && !scrollTop)\n      scrollTop = window.document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n    const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"column-reverse\") {\n      arrivedState.top = bottom;\n      arrivedState.bottom = top;\n    } else {\n      arrivedState.top = top;\n      arrivedState.bottom = bottom;\n    }\n    internalY.value = scrollTop;\n  };\n  const onScrollHandler = (e) => {\n    var _a;\n    if (!window)\n      return;\n    const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n    setArrivedState(eventTarget);\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(\n    element,\n    \"scroll\",\n    throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n    eventListenerOptions\n  );\n  tryOnMounted(() => {\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    setArrivedState(_element);\n  });\n  useEventListener(\n    element,\n    \"scrollend\",\n    onScrollEnd,\n    eventListenerOptions\n  );\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions,\n    measure() {\n      const _element = toValue(element);\n      if (window && _element)\n        setArrivedState(_element);\n    }\n  };\n}\n\nfunction resolveElement(el) {\n  if (typeof Window !== \"undefined\" && el instanceof Window)\n    return el.document.documentElement;\n  if (typeof Document !== \"undefined\" && el instanceof Document)\n    return el.documentElement;\n  return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a;\n  const {\n    direction = \"bottom\",\n    interval = 100\n  } = options;\n  const state = reactive(useScroll(\n    element,\n    {\n      ...options,\n      offset: {\n        [direction]: (_a = options.distance) != null ? _a : 0,\n        ...options.offset\n      }\n    }\n  ));\n  const promise = ref();\n  const isLoading = computed(() => !!promise.value);\n  const observedElement = computed(() => {\n    return resolveElement(toValue(element));\n  });\n  const isElementVisible = useElementVisibility(observedElement);\n  function checkAndLoad() {\n    state.measure();\n    if (!observedElement.value || !isElementVisible.value)\n      return;\n    const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n    const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n    if (state.arrivedState[direction] || isNarrower) {\n      if (!promise.value) {\n        promise.value = Promise.all([\n          onLoadMore(state),\n          new Promise((resolve) => setTimeout(resolve, interval))\n        ]).finally(() => {\n          promise.value = null;\n          nextTick(() => checkAndLoad());\n        });\n      }\n    }\n  }\n  watch(\n    () => [state.arrivedState[direction], isElementVisible.value],\n    checkAndLoad,\n    { immediate: true }\n  );\n  return {\n    isLoading\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(/* @__PURE__ */ new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = /* @__PURE__ */ new Set();\n  const usedKeys = /* @__PURE__ */ new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(\n    refs,\n    {\n      get(target2, prop, rec) {\n        if (typeof prop !== \"string\")\n          return Reflect.get(target2, prop, rec);\n        prop = prop.toLowerCase();\n        if (prop in aliasMap)\n          prop = aliasMap[prop];\n        if (!(prop in refs)) {\n          if (/[+_-]/.test(prop)) {\n            const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n            refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n          } else {\n            refs[prop] = ref(false);\n          }\n        }\n        const r = Reflect.get(target2, prop, rec);\n        return useReactive ? toValue(r) : r;\n      }\n    }\n  );\n  return proxy;\n}\n\nfunction usingElRef(source, cb) {\n  if (toValue(source))\n    cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options\n  };\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = typeof track === \"number\" ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = typeof track === \"number\" ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = toValue(target);\n    if (!el)\n      return;\n    const src = toValue(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (typeof src === \"string\")\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch([target, volume], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.volume = volume.value;\n  });\n  watch([target, muted], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.muted = muted.value;\n  });\n  watch([target, rate], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.playbackRate = rate.value;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = toValue(options.tracks);\n    const el = toValue(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n    waiting.value = true;\n    ignorePlayingUpdates(() => playing.value = false);\n  });\n  useEventListener(target, \"loadeddata\", () => waiting.value = false);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n    ignorePlayingUpdates(() => playing.value = true);\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    // Volume\n    volume,\n    muted,\n    // Tracks\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    // Picture in Picture\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    // Events\n    onSourceError: sourceErrorEvent.on\n  };\n}\n\nfunction getMapVue2Compat() {\n  const data = reactive({});\n  return {\n    get: (key) => data[key],\n    set: (key, value) => set(data, key, value),\n    has: (key) => hasOwn(data, key),\n    delete: (key) => del(data, key),\n    clear: () => {\n      Object.keys(data).forEach((key) => {\n        del(data, key);\n      });\n    }\n  };\n}\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return reactive(options.cache);\n    if (isVue2)\n      return getMapVue2Compat();\n    return reactive(/* @__PURE__ */ new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n  page: (event) => [event.pageX, event.pageY],\n  client: (event) => [event.clientX, event.clientY],\n  screen: (event) => [event.screenX, event.screenY],\n  movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    target = window,\n    scroll = true,\n    eventFilter\n  } = options;\n  let _prevMouseEvent = null;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n  const mouseHandler = (event) => {\n    const result = extractor(event);\n    _prevMouseEvent = event;\n    if (result) {\n      [x.value, y.value] = result;\n      sourceType.value = \"mouse\";\n    }\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const result = extractor(event.touches[0]);\n      if (result) {\n        [x.value, y.value] = result;\n        sourceType.value = \"touch\";\n      }\n    }\n  };\n  const scrollHandler = () => {\n    if (!_prevMouseEvent || !window)\n      return;\n    const pos = extractor(_prevMouseEvent);\n    if (_prevMouseEvent instanceof MouseEvent && pos) {\n      x.value = pos[0] + window.scrollX;\n      y.value = pos[1] + window.scrollY;\n    }\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n  const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n  const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n    if (touch && type !== \"movement\") {\n      useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n      if (resetOnTouchEnds)\n        useEventListener(target, \"touchend\", reset, listenerOptions);\n    }\n    if (scroll && type === \"page\")\n      useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const type = options.type || \"page\";\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch(\n      [targetRef, x, y],\n      () => {\n        const el = unrefElement(targetRef);\n        if (!el)\n          return;\n        const {\n          left,\n          top,\n          width,\n          height\n        } = el.getBoundingClientRect();\n        elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n        elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n        elementHeight.value = height;\n        elementWidth.value = width;\n        const elX = x.value - elementPositionX.value;\n        const elY = y.value - elementPositionY.value;\n        isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n        if (handleOutside || !isOutside.value) {\n          elementX.value = elX;\n          elementY.value = elY;\n        }\n      },\n      { immediate: true }\n    );\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    capture = false,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n    useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n    useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n    useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n}\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported,\n    isOnline,\n    saveData,\n    offlineAt,\n    onlineAt,\n    downlink,\n    downlinkMax,\n    effectiveType,\n    rtt,\n    type\n  };\n}\n\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(/* @__PURE__ */ new Date());\n  const update = () => now.value = /* @__PURE__ */ new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return {\n      now,\n      ...controls\n    };\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(\n    () => toValue(object),\n    (newObject) => {\n      release();\n      if (newObject)\n        url.value = URL.createObjectURL(newObject);\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (typeof value === \"function\" || isReadonly(value))\n    return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, toValue(min), toValue(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, toValue(min), toValue(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Number.POSITIVE_INFINITY,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n  const pageCount = computed(() => Math.max(\n    1,\n    Math.ceil(toValue(total) / toValue(currentPageSize))\n  ));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page))\n    syncRef(page, currentPage);\n  if (isRef(pageSize))\n    syncRef(pageSize, currentPageSize);\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n      return \"deviceOrientation\";\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = -orientation.beta / 90;\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = orientation.gamma / 90;\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n  const parentElement = shallowRef();\n  const update = () => {\n    const el = unrefElement(element);\n    if (el)\n      parentElement.value = el.parentElement;\n  };\n  tryOnMounted(update);\n  watch(() => toValue(element), update);\n  return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n  const {\n    window = defaultWindow,\n    immediate = true,\n    ...performanceOptions\n  } = options;\n  const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n  let observer;\n  const stop = () => {\n    observer == null ? void 0 : observer.disconnect();\n  };\n  const start = () => {\n    if (isSupported.value) {\n      stop();\n      observer = new PerformanceObserver(callback);\n      observer.observe(performanceOptions);\n    }\n  };\n  tryOnScopeDispose(stop);\n  if (immediate)\n    start();\n  return {\n    isSupported,\n    start,\n    stop\n  };\n}\n\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n  }\n  return {\n    ...toRefs(state),\n    isInside\n  };\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument, pointerLockOptions } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e, options2) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = toRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return distanceY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n    })\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(\n    toRef(value),\n    (_, oldValue) => {\n      previous.value = oldValue;\n    },\n    { flush: \"sync\" }\n  );\n  return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (!isSupported.value)\n      return Promise.reject(new Error(\"Not supported\"));\n    return screenOrientation.lock(type);\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value)\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = toValue(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  let initialOverflow;\n  watch(toRef(element), (el) => {\n    const target = resolveElement(toValue(el));\n    if (target) {\n      const ele = target;\n      if (!elInitialOverflow.get(ele))\n        elInitialOverflow.set(ele, initialOverflow);\n      if (isLocked.value)\n        ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(\n        el,\n        \"touchmove\",\n        (e) => {\n          preventDefault(e);\n        },\n        { passive: false }\n      );\n    }\n    el.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    var _a;\n    const el = resolveElement(toValue(element));\n    if (!el || !isLocked.value)\n      return;\n    isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n    el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n    elInitialOverflow.delete(el);\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else\n        unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = {\n        ...toValue(shareOptions),\n        ...toValue(overrideOptions)\n      };\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...toValue(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(toValue(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = toRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = toValue(lang);\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const transcript = Array.from(event.results).map((result2) => {\n        isFinal.value = result2.isFinal;\n        return result2[0];\n      }).map((result2) => result2.transcript).join(\"\");\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = toValue(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = toRef(text || \"\");\n  const lang = toRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = toValue(lang);\n    utterance2.voice = toValue(options.voice) || null;\n    utterance2.pitch = toValue(pitch);\n    utterance2.rate = toValue(rate);\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    utterance && synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = toValue(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (typeof mergeDefaults === \"function\")\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = { ...rawInit, ...value };\n        else\n          data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n  if (storage) {\n    watchWithFilter(\n      data,\n      async () => {\n        try {\n          if (data.value == null)\n            await storage.removeItem(key);\n          else\n            await storage.setItem(key, await serializer.write(data.value));\n        } catch (e) {\n          onError(e);\n        }\n      },\n      {\n        flush,\n        deep,\n        eventFilter\n      }\n    );\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(\n      cssRef,\n      (value) => {\n        el.textContent = value;\n      },\n      { immediate: true }\n    );\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return diffY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      if (listenerOptions.capture && !listenerOptions.passive)\n        e.preventDefault();\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(\n      document.querySelector(selector),\n      () => dir.value = getValue(),\n      { attributes: true }\n    );\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  const textareaScrollHeight = ref(1);\n  function triggerResize() {\n    var _a, _b;\n    if (!textarea.value)\n      return;\n    let height = \"\";\n    textarea.value.style.height = \"1px\";\n    textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n    if (options == null ? void 0 : options.styleTarget)\n      toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n    else\n      height = `${textareaScrollHeight.value}px`;\n    textarea.value.style.height = height;\n    (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n  }\n  watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n  useResizeObserver(textarea, () => triggerResize());\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n  return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n  const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n  if (exposeControls) {\n    return {\n      timeAgo,\n      ...controls\n    };\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval, { immediate: false });\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return {\n      timestamp: ts,\n      ...controls\n    };\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b;\n  const {\n    document = defaultDocument\n  } = options;\n  const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n  const isReadonly = newTitle && typeof newTitle === \"function\";\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n  }\n  watch(\n    title,\n    (t, o) => {\n      if (t !== o && document)\n        document.title = format(typeof t === \"string\" ? t : \"\");\n    },\n    { immediate: true }\n  );\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver(\n      (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n      () => {\n        if (document && document.title !== title.value)\n          title.value = format(document.title);\n      },\n      { childList: true }\n    );\n  }\n  return title;\n}\n\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n  return a + alpha * (b - a);\n}\nfunction toVec(t) {\n  return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n  var _a, _b;\n  const fromVal = toValue(from);\n  const toVal = toValue(to);\n  const v1 = toVec(fromVal);\n  const v2 = toVec(toVal);\n  const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n  const startedAt = Date.now();\n  const endAt = Date.now() + duration;\n  const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n  const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n  return new Promise((resolve) => {\n    source.value = fromVal;\n    const tick = () => {\n      var _a2;\n      if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n        resolve();\n        return;\n      }\n      const now = Date.now();\n      const alpha = ease((now - startedAt) / duration);\n      const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n      if (Array.isArray(source.value))\n        source.value = arr.map((n, i) => {\n          var _a3, _b2;\n          return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n        });\n      else if (typeof source.value === \"number\")\n        source.value = arr[0];\n      if (now < endAt) {\n        requestAnimationFrame(tick);\n      } else {\n        source.value = toVal;\n        resolve();\n      }\n    };\n    tick();\n  });\n}\nfunction useTransition(source, options = {}) {\n  let currentId = 0;\n  const sourceVal = () => {\n    const v = toValue(source);\n    return typeof v === \"number\" ? v : v.map(toValue);\n  };\n  const outputRef = ref(sourceVal());\n  watch(sourceVal, async (to) => {\n    var _a, _b;\n    if (toValue(options.disabled))\n      return;\n    const id = ++currentId;\n    if (options.delay)\n      await promiseTimeout(toValue(options.delay));\n    if (id !== currentId)\n      return;\n    const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n    (_a = options.onStarted) == null ? void 0 : _a.call(options);\n    await executeTransition(outputRef, outputRef.value, toVal, {\n      ...options,\n      abort: () => {\n        var _a2;\n        return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n      }\n    });\n    (_b = options.onFinished) == null ? void 0 : _b.call(options);\n  }, { deep: true });\n  watch(() => toValue(options.disabled), (disabled) => {\n    if (disabled) {\n      currentId++;\n      outputRef.value = sourceVal();\n    }\n  });\n  tryOnScopeDispose(() => {\n    currentId++;\n  });\n  return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(\n    state,\n    () => {\n      const params = new URLSearchParams(\"\");\n      Object.keys(state).forEach((key) => {\n        const mapEntry = state[key];\n        if (Array.isArray(mapEntry))\n          mapEntry.forEach((value) => params.append(key, value));\n        else if (removeNullishValues && mapEntry == null)\n          params.delete(key);\n        else if (removeFalsyValues && !mapEntry)\n          params.delete(key);\n        else\n          params.set(key, mapEntry);\n      });\n      write(params);\n    },\n    { deep: true }\n  );\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(\n      window.history.state,\n      window.document.title,\n      window.location.pathname + constructQuery(params)\n    );\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const constraints = ref(options.constraints);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(type) {\n    switch (type) {\n      case \"video\": {\n        if (constraints.value)\n          return constraints.value.video || false;\n        break;\n      }\n      case \"audio\": {\n        if (constraints.value)\n          return constraints.value.audio || false;\n        break;\n      }\n    }\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(\"video\"),\n      audio: getDeviceOptions(\"audio\")\n    });\n    return stream.value;\n  }\n  function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  watch(\n    constraints,\n    () => {\n      if (autoSwitch.value && stream.value)\n        restart();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    constraints,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c, _d, _e;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue,\n    shouldEmit\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    if (isVue2) {\n      const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n      key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n      if (!eventName)\n        event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n    } else {\n      key = \"modelValue\";\n    }\n  }\n  event = event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  const triggerEmit = (value) => {\n    if (shouldEmit) {\n      if (shouldEmit(value))\n        _emit(event, value);\n    } else {\n      _emit(event, value);\n    }\n  };\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    let isUpdating = false;\n    watch(\n      () => props[key],\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true;\n          proxy.value = cloneFn(v);\n          nextTick(() => isUpdating = false);\n        }\n      }\n    );\n    watch(\n      proxy,\n      (v) => {\n        if (!isUpdating && (v !== props[key] || deep))\n          triggerEmit(v);\n      },\n      { deep }\n    );\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        triggerEmit(value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props) {\n    ret[key] = useVModel(\n      props,\n      key,\n      emit,\n      options\n    );\n  }\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = toRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(\n      vibrate,\n      interval,\n      {\n        immediate: false,\n        immediateCallback: false\n      }\n    );\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nfunction useWakeLock(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    if (document && document.visibilityState === \"visible\")\n      wakeLock = await navigator.wakeLock.request(\"screen\");\n    isActive.value = !wakeLock.released;\n  }\n  if (document)\n    useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n  async function request(type) {\n    if (!isSupported.value)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    await wakeLock.release();\n    isActive.value = !wakeLock.released;\n    wakeLock = null;\n  }\n  return {\n    isSupported,\n    isActive,\n    request,\n    release\n  };\n}\n\nfunction useWebNotification(options = {}) {\n  const {\n    window = defaultWindow,\n    requestPermissions: _requestForPermissions = true\n  } = options;\n  const defaultWebNotificationOptions = options;\n  const isSupported = useSupported(() => !!window && \"Notification\" in window);\n  const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n  const notification = ref(null);\n  const ensurePermissions = async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionGranted.value && Notification.permission !== \"denied\") {\n      const result = await Notification.requestPermission();\n      if (result === \"granted\")\n        permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  };\n  const { on: onClick, trigger: clickTrigger } = createEventHook();\n  const { on: onShow, trigger: showTrigger } = createEventHook();\n  const { on: onError, trigger: errorTrigger } = createEventHook();\n  const { on: onClose, trigger: closeTrigger } = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value || !permissionGranted.value)\n      return;\n    const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n    notification.value = new Notification(options2.title || \"\", options2);\n    notification.value.onclick = clickTrigger;\n    notification.value.onshow = showTrigger;\n    notification.value.onerror = errorTrigger;\n    notification.value.onclose = closeTrigger;\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  if (_requestForPermissions)\n    tryOnMounted(ensurePermissions);\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    ensurePermissions,\n    permissionGranted,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = toRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const close = (code = 1e3, reason) => {\n    if (!isClient || !wsRef.value)\n      return;\n    explicitlyClosed = true;\n    resetHeartbeat();\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      wsRef.value = void 0;\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === message)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(\n      () => {\n        send(message, false);\n        if (pongTimeoutWait != null)\n          return;\n        pongTimeoutWait = setTimeout(() => {\n          close();\n          explicitlyClosed = false;\n        }, pongTimeout);\n      },\n      interval,\n      { immediate: false }\n    );\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    if (isClient)\n      useEventListener(\"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    if (!isClient && !isWorker)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = (...args) => {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(...args);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (typeof arg0 === \"string\")\n      worker.value = new Worker(arg0, workerOptions);\n    else if (typeof arg0 === \"function\")\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nfunction jobRunner(userFunc) {\n  return (e) => {\n    const userFuncArgs = e.data[0];\n    return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n      postMessage([\"SUCCESS\", result]);\n    }).catch((error) => {\n      postMessage([\"ERROR\", error]);\n    });\n  };\n}\n\nfunction depsParser(deps) {\n  if (deps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n  const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n  const {\n    dependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      e.preventDefault();\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(\n        () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n        timeout\n      );\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    promise.value = {\n      resolve,\n      reject\n    };\n    worker.value && worker.value.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\n        \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n      );\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n}\n\nfunction useWindowFocus(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n  const { window = defaultWindow, behavior = \"auto\" } = options;\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const internalX = ref(window.scrollX);\n  const internalY = ref(window.scrollY);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo({ left: x2, behavior });\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo({ top: y2, behavior });\n    }\n  });\n  useEventListener(\n    window,\n    \"scroll\",\n    () => {\n      internalX.value = window.scrollX;\n      internalY.value = window.scrollY;\n    },\n    {\n      capture: false,\n      passive: true\n    }\n  );\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Number.POSITIVE_INFINITY,\n    initialHeight = Number.POSITIVE_INFINITY,\n    listenOrientation = true,\n    includeScrollbar = true\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation) {\n    const matches = useMediaQuery(\"(orientation: portrait)\");\n    watch(matches, () => update());\n  }\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n      continue;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [':popover-open', ':modal'].some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isTopLayer(currentNode)) {\n      return null;\n    }\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (_ref) {\n  let {\n    reference,\n    floating,\n    strategy\n  } = _ref;\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...(await getDimensionsFn(floating))\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n","import { arrow as arrow$1, computePosition } from '@floating-ui/dom';\nexport { autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/dom';\nimport { unref, computed, ref, shallowRef, watch, getCurrentScope, onScopeDispose, shallowReadonly } from 'vue-demi';\n\nfunction unwrapElement(element) {\n  var _$el;\n  return (_$el = element == null ? void 0 : element.$el) != null ? _$el : element;\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered to the reference element.\n * @param options The arrow options.\n * @see https://floating-ui.com/docs/arrow\n */\nfunction arrow(options) {\n  return {\n    name: 'arrow',\n    options,\n    fn(args) {\n      const element = unwrapElement(unref(options.element));\n      if (element == null) {\n        return {};\n      }\n      return arrow$1({\n        element,\n        padding: options.padding\n      }).fn(args);\n    }\n  };\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element next to a reference element when it is given a certain CSS positioning strategy.\n * @param reference The reference template ref.\n * @param floating The floating template ref.\n * @param options The floating options.\n * @see https://floating-ui.com/docs/vue\n */\nfunction useFloating(reference, floating, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const whileElementsMountedOption = options.whileElementsMounted;\n  const openOption = computed(() => {\n    var _unref;\n    return (_unref = unref(options.open)) != null ? _unref : true;\n  });\n  const middlewareOption = computed(() => unref(options.middleware));\n  const placementOption = computed(() => {\n    var _unref2;\n    return (_unref2 = unref(options.placement)) != null ? _unref2 : 'bottom';\n  });\n  const strategyOption = computed(() => {\n    var _unref3;\n    return (_unref3 = unref(options.strategy)) != null ? _unref3 : 'absolute';\n  });\n  const transformOption = computed(() => {\n    var _unref4;\n    return (_unref4 = unref(options.transform)) != null ? _unref4 : true;\n  });\n  const referenceElement = computed(() => unwrapElement(reference.value));\n  const floatingElement = computed(() => unwrapElement(floating.value));\n  const x = ref(0);\n  const y = ref(0);\n  const strategy = ref(strategyOption.value);\n  const placement = ref(placementOption.value);\n  const middlewareData = shallowRef({});\n  const isPositioned = ref(false);\n  const floatingStyles = computed(() => {\n    const initialStyles = {\n      position: strategy.value,\n      left: '0',\n      top: '0'\n    };\n    if (!floatingElement.value) {\n      return initialStyles;\n    }\n    const xVal = roundByDPR(floatingElement.value, x.value);\n    const yVal = roundByDPR(floatingElement.value, y.value);\n    if (transformOption.value) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + xVal + \"px, \" + yVal + \"px)\",\n        ...(getDPR(floatingElement.value) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy.value,\n      left: xVal + \"px\",\n      top: yVal + \"px\"\n    };\n  });\n  let whileElementsMountedCleanup;\n  function update() {\n    if (referenceElement.value == null || floatingElement.value == null) {\n      return;\n    }\n    computePosition(referenceElement.value, floatingElement.value, {\n      middleware: middlewareOption.value,\n      placement: placementOption.value,\n      strategy: strategyOption.value\n    }).then(position => {\n      x.value = position.x;\n      y.value = position.y;\n      strategy.value = position.strategy;\n      placement.value = position.placement;\n      middlewareData.value = position.middlewareData;\n      isPositioned.value = true;\n    });\n  }\n  function cleanup() {\n    if (typeof whileElementsMountedCleanup === 'function') {\n      whileElementsMountedCleanup();\n      whileElementsMountedCleanup = undefined;\n    }\n  }\n  function attach() {\n    cleanup();\n    if (whileElementsMountedOption === undefined) {\n      update();\n      return;\n    }\n    if (referenceElement.value != null && floatingElement.value != null) {\n      whileElementsMountedCleanup = whileElementsMountedOption(referenceElement.value, floatingElement.value, update);\n      return;\n    }\n  }\n  function reset() {\n    if (!openOption.value) {\n      isPositioned.value = false;\n    }\n  }\n  watch([middlewareOption, placementOption, strategyOption], update, {\n    flush: 'sync'\n  });\n  watch([referenceElement, floatingElement], attach, {\n    flush: 'sync'\n  });\n  watch(openOption, reset, {\n    flush: 'sync'\n  });\n  if (getCurrentScope()) {\n    onScopeDispose(cleanup);\n  }\n  return {\n    x: shallowReadonly(x),\n    y: shallowReadonly(y),\n    strategy: shallowReadonly(strategy),\n    placement: shallowReadonly(placement),\n    middlewareData: shallowReadonly(middlewareData),\n    isPositioned: shallowReadonly(isPositioned),\n    floatingStyles,\n    update\n  };\n}\n\nexport { arrow, useFloating };\n","import { defineComponent, ref, computed, provide, openBlock, createElementBlock, renderSlot, useAttrs, inject, watch, mergeProps, unref, createElementVNode, normalizeClass, createVNode, Transition, withCtx, createCommentVNode, pushScopeId, popScopeId, createBlock, resolveDynamicComponent, useSlots, toDisplayString, withModifiers, withDirectives, vModelCheckbox, Fragment, createTextVNode, renderList, normalizeStyle, useCssVars, withKeys, vShow, vModelText, createSlots, nextTick, normalizeProps, guardReactiveProps, toHandlers, toRef, watchEffect, reactive, onMounted, onUnmounted, Teleport, onBeforeUnmount, vModelDynamic, createStaticVNode, isRef, vModelRadio, TransitionGroup } from \"vue\";\nimport { ChevronDownIcon, CloseIcon, CloseCircleFillIcon, LessIcon, CheckIcon, SpinnerIcon, ChevronUpIcon, HomeFillIcon, ChevronLeftIcon, ChevronRightIcon, CalendarIcon, EditIcon, BurgerIcon, FirstPageIcon, LastPageIcon, NoFullScreenIcon, FullScreenIcon } from \"@frontiers/brink-icons\";\nimport { useBreakpoints as useBreakpoints$1, useMediaQuery, onClickOutside, useFocusWithin, unrefElement, tryOnScopeDispose, useScrollLock, useElementSize, useDebounceFn, useTimeoutFn } from \"@vueuse/core\";\nimport { useFloating, offset, flip, size, shift, limitShift, arrow, autoUpdate, autoPlacement } from \"@floating-ui/vue\";\nimport { createFocusTrap } from \"focus-trap\";\nconst main = \"\";\nconst ACCORDION_STATE_KEY = Symbol.for(\"b-accordion-state\");\nconst _hoisted_1$1f = { class: \"b-accordion\" };\nconst _sfc_main$1p = /* @__PURE__ */ defineComponent({\n  __name: \"b-accordion\",\n  props: {\n    allowMultiple: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const activeItemIds = ref([]);\n    const setActiveItem = (id) => {\n      if (props.allowMultiple) {\n        toggleMultiple(id);\n      } else {\n        setSingle(id);\n      }\n    };\n    const toggleMultiple = (id) => {\n      if (activeItemIds.value.includes(id)) {\n        removeItem(id);\n      } else {\n        addItem(id);\n      }\n    };\n    const removeItem = (id) => {\n      activeItemIds.value = activeItemIds.value.filter((itemId) => itemId !== id);\n    };\n    const addItem = (id) => {\n      activeItemIds.value = [...activeItemIds.value, id];\n    };\n    const setSingle = (id) => {\n      activeItemIds.value = [id];\n    };\n    const accordionState = computed(() => ({\n      allowMultiple: props.allowMultiple,\n      activeItemIds: activeItemIds.value,\n      setActiveItem\n    }));\n    provide(ACCORDION_STATE_KEY, accordionState);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", _hoisted_1$1f, [\n        renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n      ]);\n    };\n  }\n});\nconst bAccordion_vue_vue_type_style_index_0_scoped_22cf4913_lang = \"\";\nconst _export_sfc = (sfc, props) => {\n  const target = sfc.__vccOpts || sfc;\n  for (const [key, val] of props) {\n    target[key] = val;\n  }\n  return target;\n};\nconst BAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$1p, [[\"__scopeId\", \"data-v-22cf4913\"]]);\nconst BREAKPOINTS_MAP = {\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1920\n};\nconst useBreakpoints = () => {\n  const breakpoints = useBreakpoints$1(BREAKPOINTS_MAP);\n  return {\n    \"between\": breakpoints.between,\n    \"greater\": breakpoints.greater,\n    \"greaterOrEqual\": breakpoints.greaterOrEqual,\n    \"smaller\": breakpoints.smaller,\n    \"smallerOrEqual\": breakpoints.smallerOrEqual,\n    \"sm\": breakpoints.sm,\n    \"md\": breakpoints.md,\n    \"lg\": breakpoints.lg,\n    \"xl\": breakpoints.xl,\n    \"2xl\": breakpoints[\"2xl\"]\n  };\n};\nconst isBrowser = () => typeof window !== \"undefined\";\nconst useHasMouse = () => {\n  return isBrowser() ? useMediaQuery(\"(pointer: fine)\") : ref(true);\n};\nconst useSafeAttrs = (attrs) => computed(() => {\n  if (Array.isArray(attrs) || typeof attrs !== \"object\" || attrs == null) {\n    return {};\n  }\n  const { class: _, style: __, ...rest } = attrs;\n  return {\n    ...rest\n  };\n});\nconst removeCombiningDiacriticalMarks = typeof String.prototype.normalize === \"function\" ? (string) => string.normalize(\"NFD\").replaceAll(/[\\u0300-\\u036F]/g, \"\") : (string) => string;\nfunction normalizeString(string) {\n  string = (string == null ? void 0 : string.trim().toLowerCase()) ?? \"\";\n  return removeCombiningDiacriticalMarks(string);\n}\nfunction generateUniqueId() {\n  const uniqueId = Date.now().toString(36) + Math.random().toString(36).slice(2);\n  return uniqueId;\n}\nfunction capitalizeFirstLetter(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction isDigitOnly(str) {\n  const anyDigitRegex = /^\\d+$/;\n  return anyDigitRegex.test(str);\n}\nconst _withScopeId$8 = (n) => (pushScopeId(\"data-v-39e115dd\"), n = n(), popScopeId(), n);\nconst _hoisted_1$1e = /* @__PURE__ */ _withScopeId$8(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-accordion-item__divider\" }, null, -1));\nconst _hoisted_2$X = { class: \"b-accordion-item__icon\" };\nconst _hoisted_3$D = { class: \"b-accordion-item__content\" };\nconst _hoisted_4$r = { key: 0 };\nconst _sfc_main$1o = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-accordion-item\",\n  emits: [\"toggle\"],\n  setup(__props, { emit }) {\n    const breakpoints = useBreakpoints();\n    const greaterOrEqualThanMedium = breakpoints.greaterOrEqual(\"md\");\n    const isExpanded = ref(false);\n    const itemId = generateUniqueId();\n    const attrs = useAttrs();\n    const accordionAttrs = useSafeAttrs(attrs);\n    const accordionState = inject(ACCORDION_STATE_KEY);\n    const toggle = () => {\n      if (!(accordionState == null ? void 0 : accordionState.value.allowMultiple)) {\n        toggleSingle();\n      } else {\n        toggleMultiple();\n      }\n    };\n    const toggleSingle = () => {\n      isExpanded.value = !isExpanded.value;\n      accordionState == null ? void 0 : accordionState.value.setActiveItem(isExpanded.value ? itemId : \"\");\n      if (isExpanded.value) {\n        emitToggleEvent(itemId, isExpanded.value);\n      }\n    };\n    const toggleMultiple = () => {\n      accordionState == null ? void 0 : accordionState.value.setActiveItem(itemId);\n      emitToggleEvent(itemId, isExpanded.value);\n    };\n    const emitToggleEvent = (toggledItemId, expanded) => {\n      emit(\"toggle\", toggledItemId, expanded);\n    };\n    const afterEnter = (el) => {\n      const element = el;\n      element.style.height = \"auto\";\n    };\n    const enter = (el) => {\n      const element = el;\n      const height = getComputedStyle(element).height;\n      element.style.setProperty(\"height\", \"0px\");\n      getComputedStyle(element).height;\n      requestAnimationFrame(() => {\n        element.style.height = height;\n      });\n    };\n    const leave = (el) => {\n      const element = el;\n      const height = getComputedStyle(element).height;\n      element.style.height = height;\n      getComputedStyle(element).height;\n      requestAnimationFrame(() => {\n        element.style.setProperty(\"height\", \"0px\");\n      });\n    };\n    watch(\n      () => accordionState == null ? void 0 : accordionState.value.activeItemIds,\n      (activeIds) => {\n        if (!activeIds) {\n          return;\n        }\n        isExpanded.value = activeIds.includes(itemId);\n      }\n    );\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"li\", mergeProps({ class: \"b-accordion-item\" }, unref(accordionAttrs), {\n        class: { \"b-accordion-item--expanded\": isExpanded.value }\n      }), [\n        _hoisted_1$1e,\n        createElementVNode(\"button\", {\n          class: \"b-accordion-item__header\",\n          onClick: toggle\n        }, [\n          renderSlot(_ctx.$slots, \"header\", {}, void 0, true),\n          createElementVNode(\"div\", _hoisted_2$X, [\n            renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n              createElementVNode(\"div\", {\n                class: normalizeClass([\"b-accordion-item__chevron\", {\n                  \"b-accordion-item__chevron--opened\": isExpanded.value\n                }])\n              }, [\n                createVNode(unref(ChevronDownIcon), {\n                  size: unref(greaterOrEqualThanMedium) ? \"lg\" : \"md\"\n                }, null, 8, [\"size\"])\n              ], 2)\n            ], true)\n          ])\n        ]),\n        createElementVNode(\"div\", _hoisted_3$D, [\n          createVNode(Transition, {\n            name: \"b-accordion-item-transition\",\n            onEnter: enter,\n            onAfterEnter: afterEnter,\n            onLeave: leave\n          }, {\n            default: withCtx(() => [\n              isExpanded.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4$r, [\n                renderSlot(_ctx.$slots, \"content\", {}, void 0, true)\n              ])) : createCommentVNode(\"\", true)\n            ]),\n            _: 3\n          })\n        ])\n      ], 16);\n    };\n  }\n});\nconst bAccordionItem_vue_vue_type_style_index_0_scoped_39e115dd_lang = \"\";\nconst BAccordionItem = /* @__PURE__ */ _export_sfc(_sfc_main$1o, [[\"__scopeId\", \"data-v-39e115dd\"]]);\nconst SIZE_MAP = {\n  \"sm\": \"12px\",\n  \"md\": \"16px\",\n  \"lg\": \"24px\",\n  \"xl\": \"32px\",\n  \"2xl\": \"48px\"\n};\nconst _hoisted_1$1d = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  fill: \"none\",\n  viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$W = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#282828\",\n  d: \"M5 5h14v14H5z\"\n}, null, -1);\nconst _hoisted_3$C = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#F2575D\",\n  d: \"M12 1.44a10.56 10.56 0 1 0 0 21.12 10.56 10.56 0 0 0 0-21.12Zm5.09 14.294a.479.479 0 0 1 0 .68l-.679.679a.48.48 0 0 1-.677 0L12 13.358l-3.734 3.735a.48.48 0 0 1-.677 0l-.68-.68a.48.48 0 0 1 0-.679L10.643 12 6.91 8.268a.48.48 0 0 1 0-.68l.679-.678a.48.48 0 0 1 .677 0L12 10.644l3.734-3.734a.48.48 0 0 1 .677 0l.68.679a.478.478 0 0 1 0 .679L13.357 12l3.732 3.734Z\"\n}, null, -1);\nconst _hoisted_4$q = [\n  _hoisted_2$W,\n  _hoisted_3$C\n];\nfunction render$6(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$1d, _hoisted_4$q);\n}\nconst ErrorIconBlack = { render: render$6 };\nconst _hoisted_1$1c = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n};\nconst _hoisted_2$V = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#fff\",\n  d: \"M10 10h28v28H10z\"\n}, null, -1);\nconst _hoisted_3$B = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#D51A2C\",\n  d: \"M24 2.88A21.12 21.12 0 0 0 4.488 15.918 21.12 21.12 0 1 0 24 2.88Zm10.18 28.589a.96.96 0 0 1 .282.679.96.96 0 0 1-.281.68l-1.359 1.358a.96.96 0 0 1-1.353 0l-7.47-7.47-7.468 7.47a.96.96 0 0 1-1.354 0l-1.358-1.359a.96.96 0 0 1-.282-.679.96.96 0 0 1 .282-.68L21.283 24l-7.464-7.464a.96.96 0 0 1-.282-.68.96.96 0 0 1 .282-.678l1.358-1.359a.96.96 0 0 1 1.354 0L24 21.288l7.469-7.469a.96.96 0 0 1 1.353 0l1.359 1.359a.96.96 0 0 1 .281.679.96.96 0 0 1-.281.679L26.717 24l7.464 7.469Z\"\n}, null, -1);\nconst _hoisted_4$p = [\n  _hoisted_2$V,\n  _hoisted_3$B\n];\nfunction render$5(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$1c, _hoisted_4$p);\n}\nconst ErrorIconWhite = { render: render$5 };\nconst _hoisted_1$1b = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 24 24\"\n};\nconst _hoisted_2$U = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#282828\",\n  d: \"M5 5h14v14H5z\"\n}, null, -1);\nconst _hoisted_3$A = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#6D9EFD\",\n  d: \"M12 1.44a10.56 10.56 0 1 0 0 21.12 10.56 10.56 0 0 0 0-21.12Zm-.96 5.26a.48.48 0 0 1 .48-.48h.96a.48.48 0 0 1 .48.48v.96a.48.48 0 0 1-.48.48h-.96a.48.48 0 0 1-.48-.48V6.7Zm2.88 10.6a.48.48 0 0 1-.48.48h-2.88a.48.48 0 0 1-.48-.48v-.96a.48.48 0 0 1 .48-.48h.48v-3.84h-.48a.48.48 0 0 1-.48-.48v-.96a.48.48 0 0 1 .48-.48h1.92a.48.48 0 0 1 .48.48v5.28h.48a.48.48 0 0 1 .48.48v.96Z\"\n}, null, -1);\nconst _hoisted_4$o = [\n  _hoisted_2$U,\n  _hoisted_3$A\n];\nfunction render$4(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$1b, _hoisted_4$o);\n}\nconst InfoIconBlack = { render: render$4 };\nconst _hoisted_1$1a = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n};\nconst _hoisted_2$T = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#fff\",\n  d: \"M10 10h28v28H10z\"\n}, null, -1);\nconst _hoisted_3$z = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#003BDE\",\n  d: \"M24 2.88a21.12 21.12 0 1 0 0 42.24 21.12 21.12 0 0 0 0-42.24ZM22.08 13.4a.96.96 0 0 1 .96-.96h1.92a.96.96 0 0 1 .96.96v1.92a.96.96 0 0 1-.96.96h-1.92a.96.96 0 0 1-.96-.96V13.4Zm5.76 21.2a.96.96 0 0 1-.96.97h-5.76a.96.96 0 0 1-.96-.96v-1.92a.96.96 0 0 1 .96-.96h.96v-7.68h-.96a.96.96 0 0 1-.96-.96v-1.92a.96.96 0 0 1 .96-.96h3.84a.96.96 0 0 1 .96.96v10.56h.96a.96.96 0 0 1 .96.96v1.92Z\"\n}, null, -1);\nconst _hoisted_4$n = [\n  _hoisted_2$T,\n  _hoisted_3$z\n];\nfunction render$3(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$1a, _hoisted_4$n);\n}\nconst InfoIconWhite = { render: render$3 };\nconst _hoisted_1$19 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n};\nconst _hoisted_2$S = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#282828\",\n  d: \"M10 10h28v28H10z\"\n}, null, -1);\nconst _hoisted_3$y = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#65C161\",\n  d: \"M24 2.88a21.12 21.12 0 1 0 0 42.24 21.12 21.12 0 0 0 0-42.24ZM36.2 18.4 20.84 33.76a.96.96 0 0 1-1.36 0l-7.68-7.68a.96.96 0 0 1 0-1.36l1.36-1.35a.96.96 0 0 1 1.36 0l5.64 5.64L33.48 15.7a.96.96 0 0 1 1.36 0l1.36 1.35a.96.96 0 0 1 0 1.36Z\"\n}, null, -1);\nconst _hoisted_4$m = [\n  _hoisted_2$S,\n  _hoisted_3$y\n];\nfunction render$2(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$19, _hoisted_4$m);\n}\nconst SuccessIcon = { render: render$2 };\nconst _hoisted_1$18 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 48 48\"\n};\nconst _hoisted_2$R = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#282828\",\n  d: \"M12 10h24v28H12z\"\n}, null, -1);\nconst _hoisted_3$x = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"#E87626\",\n  d: \"M24 2.88a21.12 21.12 0 1 0 0 42.24 21.12 21.12 0 0 0 0-42.24Zm1.92 31.73a.96.96 0 0 1-.96.96h-1.92a.96.96 0 0 1-.96-.96v-1.92a.96.96 0 0 1 .96-.96h1.92a.96.96 0 0 1 .96.96v1.92Zm0-7.68a.96.96 0 0 1-.96.96h-1.92a.96.96 0 0 1-.96-.96V13.49a.96.96 0 0 1 .96-.96h1.92a.96.96 0 0 1 .96.96v13.44Z\"\n}, null, -1);\nconst _hoisted_4$l = [\n  _hoisted_2$R,\n  _hoisted_3$x\n];\nfunction render$1(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$18, _hoisted_4$l);\n}\nconst WarningIcon = { render: render$1 };\nconst _sfc_main$1n = /* @__PURE__ */ defineComponent({\n  __name: \"b-feedback-icon\",\n  props: {\n    type: {},\n    size: { default: \"md\" },\n    colorScheme: { default: \"black\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const feedbackIconMap = {\n      black: {\n        error: ErrorIconBlack,\n        info: InfoIconBlack,\n        success: SuccessIcon,\n        warning: WarningIcon\n      },\n      white: {\n        error: ErrorIconWhite,\n        info: InfoIconWhite,\n        success: SuccessIcon,\n        warning: WarningIcon\n      }\n    };\n    const iconPixelSize = computed(() => SIZE_MAP[props.size]);\n    const iconComponent = computed(\n      () => feedbackIconMap[props.colorScheme][props.type]\n    );\n    return (_ctx, _cache) => {\n      return iconComponent.value ? (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value), {\n        key: 0,\n        width: iconPixelSize.value,\n        class: \"b-feedback-icon\"\n      }, null, 8, [\"width\"])) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst bFeedbackIcon_vue_vue_type_style_index_0_scoped_f1340185_lang = \"\";\nconst BFeedbackIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1n, [[\"__scopeId\", \"data-v-f1340185\"]]);\nconst _withScopeId$7 = (n) => (pushScopeId(\"data-v-fdff5c21\"), n = n(), popScopeId(), n);\nconst _hoisted_1$17 = [\"aria-label\"];\nconst _hoisted_2$Q = /* @__PURE__ */ _withScopeId$7(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-alert__left-bar\" }, null, -1));\nconst _hoisted_3$w = { class: \"b-alert__wrapper\" };\nconst _hoisted_4$k = {\n  key: 0,\n  class: \"b-alert__icon\"\n};\nconst _hoisted_5$e = { class: \"b-alert__content\" };\nconst _hoisted_6$e = {\n  key: 1,\n  class: \"b-alert__additionalText\"\n};\nconst _hoisted_7$b = {\n  key: 2,\n  class: \"b-alert__cta\"\n};\nconst _hoisted_8$7 = {\n  key: 0,\n  class: \"b-alert__cta-button\"\n};\nconst _hoisted_9$6 = {\n  key: 1,\n  class: \"b-alert__cta-link\"\n};\nconst COMPACT_TEXT_DELIMITER$1 = 40;\nconst _sfc_main$1m = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-alert\",\n  props: {\n    type: { default: \"info\" },\n    message: {},\n    additionalText: { default: void 0 },\n    showCloseIcon: { type: Boolean, default: false }\n  },\n  emits: [\"close\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const attrs = useAttrs();\n    const alertAttrs = useSafeAttrs(attrs);\n    const breakpoints = useBreakpoints();\n    const greaterThanMd = breakpoints.greaterOrEqual(\"lg\");\n    const isLine = computed(\n      () => !(props.message.length >= COMPACT_TEXT_DELIMITER$1 || props.additionalText)\n    );\n    const ariaLabel = computed(\n      () => `${props.message}. ${props.additionalText ?? \"\"}`\n    );\n    const feedbackIconSize = computed(() => greaterThanMd.value ? \"lg\" : \"md\");\n    const linkIconSize = computed(() => greaterThanMd.value ? \"md\" : \"sm\");\n    const hasCustomAction = computed(() => slots[\"button\"] || slots[\"link\"]);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        \"aria-live\": \"polite\",\n        role: \"alert\",\n        \"aria-label\": ariaLabel.value\n      }, unref(alertAttrs), {\n        class: [\"b-alert\", [\n          `b-alert--${_ctx.type}`,\n          {\n            \"b-alert--line\": isLine.value\n          }\n        ]]\n      }), [\n        _hoisted_2$Q,\n        createElementVNode(\"div\", _hoisted_3$w, [\n          _ctx.type ? (openBlock(), createElementBlock(\"div\", _hoisted_4$k, [\n            createVNode(unref(BFeedbackIcon), {\n              type: props.type,\n              \"data-cy\": `b-alert-icon-${_ctx.type}`,\n              size: feedbackIconSize.value,\n              \"color-scheme\": \"white\"\n            }, null, 8, [\"type\", \"data-cy\", \"size\"])\n          ])) : createCommentVNode(\"\", true),\n          createElementVNode(\"div\", _hoisted_5$e, [\n            createElementVNode(\"p\", {\n              class: normalizeClass([\"b-alert__message\", {\n                \"b-alert__message--with-max-width\": _ctx.showCloseIcon\n              }])\n            }, toDisplayString(_ctx.message), 3),\n            _ctx.showCloseIcon ? (openBlock(), createElementBlock(\"button\", {\n              key: 0,\n              \"aria-label\": \"Close\",\n              \"data-cy\": \"b-alert-close\",\n              class: \"b-alert__close\",\n              onClick: _cache[0] || (_cache[0] = ($event) => emit(\"close\"))\n            }, [\n              createVNode(unref(CloseIcon), { size: \"md\" })\n            ])) : createCommentVNode(\"\", true),\n            _ctx.additionalText ? (openBlock(), createElementBlock(\"div\", _hoisted_6$e, toDisplayString(_ctx.additionalText), 1)) : createCommentVNode(\"\", true),\n            hasCustomAction.value ? (openBlock(), createElementBlock(\"div\", _hoisted_7$b, [\n              unref(slots)[\"button\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_8$7, [\n                renderSlot(_ctx.$slots, \"button\", {\n                  colorScheme: \"black\",\n                  size: \"md\",\n                  variant: \"outline\"\n                }, void 0, true)\n              ])) : createCommentVNode(\"\", true),\n              unref(slots)[\"link\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_9$6, [\n                renderSlot(_ctx.$slots, \"link\", {\n                  colorScheme: \"black\",\n                  size: linkIconSize.value\n                }, void 0, true)\n              ])) : createCommentVNode(\"\", true)\n            ])) : createCommentVNode(\"\", true)\n          ])\n        ])\n      ], 16, _hoisted_1$17);\n    };\n  }\n});\nconst bAlert_vue_vue_type_style_index_0_scoped_fdff5c21_lang = \"\";\nconst bAlert = /* @__PURE__ */ _export_sfc(_sfc_main$1m, [[\"__scopeId\", \"data-v-fdff5c21\"]]);\nconst ACTIVE_DESCENDANT_CONTEXT = Symbol(\n  \"activeDescendantContext\"\n);\nconst genDescendantId = (descendantPrefixId, index) => `${descendantPrefixId}-${index}`;\nconst useActiveDescendantOptions = () => {\n  return inject(ACTIVE_DESCENDANT_CONTEXT);\n};\nconst useActiveDescendant = ({\n  descendants\n}) => {\n  const descendantPrefixId = generateUniqueId();\n  const activeIndex = ref(-1);\n  const activeDescendantId = computed(() => {\n    if (activeIndex.value === -1) {\n      return;\n    }\n    return genDescendantId(descendantPrefixId, activeIndex.value);\n  });\n  watch(descendants, () => {\n    activeIndex.value = 0;\n  });\n  provide(ACTIVE_DESCENDANT_CONTEXT, {\n    activeIndex,\n    activeDescendantId,\n    descendantPrefixId,\n    applyDescendantAttributes,\n    isActiveDescendant\n  });\n  function goToPreviousDescendant() {\n    if (activeIndex.value === 0) {\n      activeIndex.value = descendants.value.length - 1;\n    } else {\n      activeIndex.value -= 1;\n    }\n  }\n  function goToNextDescendant() {\n    if (activeIndex.value === descendants.value.length - 1) {\n      activeIndex.value = 0;\n    } else {\n      activeIndex.value += 1;\n    }\n  }\n  function goToFirstDescendant() {\n    activeIndex.value = 0;\n  }\n  function goToLastDescendant() {\n    activeIndex.value = descendants.value.length - 1;\n  }\n  function resetDescendant() {\n    activeIndex.value = -1;\n  }\n  function getActiveDescendant() {\n    if (!isBrowser() || !activeDescendantId.value) {\n      return null;\n    }\n    return document.getElementById(activeDescendantId.value);\n  }\n  function getActiveDescendantValue() {\n    var _a;\n    return (_a = getActiveDescendant()) == null ? void 0 : _a.dataset.option;\n  }\n  function applyDescendantAttributes(idx, value) {\n    return {\n      \"data-option\": value,\n      \"id\": genDescendantId(descendantPrefixId, idx)\n    };\n  }\n  function isActiveDescendant(idx) {\n    return activeIndex.value === idx;\n  }\n  return {\n    activeDescendantId,\n    getActiveDescendant,\n    getActiveDescendantValue,\n    goToFirstDescendant,\n    goToLastDescendant,\n    goToNextDescendant,\n    goToPreviousDescendant,\n    resetDescendant\n  };\n};\nconst _hoisted_1$16 = { class: \"b-chip-input__label\" };\nconst _hoisted_2$P = [\"aria-label\", \"onClick\"];\nconst _sfc_main$1l = /* @__PURE__ */ defineComponent({\n  ...{ inheritAttrs: false },\n  __name: \"b-chip-input\",\n  props: {\n    colorScheme: { default: \"black\" },\n    label: {},\n    disabled: { type: Boolean },\n    readonly: { type: Boolean },\n    size: { default: \"md\" }\n  },\n  emits: [\"delete\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const chipInputAttrs = useSafeAttrs(useAttrs());\n    const chipSizeToDeleteIconSizeMap = {\n      xl: \"md\",\n      lg: \"md\",\n      md: \"sm\",\n      sm: \"sm\"\n    };\n    const chipSizeToAvatarSizeMap = {\n      xl: \"xs\",\n      lg: \"2xs\",\n      md: \"2xs\",\n      sm: \"3xs\"\n    };\n    const chipSizeToIconSizeMap = {\n      xl: \"lg\",\n      lg: \"md\",\n      md: \"md\",\n      sm: \"sm\"\n    };\n    const avatarSize = computed(() => chipSizeToAvatarSizeMap[props.size]);\n    const iconSize = computed(() => chipSizeToIconSizeMap[props.size]);\n    const deleteIconSize = computed(() => chipSizeToDeleteIconSizeMap[props.size]);\n    const renderIcon = computed(() => !!slots.icon && !slots.avatar);\n    const renderAvatar = computed(() => !!slots.avatar);\n    function emitDelete() {\n      if (!props.disabled && !props.readonly) {\n        emit(\"delete\", props.label);\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        class: [\"b-chip-input\", [\n          `b-chip-input--${_ctx.size}`,\n          `b-chip-input--${_ctx.colorScheme}`,\n          {\n            \"b-chip-input--disabled\": _ctx.disabled,\n            \"b-chip-input--readonly\": _ctx.readonly,\n            \"b-chip-input--has-icon\": renderIcon.value,\n            \"b-chip-input--has-avatar\": renderAvatar.value\n          }\n        ]]\n      }, unref(chipInputAttrs)), [\n        renderAvatar.value ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: normalizeClass([\"b-chip-input__avatar\", [\n            `b-chip-input__avatar--${_ctx.size}`,\n            `b-chip-input__avatar--${_ctx.colorScheme}`,\n            { \"b-chip-input__avatar--disabled\": _ctx.disabled }\n          ]])\n        }, [\n          renderSlot(_ctx.$slots, \"avatar\", { size: avatarSize.value }, void 0, true)\n        ], 2)) : createCommentVNode(\"\", true),\n        renderIcon.value ? (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: normalizeClass([\"b-chip-input__icon\", `b-chip-input__icon--${_ctx.size}`])\n        }, [\n          renderSlot(_ctx.$slots, \"icon\", {\n            size: iconSize.value,\n            fill: \"currentColor\"\n          }, void 0, true)\n        ], 2)) : createCommentVNode(\"\", true),\n        createElementVNode(\"span\", _hoisted_1$16, toDisplayString(_ctx.label), 1),\n        createElementVNode(\"button\", {\n          class: normalizeClass([\"b-chip-input__delete\", [\n            `b-chip-input__delete--${_ctx.colorScheme}`,\n            {\n              \"b-chip-input__delete--disabled\": _ctx.disabled,\n              \"b-chip-input__delete--readonly\": _ctx.readonly\n            }\n          ]]),\n          \"aria-label\": `delete ${_ctx.label}`,\n          onClick: withModifiers(emitDelete, [\"stop\"])\n        }, [\n          createVNode(unref(CloseIcon), {\n            size: deleteIconSize.value,\n            fill: \"currentColor\"\n          }, null, 8, [\"size\"])\n        ], 10, _hoisted_2$P)\n      ], 16);\n    };\n  }\n});\nconst bChipInput_vue_vue_type_style_index_0_scoped_2d15175b_lang = \"\";\nconst BChipInput = /* @__PURE__ */ _export_sfc(_sfc_main$1l, [[\"__scopeId\", \"data-v-2d15175b\"]]);\nconst _hoisted_1$15 = {\n  key: 0,\n  class: \"b-form-error\",\n  role: \"alert\",\n  \"aria-live\": \"assertive\"\n};\nconst _sfc_main$1k = /* @__PURE__ */ defineComponent({\n  __name: \"b-form-error\",\n  props: {\n    errorMessage: {},\n    colorScheme: { default: \"black\" }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return !!_ctx.errorMessage ? (openBlock(), createElementBlock(\"div\", _hoisted_1$15, [\n        _ctx.colorScheme === \"black\" ? (openBlock(), createBlock(unref(CloseCircleFillIcon), {\n          key: 0,\n          size: \"sm\",\n          fill: \"var(--icon-fill-color)\",\n          \"data-test-id\": \"b-form-error-icon-circle\",\n          class: \"b-form-error__icon\"\n        })) : (openBlock(), createBlock(unref(BFeedbackIcon), {\n          key: 1,\n          type: \"error\",\n          \"color-scheme\": \"white\",\n          size: \"sm\",\n          \"data-test-id\": \"b-form-error-icon-feedback\",\n          class: \"b-form-error__icon\"\n        })),\n        createElementVNode(\"span\", {\n          class: normalizeClass([\"b-form-error__text\", `b-form-error__text--${_ctx.colorScheme}`])\n        }, toDisplayString(_ctx.errorMessage), 3)\n      ])) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst bFormError_vue_vue_type_style_index_0_scoped_7dc32920_lang = \"\";\nconst BFormError = /* @__PURE__ */ _export_sfc(_sfc_main$1k, [[\"__scopeId\", \"data-v-7dc32920\"]]);\nconst CHECKBOX_GROUP_STATE_KEY = Symbol(\n  \"checkboxGroupProps\"\n);\nconst _hoisted_1$14 = { class: \"b-checkbox\" };\nconst _hoisted_2$O = [\"for\"];\nconst _hoisted_3$v = [\"id\", \"disabled\", \"aria-invalid\", \"aria-checked\"];\nconst _sfc_main$1j = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-checkbox\",\n  props: {\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean, default: false },\n    indeterminate: { type: Boolean, default: false },\n    invalid: { type: Boolean, default: false },\n    readonly: { type: Boolean, default: false },\n    label: { default: void 0 },\n    modelValue: { type: Boolean },\n    errorMessage: { default: void 0 }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const checkboxRef = ref();\n    __expose({\n      checkbox: checkboxRef\n    });\n    const checkboxGroupState = inject(CHECKBOX_GROUP_STATE_KEY, null);\n    const checkboxAttrs = useSafeAttrs(useAttrs());\n    const checkboxId = generateUniqueId();\n    checkboxGroupState == null ? void 0 : checkboxGroupState.value.register(checkboxId);\n    const isControlled = computed(\n      () => checkboxGroupState == null ? void 0 : checkboxGroupState.value.checkboxStateMap.has(checkboxId)\n    );\n    const isChecked = computed(\n      () => !!(checkboxGroupState == null ? void 0 : checkboxGroupState.value.checkboxStateMap.get(checkboxId)) || !!props.modelValue\n    );\n    const proxiedModel = computed({\n      get() {\n        return isChecked.value;\n      },\n      set(value) {\n        checkboxGroupState == null ? void 0 : checkboxGroupState.value.update(checkboxId, value);\n        emit(\"update:modelValue\", value);\n      }\n    });\n    const computedColorScheme = computed(\n      () => (checkboxGroupState == null ? void 0 : checkboxGroupState.value.colorScheme) ?? props.colorScheme\n    );\n    const computedInvalid = computed(() => {\n      if (isControlled.value) {\n        return isChecked.value ? false : !!(checkboxGroupState == null ? void 0 : checkboxGroupState.value.invalid);\n      } else {\n        return props.invalid;\n      }\n    });\n    const computedDisabled = computed(() => {\n      if (isControlled.value) {\n        return !!(checkboxGroupState == null ? void 0 : checkboxGroupState.value.disabled);\n      } else {\n        return props.disabled;\n      }\n    });\n    const computedReadonly = computed(() => {\n      if (isControlled.value) {\n        return !!(checkboxGroupState == null ? void 0 : checkboxGroupState.value.readonly);\n      } else {\n        return props.readonly;\n      }\n    });\n    const ariaChecked = computed(\n      () => props.indeterminate ? \"mixed\" : proxiedModel.value\n    );\n    const hasCheckmark = computed(() => proxiedModel.value || props.indeterminate);\n    function onClick(event) {\n      if (computedReadonly.value) {\n        event.preventDefault();\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$14, [\n        createElementVNode(\"label\", {\n          class: normalizeClass([\"b-checkbox__label\", [\n            `b-checkbox__label--${computedColorScheme.value}`,\n            {\n              \"b-checkbox__label--disabled\": computedDisabled.value,\n              \"b-checkbox__label--invalid\": computedInvalid.value,\n              \"b-checkbox__label--readonly\": computedReadonly.value\n            }\n          ]]),\n          for: unref(checkboxId)\n        }, [\n          withDirectives(createElementVNode(\"input\", mergeProps({\n            id: unref(checkboxId),\n            ref_key: \"checkboxRef\",\n            ref: checkboxRef,\n            \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => proxiedModel.value = $event),\n            type: \"checkbox\",\n            disabled: computedDisabled.value,\n            \"aria-invalid\": computedInvalid.value,\n            \"aria-checked\": ariaChecked.value,\n            class: [\"b-checkbox__input\", `b-checkbox__input--${computedColorScheme.value}`]\n          }, unref(checkboxAttrs), { onClick }), null, 16, _hoisted_3$v), [\n            [vModelCheckbox, proxiedModel.value]\n          ]),\n          createElementVNode(\"span\", {\n            class: normalizeClass([\"b-checkbox__icon\", [\n              `b-checkbox__icon--${computedColorScheme.value}`,\n              {\n                \"b-checkbox__icon--disabled\": computedDisabled.value,\n                \"b-checkbox__icon--invalid\": computedInvalid.value,\n                \"b-checkbox__icon--has-checkmark\": hasCheckmark.value,\n                \"b-checkbox__icon--readonly\": computedReadonly.value\n              }\n            ]])\n          }, [\n            hasCheckmark.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n              _ctx.indeterminate ? (openBlock(), createBlock(unref(LessIcon), {\n                key: 0,\n                size: \"md\"\n              })) : (openBlock(), createBlock(unref(CheckIcon), {\n                key: 1,\n                size: \"md\"\n              }))\n            ], 64)) : createCommentVNode(\"\", true)\n          ], 2),\n          _ctx.label || unref(slots)[\"custom-label\"] ? (openBlock(), createElementBlock(\"span\", {\n            key: 0,\n            class: normalizeClass([\"b-checkbox__text\", [\n              `b-checkbox__text--${computedColorScheme.value}`,\n              {\n                \"b-checkbox__text--has-checkmark\": hasCheckmark.value,\n                \"b-checkbox__text--disabled\": computedDisabled.value,\n                \"b-checkbox__text--invalid\": computedInvalid.value,\n                \"b-checkbox__text--readonly\": computedReadonly.value\n              }\n            ]])\n          }, [\n            renderSlot(_ctx.$slots, \"custom-label\", {}, () => [\n              createTextVNode(toDisplayString(_ctx.label), 1)\n            ], true)\n          ], 2)) : createCommentVNode(\"\", true)\n        ], 10, _hoisted_2$O),\n        _ctx.invalid ? (openBlock(), createBlock(unref(BFormError), {\n          key: 0,\n          class: \"b-checkbox__error\",\n          \"color-scheme\": _ctx.colorScheme,\n          \"error-message\": _ctx.errorMessage\n        }, null, 8, [\"color-scheme\", \"error-message\"])) : createCommentVNode(\"\", true)\n      ]);\n    };\n  }\n});\nconst bCheckbox_vue_vue_type_style_index_0_scoped_336378b4_lang = \"\";\nconst BCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [[\"__scopeId\", \"data-v-336378b4\"]]);\nconst _hoisted_1$13 = { class: \"b-checkbox-group__wrapper\" };\nconst _sfc_main$1i = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-checkbox-group\",\n  props: {\n    modelValue: {},\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean, default: false },\n    invalid: { type: Boolean, default: false },\n    readonly: { type: Boolean },\n    errorMessage: { default: void 0 }\n  },\n  emits: {\n    /**\n     * Update model value\n     */\n    \"update:modelValue\": (value) => value\n  },\n  setup(__props, { emit }) {\n    const props = __props;\n    const checkboxGroupAttrs = useSafeAttrs(useAttrs());\n    const checkboxStateMap = ref(/* @__PURE__ */ new Map());\n    const registerCheckbox = (checkboxId) => {\n      if (!checkboxStateMap.value.has(checkboxId)) {\n        const indexInModelValue = checkboxStateMap.value.size;\n        checkboxStateMap.value.set(checkboxId, props.modelValue[indexInModelValue]);\n      }\n    };\n    const updateValue = (checkboxId, value) => {\n      checkboxStateMap.value.set(checkboxId, value);\n      emit(\"update:modelValue\", [...checkboxStateMap.value.values()]);\n    };\n    const checkboxGroupState = computed(() => ({\n      checkboxStateMap: checkboxStateMap.value,\n      colorScheme: props.colorScheme,\n      disabled: props.disabled,\n      invalid: props.invalid,\n      readonly: props.readonly,\n      register: registerCheckbox,\n      update: updateValue\n    }));\n    provide(CHECKBOX_GROUP_STATE_KEY, checkboxGroupState);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({ class: \"b-checkbox-group\" }, unref(checkboxGroupAttrs)), [\n        createElementVNode(\"div\", _hoisted_1$13, [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ]),\n        _ctx.invalid ? (openBlock(), createBlock(unref(BFormError), {\n          key: 0,\n          class: \"b-checkbox-group__error\",\n          \"color-scheme\": _ctx.colorScheme,\n          \"error-message\": _ctx.errorMessage\n        }, null, 8, [\"color-scheme\", \"error-message\"])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bCheckboxGroup_vue_vue_type_style_index_0_scoped_9f36d157_lang = \"\";\nconst bCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1i, [[\"__scopeId\", \"data-v-9f36d157\"]]);\nconst _hoisted_1$12 = {\n  key: 0,\n  class: \"b-listbox__header\"\n};\nconst _hoisted_2$N = { class: \"b-listbox__header-selected-values\" };\nconst _hoisted_3$u = {\n  key: 0,\n  class: \"b-listbox__caption\"\n};\nconst _hoisted_4$j = [\"aria-disabled\", \"aria-selected\", \"onClick\"];\nconst _hoisted_5$d = {\n  key: 0,\n  class: \"b-listbox__multiple-option\"\n};\nconst _hoisted_6$d = {\n  key: 1,\n  class: \"b-listbox__single-option\"\n};\nconst _hoisted_7$a = { key: 0 };\nconst _hoisted_8$6 = { class: \"b-listbox__option-text\" };\nconst _hoisted_9$5 = {\n  key: 1,\n  class: \"b-listbox__empty\"\n};\nconst _sfc_main$1h = /* @__PURE__ */ defineComponent({\n  __name: \"b-listbox\",\n  props: {\n    options: {},\n    modelValue: {},\n    variant: {},\n    multiSelectable: { type: Boolean },\n    captionMessage: {}\n  },\n  emits: [\"click-selected\", \"clear-all\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const listboxRef = ref(null);\n    const listboxOptionsRef = ref(null);\n    __expose({ listboxRef, listboxOptionsRef });\n    const { applyDescendantAttributes, isActiveDescendant } = useActiveDescendantOptions() ?? {};\n    function onSelect(value) {\n      emit(\"click-selected\", value);\n    }\n    function isSelected(value) {\n      if (typeof props.modelValue === \"string\") {\n        return props.modelValue === value;\n      }\n      if (Array.isArray(props.modelValue)) {\n        return props.modelValue.includes(value);\n      }\n    }\n    return (_ctx, _cache) => {\n      var _a;\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        ref_key: \"listboxRef\",\n        ref: listboxRef,\n        class: \"b-listbox\"\n      }, _ctx.$attrs), [\n        _ctx.multiSelectable ? (openBlock(), createElementBlock(\"div\", _hoisted_1$12, [\n          createElementVNode(\"span\", _hoisted_2$N, toDisplayString(`${((_a = _ctx.modelValue) == null ? void 0 : _a.length) ?? 0} selected`), 1),\n          createElementVNode(\"button\", {\n            \"aria-label\": \"Clear all previously selected options\",\n            class: \"b-listbox__header-clear-button\",\n            onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$emit(\"clear-all\"), [\"stop\", \"prevent\"]))\n          }, \" Clear all \")\n        ])) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", {\n          ref_key: \"listboxOptionsRef\",\n          ref: listboxOptionsRef,\n          role: \"listbox\",\n          class: \"b-listbox__options\"\n        }, [\n          props.captionMessage ? (openBlock(), createElementBlock(\"div\", _hoisted_3$u, toDisplayString(props.captionMessage), 1)) : createCommentVNode(\"\", true),\n          (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (option, idx) => {\n            var _a2, _b;\n            return openBlock(), createElementBlock(\"div\", mergeProps((_a2 = unref(applyDescendantAttributes)) == null ? void 0 : _a2(idx, option.value), {\n              key: option.value,\n              class: [\"b-listbox__option\", {\n                \"b-listbox__option--selected\": isSelected(option.value),\n                \"b-listbox__option--disabled\": !!option.disabled,\n                \"b-listbox__option--active\": (_b = unref(isActiveDescendant)) == null ? void 0 : _b(idx)\n              }],\n              \"aria-disabled\": !!option.disabled,\n              \"aria-selected\": isSelected(option.value),\n              role: \"option\",\n              onMousedown: _cache[1] || (_cache[1] = withModifiers(() => {\n              }, [\"stop\", \"prevent\"])),\n              onClick: withModifiers(($event) => !option.disabled && onSelect(option.value), [\"stop\", \"prevent\"])\n            }), [\n              props.variant === \"checkbox\" ? (openBlock(), createElementBlock(\"div\", _hoisted_5$d, [\n                createVNode(unref(BCheckbox), {\n                  disabled: !!option.disabled,\n                  \"aria-hidden\": \"true\",\n                  \"model-value\": !option.disabled && isSelected(option.value),\n                  tabindex: \"-1\",\n                  \"onUpdate:modelValue\": ($event) => onSelect(option.value)\n                }, {\n                  \"custom-label\": withCtx(() => [\n                    createTextVNode(toDisplayString(option.label), 1)\n                  ]),\n                  _: 2\n                }, 1032, [\"disabled\", \"model-value\", \"onUpdate:modelValue\"])\n              ])) : (openBlock(), createElementBlock(\"div\", _hoisted_6$d, [\n                props.variant === \"ticks\" ? (openBlock(), createElementBlock(\"div\", _hoisted_7$a, [\n                  createVNode(unref(CheckIcon), {\n                    style: normalizeStyle({\n                      visibility: isSelected(option.value) ? \"visible\" : \"hidden\"\n                    }),\n                    size: \"md\"\n                  }, null, 8, [\"style\"])\n                ])) : createCommentVNode(\"\", true),\n                createElementVNode(\"span\", _hoisted_8$6, toDisplayString(option.label), 1)\n              ]))\n            ], 16, _hoisted_4$j);\n          }), 128)),\n          unref(slots)[\"empty-content\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_9$5, [\n            renderSlot(_ctx.$slots, \"empty-content\", {}, void 0, true)\n          ])) : createCommentVNode(\"\", true)\n        ], 512)\n      ], 16);\n    };\n  }\n});\nconst bListbox_vue_vue_type_style_index_0_scoped_5e75504e_lang = \"\";\nconst BListbox = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [[\"__scopeId\", \"data-v-5e75504e\"]]);\nconst LISTBOX_DISTANCE_FROM_VIEWPORT_EDGE = 64;\nconst createListboxIds = () => {\n  const triggerId = `listbox-trigger-${generateUniqueId()}`;\n  const listboxId = `listbox-menu-${generateUniqueId()}`;\n  return {\n    triggerId,\n    listboxId\n  };\n};\nconst useListboxFloating = ({\n  listboxRef,\n  referenceRef\n}) => {\n  const floating = useFloating(referenceRef, listboxRef, {\n    placement: \"bottom\",\n    middleware: [\n      offset(5),\n      flip(),\n      size({\n        apply({ availableHeight, elements }) {\n          Object.assign(elements.floating.style, {\n            minHeight: \"3rem\",\n            maxHeight: `${availableHeight - LISTBOX_DISTANCE_FROM_VIEWPORT_EDGE}px`\n          });\n        }\n      })\n    ]\n  });\n  return floating;\n};\nconst _hoisted_1$11 = { class: \"b-spinner\" };\nconst _sfc_main$1g = /* @__PURE__ */ defineComponent({\n  __name: \"b-spinner\",\n  props: {\n    color: { default: \"currentColor\" },\n    size: { default: \"md\" },\n    display: { default: \"flex\" }\n  },\n  setup(__props) {\n    useCssVars((_ctx) => ({\n      \"1641392c\": _ctx.display\n    }));\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$11, [\n        createVNode(unref(SpinnerIcon), {\n          class: \"b-spinner-icon\",\n          fill: _ctx.color,\n          size: _ctx.size\n        }, null, 8, [\"fill\", \"size\"])\n      ]);\n    };\n  }\n});\nconst bSpinner_vue_vue_type_style_index_0_scoped_563e200a_lang = \"\";\nconst BSpinner = /* @__PURE__ */ _export_sfc(_sfc_main$1g, [[\"__scopeId\", \"data-v-563e200a\"]]);\nconst isOptionPartialMatch = (optionLabel, searchText) => normalizeString(optionLabel).includes(normalizeString(searchText));\nconst isOptionExactMatch = (optionLabel, searchText) => normalizeString(optionLabel) === normalizeString(searchText);\nconst _hoisted_1$10 = [\"onKeydown\"];\nconst _hoisted_2$M = [\"for\"];\nconst _hoisted_3$t = [\"tabindex\", \"disabled\", \"aria-readonly\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"onKeydown\"];\nconst _hoisted_4$i = {\n  key: 0,\n  class: \"b-autocomplete__chips-cloud\"\n};\nconst _hoisted_5$c = {\n  key: 1,\n  class: \"b-autocomplete__selections\"\n};\nconst _hoisted_6$c = { class: \"b-autocomplete__chips-cloud\" };\nconst _hoisted_7$9 = [\"id\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"onKeydown\"];\nconst _hoisted_8$5 = { class: \"b-autocomplete__suffix\" };\nconst _hoisted_9$4 = [\"onClick\"];\nconst _hoisted_10$2 = {\n  key: 1,\n  class: \"b-autocomplete__spinner\"\n};\nconst _hoisted_11$1 = {\n  key: 0,\n  class: \"b-autocomplete__messages\"\n};\nconst _hoisted_12 = {\n  key: 0,\n  class: \"b-autocomplete__empty-content\"\n};\nconst _hoisted_13 = {\n  key: 1,\n  class: \"b-autocomplete__empty-content\"\n};\nconst _sfc_main$1f = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-autocomplete\",\n  props: {\n    colorScheme: { default: \"black\" },\n    options: {},\n    modelValue: {},\n    label: {},\n    invalid: { type: Boolean },\n    disabled: { type: Boolean, default: void 0 },\n    readonly: { type: Boolean, default: void 0 },\n    errorMessage: { default: null },\n    hint: { default: void 0 },\n    loading: { type: Boolean },\n    variant: { default: \"single\" },\n    creatable: { type: Boolean },\n    clearSearchOnSelection: { type: Boolean, default: false },\n    notFoundMessage: { default: \"No matches to your query could be found. Try another search term\" },\n    emptyMessage: { default: \"No options available\" },\n    isMatch: { type: Function, default: isOptionPartialMatch }\n  },\n  emits: [\"update:modelValue\", \"search\"],\n  setup(__props, { expose: __expose, emit: emits }) {\n    const props = __props;\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const autocompleteRef = ref(null);\n    const triggerRef = ref(null);\n    const listboxRef = ref(null);\n    const searchInputRef = ref(null);\n    const formControlRef = ref(null);\n    __expose({\n      trigger: triggerRef,\n      autocomplete: autocompleteRef,\n      search: searchInputRef\n    });\n    const isExpanded = ref(false);\n    const internalModel = ref(props.modelValue);\n    const searchModel = ref(\"\");\n    const createdValues = ref([]);\n    const { listboxId, triggerId } = createListboxIds();\n    const { floatingStyles, update: updateListboxPlacement } = useListboxFloating({\n      listboxRef,\n      referenceRef: formControlRef\n    });\n    const search = computed({\n      get: () => searchModel.value,\n      set: (value) => {\n        searchModel.value = value;\n        emits(\"search\", value);\n      }\n    });\n    const proxiedModel = computed({\n      get: () => internalModel.value,\n      set: (value) => {\n        internalModel.value = value;\n        if (props.modelValue !== value) {\n          emits(\"update:modelValue\", value);\n        }\n        updateListboxPlacement();\n      }\n    });\n    const mergedOptions = computed(() => {\n      return [...props.options, ...createdValues.value];\n    });\n    const availableOptions = computed(() => {\n      if (props.variant === \"chips\") {\n        return mergedOptions.value.filter(\n          (option) => !props.modelValue.includes(option.value)\n        );\n      }\n      return [...mergedOptions.value];\n    });\n    const filteredOptions = computed(() => {\n      return availableOptions.value.filter(\n        (option) => props.isMatch(option.label, search.value)\n      );\n    });\n    const hasNoOptions = computed(() => {\n      return mergedOptions.value.length === 0;\n    });\n    const shouldShowEmptyMessage = computed(() => {\n      if (filteredOptions.value.length > 0) {\n        return false;\n      }\n      if (props.creatable && searchModel.value.length > 0 && Array.isArray(proxiedModel.value)) {\n        return !!proxiedModel.value.some(\n          (value) => isOptionExactMatch(value, searchModel.value)\n        );\n      }\n      return !props.loading && searchModel.value.length > 0 && filteredOptions.value.length === 0;\n    });\n    const shouldShowCreatableRow = computed(() => {\n      if (props.variant !== \"chips\" || !props.creatable || !Array.isArray(proxiedModel.value)) {\n        return false;\n      }\n      if (search.value.trim().length === 0) {\n        return false;\n      }\n      if (!proxiedModel.value.some(\n        (value) => isOptionExactMatch(value, searchModel.value)\n      )) {\n        return true;\n      }\n      return false;\n    });\n    const captionMessage = computed(() => {\n      if (props.loading) {\n        return \"Loading...\";\n      }\n      if (search.value.length > 0) {\n        return `${filteredOptions.value.length} result${filteredOptions.value.length === 1 ? `` : `s`}`;\n      }\n      return \"\";\n    });\n    const optionsDisplayed = computed(\n      () => search.value.length > 0 ? filteredOptions.value : availableOptions.value\n    );\n    const listboxVariant = computed(\n      () => props.variant === \"chips\" ? \"default\" : props.variant === \"multiple\" ? \"checkbox\" : \"ticks\"\n    );\n    const isPopulated = computed(\n      () => isExpanded.value || proxiedModel.value.length > 0\n    );\n    const displaySelections = computed(() => {\n      var _a;\n      if (props.variant === \"chips\") {\n        return \"\";\n      }\n      if (props.variant === \"multiple\" && proxiedModel.value.length > 0) {\n        return `${proxiedModel.value.length} selected`;\n      }\n      if (props.variant === \"single\" && proxiedModel.value.length > 0) {\n        return ((_a = mergedOptions.value.find((option) => option.value === internalModel.value)) == null ? void 0 : _a.label) ?? \"\";\n      }\n      return \"\";\n    });\n    const hasSmallLabel = computed(() => {\n      if (isPopulated.value) {\n        return true;\n      }\n      if (props.disabled || props.readonly) {\n        return false;\n      }\n      return focused.value;\n    });\n    const {\n      activeDescendantId,\n      getActiveDescendant,\n      getActiveDescendantValue,\n      goToNextDescendant,\n      goToPreviousDescendant,\n      goToLastDescendant,\n      goToFirstDescendant,\n      resetDescendant\n    } = useActiveDescendant({\n      descendants: optionsDisplayed\n    });\n    watch(\n      () => activeDescendantId.value,\n      (value) => {\n        if (value) {\n          const activeDescendant = getActiveDescendant();\n          activeDescendant == null ? void 0 : activeDescendant.scrollIntoView({\n            block: \"nearest\",\n            inline: \"nearest\"\n          });\n        }\n      }\n    );\n    watch(\n      () => props.modelValue,\n      (value) => {\n        proxiedModel.value = value;\n      }\n    );\n    onClickOutside(autocompleteRef, () => {\n      closeDropdown();\n    });\n    function onEnterKey() {\n      const value = getActiveDescendantValue();\n      if (value) {\n        select(value);\n      }\n    }\n    function onClickSelect(value) {\n      select(value);\n    }\n    function onCreatable(value) {\n      createdValues.value = [\n        ...createdValues.value,\n        {\n          label: value,\n          value\n        }\n      ];\n      select(value);\n    }\n    function onResetModels() {\n      if (props.variant === \"single\") {\n        proxiedModel.value = \"\";\n      } else {\n        proxiedModel.value = [];\n      }\n      search.value = \"\";\n    }\n    function onDelete(e) {\n      if (searchModel.value.length === 0 && props.variant === \"chips\") {\n        e.preventDefault();\n        deleteLastSelection();\n        return;\n      }\n    }\n    function onAutocompleteClick() {\n      if (isExpanded.value) {\n        focusSearchInput();\n      } else {\n        openDropdown();\n      }\n    }\n    function onChevronClick() {\n      isExpanded.value ? closeDropdown() : openDropdown();\n    }\n    function select(value) {\n      if (isSelected(value)) {\n        return deselect(value);\n      }\n      if (props.variant === \"chips\") {\n        props.clearSearchOnSelection && (search.value = \"\");\n        proxiedModel.value = [...proxiedModel.value, value];\n        return;\n      }\n      if (props.variant === \"multiple\") {\n        props.clearSearchOnSelection && (search.value = \"\");\n        proxiedModel.value = [...proxiedModel.value, value];\n        return;\n      }\n      if (props.variant === \"single\") {\n        search.value = \"\";\n        proxiedModel.value = value;\n        closeDropdown();\n        nextTick(() => {\n          focusTrigger();\n        });\n        return;\n      }\n    }\n    function deselect(value) {\n      if (props.creatable) {\n        createdValues.value = createdValues.value.filter((v) => v.value !== value);\n      }\n      if (props.variant === \"chips\" || props.variant === \"multiple\") {\n        proxiedModel.value = proxiedModel.value.filter(\n          (v) => v !== value\n        );\n        nextTick(() => {\n          focusSearchInput();\n        });\n        return;\n      }\n      if (props.variant === \"single\") {\n        nextTick(() => {\n          focusTrigger();\n        });\n        return;\n      }\n    }\n    function openDropdown() {\n      if (props.disabled || props.readonly || isExpanded.value) {\n        return;\n      }\n      isExpanded.value = true;\n      nextTick(() => {\n        focusSearchInput();\n      });\n    }\n    function closeDropdown() {\n      search.value = \"\";\n      isExpanded.value = false;\n      resetDescendant();\n    }\n    function onEscKey() {\n      if (isExpanded.value) {\n        closeDropdown();\n        nextTick(() => {\n          focusTrigger();\n        });\n      }\n    }\n    function focusSearchInput() {\n      var _a;\n      (_a = searchInputRef.value) == null ? void 0 : _a.focus();\n    }\n    function focusTrigger() {\n      var _a;\n      (_a = triggerRef.value) == null ? void 0 : _a.focus();\n    }\n    function isSelected(value) {\n      if (props.variant === \"single\") {\n        return proxiedModel.value === value;\n      } else {\n        return proxiedModel.value.includes(value);\n      }\n    }\n    function deleteLastSelection() {\n      if (proxiedModel.value.length > 0) {\n        proxiedModel.value = proxiedModel.value.slice(\n          0,\n          proxiedModel.value.length - 1\n        );\n      }\n    }\n    function generateChipProps(value) {\n      var _a;\n      const label = ((_a = mergedOptions.value.find((option) => option.value === value)) == null ? void 0 : _a.label) ?? \"\";\n      return {\n        label,\n        onDelete: props.readonly || props.disabled ? void 0 : () => deselect(value),\n        colorScheme: props.colorScheme,\n        size: \"md\",\n        disabled: props.disabled,\n        readonly: props.readonly\n      };\n    }\n    function onMouseDown(event) {\n      if (event.target !== searchInputRef.value) {\n        event.preventDefault();\n      }\n    }\n    const { focused } = useFocusWithin(autocompleteRef);\n    watch(\n      () => focused.value,\n      (val) => {\n        if (!val) {\n          closeDropdown();\n          return;\n        }\n        if (val && !isExpanded.value) {\n          openDropdown();\n        }\n      }\n    );\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps(unref(safeAttrs), {\n        ref_key: \"autocompleteRef\",\n        ref: autocompleteRef,\n        class: \"b-autocomplete\",\n        onMousedown: onMouseDown,\n        onKeydown: withKeys(withModifiers(onEscKey, [\"prevent\"]), [\"escape\"])\n      }), [\n        createElementVNode(\"div\", {\n          ref_key: \"formControlRef\",\n          ref: formControlRef,\n          class: normalizeClass([\"b-autocomplete__form-control\", [\n            `b-autocomplete__form-control--${_ctx.colorScheme}`,\n            {\n              \"b-autocomplete__form-control--invalid\": _ctx.invalid,\n              \"b-autocomplete__form-control--disabled\": _ctx.disabled,\n              \"b-autocomplete__form-control--readonly\": _ctx.readonly,\n              \"b-autocomplete__form-control--cursor-pointer\": !_ctx.disabled && !_ctx.readonly,\n              \"b-autocomplete__form-control--auto-height\": _ctx.variant === \"chips\"\n            }\n          ]]),\n          onClick: onAutocompleteClick\n        }, [\n          createElementVNode(\"label\", {\n            class: normalizeClass([\"b-autocomplete__label\", [\n              `b-autocomplete__label--${_ctx.colorScheme}`,\n              {\n                \"b-autocomplete__label--small\": hasSmallLabel.value,\n                \"b-autocomplete__label--disabled\": _ctx.disabled,\n                \"b-autocomplete__label--readonly\": _ctx.readonly,\n                \"b-autocomplete__label--invalid\": _ctx.invalid\n              }\n            ]]),\n            for: unref(triggerId)\n          }, toDisplayString(_ctx.label), 11, _hoisted_2$M),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-autocomplete__control\", {\n              \"b-autocomplete__control--auto-height\": _ctx.variant === \"chips\"\n            }])\n          }, [\n            withDirectives(createElementVNode(\"div\", {\n              ref_key: \"triggerRef\",\n              ref: triggerRef,\n              tabindex: _ctx.disabled ? -1 : 0,\n              role: \"combobox\",\n              disabled: _ctx.disabled,\n              \"aria-readonly\": _ctx.readonly,\n              autocomplete: \"off\",\n              \"aria-autocomplete\": \"list\",\n              spellcheck: \"false\",\n              \"aria-controls\": unref(listboxId),\n              \"aria-expanded\": isExpanded.value,\n              \"aria-haspopup\": \"listbox\",\n              \"aria-activedescendant\": unref(activeDescendantId),\n              class: \"b-autocomplete__trigger\",\n              onKeydown: withKeys(withModifiers(openDropdown, [\"prevent\"]), [\"down\", \"enter\", \"space\", \"up\"])\n            }, [\n              props.variant === \"chips\" ? (openBlock(), createElementBlock(\"div\", _hoisted_4$i, [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(proxiedModel.value, (selectedValue) => {\n                  return openBlock(), createBlock(unref(BChipInput), mergeProps({ key: selectedValue }, generateChipProps(selectedValue), {\n                    onKeydown: [\n                      _cache[0] || (_cache[0] = withKeys(withModifiers(() => {\n                      }, [\"stop\"]), [\"space\"])),\n                      _cache[1] || (_cache[1] = withKeys(withModifiers(() => {\n                      }, [\"stop\"]), [\"enter\"]))\n                    ]\n                  }), null, 16);\n                }), 128))\n              ])) : (openBlock(), createElementBlock(\"span\", _hoisted_5$c, toDisplayString(displaySelections.value), 1))\n            ], 40, _hoisted_3$t), [\n              [vShow, !isExpanded.value]\n            ]),\n            withDirectives(createElementVNode(\"div\", _hoisted_6$c, [\n              props.variant === \"chips\" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(proxiedModel.value, (selectedValue) => {\n                return openBlock(), createBlock(unref(BChipInput), mergeProps({ key: selectedValue }, generateChipProps(selectedValue), {\n                  onKeydown: [\n                    _cache[2] || (_cache[2] = withKeys(withModifiers(() => {\n                    }, [\"stop\"]), [\"space\"])),\n                    _cache[3] || (_cache[3] = withKeys(withModifiers(() => {\n                    }, [\"stop\"]), [\"enter\"]))\n                  ]\n                }), null, 16);\n              }), 128)) : createCommentVNode(\"\", true),\n              withDirectives(createElementVNode(\"input\", {\n                id: unref(triggerId),\n                ref_key: \"searchInputRef\",\n                ref: searchInputRef,\n                \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event) => search.value = $event),\n                class: normalizeClass([\"b-autocomplete__search\", `b-autocomplete__search--${_ctx.colorScheme}`]),\n                type: \"text\",\n                placeholder: \"Search...\",\n                role: \"combobox\",\n                autocomplete: \"off\",\n                \"aria-autocomplete\": \"list\",\n                autocapitalize: \"false\",\n                spellcheck: \"false\",\n                \"aria-controls\": unref(listboxId),\n                \"aria-expanded\": isExpanded.value,\n                \"aria-haspopup\": \"listbox\",\n                \"aria-activedescendant\": unref(activeDescendantId),\n                onKeydown: [\n                  withKeys(onDelete, [\"delete\"]),\n                  _cache[5] || (_cache[5] = withKeys(withModifiers(\n                    //@ts-ignore\n                    (...args) => unref(goToPreviousDescendant) && unref(goToPreviousDescendant)(...args),\n                    [\"prevent\"]\n                  ), [\"up\"])),\n                  _cache[6] || (_cache[6] = withKeys(withModifiers(\n                    //@ts-ignore\n                    (...args) => unref(goToNextDescendant) && unref(goToNextDescendant)(...args),\n                    [\"prevent\"]\n                  ), [\"down\"])),\n                  withKeys(withModifiers(onEnterKey, [\"prevent\"]), [\"enter\"]),\n                  _cache[7] || (_cache[7] = withKeys(withModifiers(\n                    //@ts-ignore\n                    (...args) => unref(goToFirstDescendant) && unref(goToFirstDescendant)(...args),\n                    [\"prevent\"]\n                  ), [\"home\"])),\n                  _cache[8] || (_cache[8] = withKeys(withModifiers(\n                    //@ts-ignore\n                    (...args) => unref(goToLastDescendant) && unref(goToLastDescendant)(...args),\n                    [\"prevent\"]\n                  ), [\"end\"]))\n                ]\n              }, null, 42, _hoisted_7$9), [\n                [vModelText, search.value]\n              ])\n            ], 512), [\n              [vShow, isExpanded.value]\n            ])\n          ], 2),\n          createElementVNode(\"div\", _hoisted_8$5, [\n            !_ctx.loading ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: \"b-autocomplete__toggle-icon\",\n              onClick: withModifiers(onChevronClick, [\"stop\", \"prevent\"])\n            }, [\n              isExpanded.value ? (openBlock(), createBlock(unref(ChevronUpIcon), {\n                key: 0,\n                size: \"md\"\n              })) : (openBlock(), createBlock(unref(ChevronDownIcon), {\n                key: 1,\n                size: \"md\"\n              }))\n            ], 8, _hoisted_9$4)) : (openBlock(), createElementBlock(\"div\", _hoisted_10$2, [\n              createVNode(unref(BSpinner), { size: \"md\" })\n            ]))\n          ])\n        ], 2),\n        _ctx.invalid && !!_ctx.errorMessage || _ctx.hint ? (openBlock(), createElementBlock(\"div\", _hoisted_11$1, [\n          _ctx.invalid ? (openBlock(), createBlock(unref(BFormError), {\n            key: 0,\n            class: \"b-autocomplete__error\",\n            \"color-scheme\": _ctx.colorScheme,\n            invalid: _ctx.invalid,\n            \"error-message\": _ctx.errorMessage\n          }, null, 8, [\"color-scheme\", \"invalid\", \"error-message\"])) : createCommentVNode(\"\", true),\n          !!_ctx.hint ? (openBlock(), createElementBlock(\"div\", {\n            key: 1,\n            class: normalizeClass([\"b-autocomplete__hint\", [`b-autocomplete__hint--${_ctx.colorScheme}`]])\n          }, toDisplayString(_ctx.hint), 3)) : createCommentVNode(\"\", true)\n        ])) : createCommentVNode(\"\", true),\n        isExpanded.value ? (openBlock(), createBlock(unref(BListbox), {\n          key: 1,\n          id: unref(listboxId),\n          ref_key: \"listboxRef\",\n          ref: listboxRef,\n          \"aria-labelledby\": unref(triggerId),\n          \"caption-message\": captionMessage.value,\n          \"model-value\": proxiedModel.value,\n          \"multi-selectable\": props.variant !== \"single\",\n          options: optionsDisplayed.value,\n          style: normalizeStyle(unref(floatingStyles)),\n          variant: listboxVariant.value,\n          onClickSelected: onClickSelect,\n          onClearAll: onResetModels\n        }, createSlots({ _: 2 }, [\n          hasNoOptions.value || shouldShowCreatableRow.value || shouldShowEmptyMessage.value ? {\n            name: \"empty-content\",\n            fn: withCtx(() => [\n              hasNoOptions.value ? (openBlock(), createElementBlock(\"div\", _hoisted_12, toDisplayString(_ctx.emptyMessage), 1)) : shouldShowEmptyMessage.value ? (openBlock(), createElementBlock(\"div\", _hoisted_13, toDisplayString(_ctx.notFoundMessage), 1)) : createCommentVNode(\"\", true),\n              shouldShowCreatableRow.value ? (openBlock(), createElementBlock(\"button\", {\n                key: 2,\n                class: \"b-autocomplete__creatable-row\",\n                onClick: _cache[9] || (_cache[9] = withModifiers(($event) => onCreatable(search.value), [\"stop\", \"prevent\"]))\n              }, ' Create \"' + toDisplayString(search.value) + '\" ', 1)) : createCommentVNode(\"\", true)\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1032, [\"id\", \"aria-labelledby\", \"caption-message\", \"model-value\", \"multi-selectable\", \"options\", \"style\", \"variant\"])) : createCommentVNode(\"\", true)\n      ], 16, _hoisted_1$10);\n    };\n  }\n});\nconst bAutocomplete_vue_vue_type_style_index_0_scoped_824b3f4a_lang = \"\";\nconst bAutocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$1f, [[\"__scopeId\", \"data-v-824b3f4a\"]]);\nconst _hoisted_1$$ = {\n  key: 0,\n  class: \"b-avatar__figure\"\n};\nconst _hoisted_2$L = [\"src\", \"srcset\", \"alt\"];\nconst _hoisted_3$s = { key: 1 };\nconst _sfc_main$1e = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-avatar\",\n  props: {\n    src: { default: void 0 },\n    srcSet: { default: void 0 },\n    alt: {},\n    size: { default: \"lg\" },\n    colorScheme: { default: \"black\" },\n    initials: { default: void 0 }\n  },\n  setup(__props) {\n    const props = __props;\n    const SIZE_TO_INITIALS_MAP = {\n      \"3xl\": 2,\n      \"2xl\": 2,\n      \"xl\": 2,\n      \"lg\": 2,\n      \"md\": 2,\n      \"sm\": 1,\n      \"xs\": 1,\n      \"2xs\": 1,\n      \"3xs\": 1\n    };\n    const imageError = ref(false);\n    const handleImageError = () => {\n      imageError.value = true;\n    };\n    const sanitizedInitials = computed(() => {\n      if (typeof props.initials !== \"string\" || props.initials.length === 0) {\n        return;\n      }\n      return props.initials.trim().slice(0, SIZE_TO_INITIALS_MAP[props.size]).toUpperCase();\n    });\n    const showImage = computed(() => {\n      return !imageError.value && props.src !== void 0 && props.src.length > 0;\n    });\n    watch(\n      () => props.src,\n      () => {\n        imageError.value = false;\n      }\n    );\n    const avatarAttrs = useSafeAttrs(useAttrs());\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({ class: \"b-avatar\" }, unref(avatarAttrs), {\n        class: [\n          `b-avatar--${_ctx.size}`,\n          `b-avatar--${_ctx.colorScheme}`,\n          { \"b-avatar--with-image\": showImage.value }\n        ]\n      }), [\n        showImage.value ? (openBlock(), createElementBlock(\"figure\", _hoisted_1$$, [\n          createElementVNode(\"img\", {\n            src: _ctx.src,\n            class: \"b-avatar__img\",\n            srcset: _ctx.srcSet,\n            alt: _ctx.alt,\n            onError: handleImageError\n          }, null, 40, _hoisted_2$L)\n        ])) : (openBlock(), createElementBlock(\"p\", _hoisted_3$s, toDisplayString(sanitizedInitials.value), 1))\n      ], 16);\n    };\n  }\n});\nconst bAvatar_vue_vue_type_style_index_0_scoped_574bc087_lang = \"\";\nconst bAvatar = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [[\"__scopeId\", \"data-v-574bc087\"]]);\nfunction isExternalLink(link) {\n  const externalPrefixes = [\n    \"http\",\n    \"mailto\",\n    \"tel:\",\n    \"data:\",\n    \"javascript:\",\n    \"file:\",\n    \"ftp:\",\n    \"sftp:\",\n    \"whatsapp:\",\n    \"#\",\n    \"://\"\n  ];\n  return !!link && typeof link === \"string\" && externalPrefixes.some((externalPrefix) => link.startsWith(externalPrefix));\n}\nconst ARROW_SIZE = 6;\nconst TOOLTIP_SKIDDING = -8;\nconst TOOLTIP_OFFSET = 2;\nconst TOOLTIP_DISTANCE = ARROW_SIZE + TOOLTIP_OFFSET;\nconst TOOLTIP_SCREEN_BORDER_PADDING = 10;\nconst _hoisted_1$_ = [\"onKeydown\"];\nconst _hoisted_2$K = [\"id\", \"aria-hidden\"];\nconst _sfc_main$1d = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-tooltip\",\n  props: {\n    placement: { default: \"auto\" },\n    forceVisible: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const tooltipAttrs = useSafeAttrs(useAttrs());\n    const contentRef = ref(null);\n    const contentArrowRef = ref(null);\n    const triggerRef = ref(null);\n    const tooltipActive = ref(false);\n    const tooltipId = generateUniqueId();\n    const shouldAddAutoplacementMiddlewere = () => props.placement === \"auto\" ? [autoPlacement()] : [];\n    const middleware = ref([\n      ...shouldAddAutoplacementMiddlewere(),\n      offset({\n        mainAxis: TOOLTIP_DISTANCE,\n        alignmentAxis: TOOLTIP_SKIDDING\n      }),\n      flip(),\n      shift({\n        limiter: limitShift(),\n        padding: TOOLTIP_SCREEN_BORDER_PADDING\n      }),\n      arrow({\n        element: contentArrowRef,\n        padding: TOOLTIP_DISTANCE\n      })\n    ]);\n    const placement = computed(\n      () => props.placement === \"auto\" ? void 0 : props.placement\n    );\n    const {\n      floatingStyles,\n      middlewareData,\n      placement: floatingPlacement\n    } = useFloating(triggerRef, contentRef, {\n      placement,\n      middleware,\n      whileElementsMounted: autoUpdate\n    });\n    const side = computed(() => floatingPlacement.value.split(\"-\")[0]);\n    const contentArrowPosition = computed(() => {\n      const { x, y } = middlewareData.value.arrow ?? {};\n      const isLeftPlacement = floatingPlacement.value.includes(\"left\");\n      const isTopPlacement = floatingPlacement.value.includes(\"top\");\n      return {\n        left: x ? `${x}px` : isLeftPlacement ? \"100%\" : \"0\",\n        top: y ? `${y}px` : isTopPlacement ? \"100%\" : \"0\"\n      };\n    });\n    const tooltipVisible = computed(\n      () => props.forceVisible || tooltipActive.value\n    );\n    function show() {\n      tooltipActive.value = true;\n    }\n    function hide() {\n      tooltipActive.value = false;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: \"b-tooltip\",\n        onMouseleave: hide,\n        onKeydown: withKeys(hide, [\"esc\"])\n      }, [\n        createElementVNode(\"div\", {\n          ref_key: \"triggerRef\",\n          ref: triggerRef,\n          class: \"b-tooltip__trigger\"\n        }, [\n          renderSlot(_ctx.$slots, \"trigger\", {\n            ariaDescribedby: unref(tooltipId),\n            onFocus: show,\n            onBlur: hide,\n            onMouseenter: show\n          }, void 0, true)\n        ], 512),\n        tooltipVisible.value ? (openBlock(), createElementBlock(\"div\", mergeProps({\n          key: 0,\n          id: unref(tooltipId),\n          ref_key: \"contentRef\",\n          ref: contentRef\n        }, unref(tooltipAttrs), {\n          class: [\"b-tooltip__content\", `b-tooltip__content--${side.value}`],\n          style: unref(floatingStyles),\n          role: \"tooltip\",\n          \"aria-hidden\": !tooltipVisible.value,\n          \"aria-live\": \"polite\"\n        }), [\n          renderSlot(_ctx.$slots, \"content\", {}, void 0, true),\n          createElementVNode(\"div\", {\n            ref_key: \"contentArrowRef\",\n            ref: contentArrowRef,\n            class: \"b-tooltip__content-arrow\",\n            style: normalizeStyle(contentArrowPosition.value)\n          }, null, 4)\n        ], 16, _hoisted_2$K)) : createCommentVNode(\"\", true)\n      ], 40, _hoisted_1$_);\n    };\n  }\n});\nconst bTooltip_vue_vue_type_style_index_0_scoped_af0f0086_lang = \"\";\nconst BTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [[\"__scopeId\", \"data-v-af0f0086\"]]);\nconst BREADCRUMB_COLORSCHEME_SYMBOL = Symbol.for(\n  \"breadcrumb-colorscheme\"\n);\nconst _hoisted_1$Z = { class: \"b-breadcrumbs-item__wrapper\" };\nconst _hoisted_2$J = { class: \"b-breadcrumbs-item__text\" };\nconst MAX_CHARACTERS = 35;\nconst _sfc_main$1c = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-breadcrumbs-item\",\n  props: {\n    label: {},\n    to: {},\n    onClick: {},\n    home: { type: Boolean },\n    as: { default: \"a\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useSafeAttrs(useAttrs());\n    const breakpoints = useBreakpoints();\n    const greaterOrEqualThanLarge = breakpoints.greaterOrEqual(\"lg\");\n    const hasMouse = useHasMouse();\n    const colorScheme = inject(\n      BREADCRUMB_COLORSCHEME_SYMBOL\n    );\n    const isTooltipVisible = computed(() => {\n      return hasMouse.value && hasTrimmedText.value;\n    });\n    const hasTrimmedText = computed(() => {\n      return props.label && props.label.length >= MAX_CHARACTERS;\n    });\n    const textLabel = computed(() => {\n      if (!props.label) {\n        return \"\";\n      }\n      return hasTrimmedText.value ? `${props.label.slice(0, MAX_CHARACTERS)}...` : props.label;\n    });\n    const hrefProp = computed(\n      () => typeof props.to === \"string\" && isExternalLink(props.to) ? { href: props.to } : { to: props.to }\n    );\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-breadcrumbs-item\", [`b-breadcrumbs-item--${unref(colorScheme)}`]])\n      }, [\n        _ctx.home ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.as), mergeProps({\n          key: 0,\n          class: \"b-breadcrumbs-item__home\"\n        }, { ...unref(attrs), ...hrefProp.value, \"aria-label\": _ctx.label || \"Home\" }), {\n          default: withCtx(() => [\n            createVNode(unref(HomeFillIcon), { size: \"sm\" })\n          ]),\n          _: 1\n        }, 16)) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.as), normalizeProps(mergeProps({ key: 1 }, { ...unref(attrs), ...hrefProp.value })), {\n          default: withCtx(() => [\n            createElementVNode(\"div\", _hoisted_1$Z, [\n              !unref(greaterOrEqualThanLarge) ? (openBlock(), createBlock(unref(ChevronLeftIcon), {\n                key: 0,\n                size: \"sm\",\n                class: \"b-breadcrumbs-item__backlink-icon\"\n              })) : createCommentVNode(\"\", true),\n              createElementVNode(\"div\", _hoisted_2$J, [\n                isTooltipVisible.value ? (openBlock(), createBlock(unref(BTooltip), {\n                  key: 0,\n                  placement: \"bottom\"\n                }, {\n                  trigger: withCtx((scope) => [\n                    createElementVNode(\"span\", normalizeProps(guardReactiveProps(scope)), toDisplayString(textLabel.value), 17)\n                  ]),\n                  content: withCtx(() => [\n                    createTextVNode(toDisplayString(_ctx.label), 1)\n                  ]),\n                  _: 1\n                })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n                  createTextVNode(toDisplayString(textLabel.value), 1)\n                ], 64))\n              ])\n            ])\n          ]),\n          _: 1\n        }, 16))\n      ], 2);\n    };\n  }\n});\nconst bBreadcrumbsItem_vue_vue_type_style_index_0_scoped_4a3fb311_lang = \"\";\nconst BBreadcrumbsItem = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [[\"__scopeId\", \"data-v-4a3fb311\"]]);\nconst _hoisted_1$Y = { class: \"b-breadcrumbs__list\" };\nconst _hoisted_2$I = {\n  key: 0,\n  class: \"b-breadcrumbs__separator\"\n};\nconst _hoisted_3$r = { class: \"b-breadcrumbs__backlink\" };\nconst _sfc_main$1b = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-breadcrumbs\",\n  props: {\n    colorScheme: { default: \"black\" },\n    items: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useAttrs();\n    const breadcrumbsAttrs = useSafeAttrs(attrs);\n    const breakpoints = useBreakpoints();\n    const greaterOrEqualThanLarge = breakpoints.greaterOrEqual(\"lg\");\n    const lastItemIdx = computed(() => props.items.length - 1);\n    const lastLink = computed(() => props.items.at(lastItemIdx.value));\n    const colorScheme = computed(() => props.colorScheme);\n    provide(BREADCRUMB_COLORSCHEME_SYMBOL, colorScheme);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"nav\", mergeProps(unref(breadcrumbsAttrs), {\n        class: [\"b-breadcrumbs\", `b-breadcrumbs--${colorScheme.value}`],\n        \"data-cy\": \"b-breadcrumbs\"\n      }), [\n        createElementVNode(\"ul\", _hoisted_1$Y, [\n          unref(greaterOrEqualThanLarge) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.items, (item, idx) => {\n            return openBlock(), createElementBlock(\"li\", {\n              key: item.label,\n              class: \"b-breadcrumbs__item\"\n            }, [\n              renderSlot(_ctx.$slots, \"item\", { item }, () => [\n                createVNode(BBreadcrumbsItem, normalizeProps(guardReactiveProps(item)), null, 16)\n              ], true),\n              idx < lastItemIdx.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2$I, [\n                createVNode(unref(ChevronRightIcon), { size: \"sm\" })\n              ])) : createCommentVNode(\"\", true)\n            ]);\n          }), 128)) : renderSlot(_ctx.$slots, \"item\", {\n            key: 1,\n            item: lastLink.value\n          }, () => [\n            createElementVNode(\"div\", _hoisted_3$r, [\n              createVNode(BBreadcrumbsItem, normalizeProps(guardReactiveProps(lastLink.value)), null, 16)\n            ])\n          ], true)\n        ])\n      ], 16);\n    };\n  }\n});\nconst bBreadcrumbs_vue_vue_type_style_index_0_scoped_734a52c2_lang = \"\";\nconst bBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [[\"__scopeId\", \"data-v-734a52c2\"]]);\nfunction linkHrefParser(props) {\n  const { as, to } = props;\n  if (!to) {\n    return {};\n  }\n  if (as === \"a\") {\n    return {\n      href: to\n    };\n  }\n  if (as === \"router-link\") {\n    return {\n      to\n    };\n  }\n  if (typeof as === \"object\") {\n    return { to };\n  }\n  return {};\n}\nconst _hoisted_1$X = { class: \"b-button__spinner\" };\nconst _sfc_main$1a = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-button\",\n  props: {\n    colorScheme: { default: \"blue\" },\n    disabled: { type: Boolean, default: void 0 },\n    loading: { type: Boolean, default: false },\n    variant: { default: \"fill\" },\n    size: { default: \"md\" },\n    iconPosition: { default: \"right\" },\n    as: { default: \"button\" },\n    to: {}\n  },\n  emits: [\"click\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"6bf96eb0\": iconOrder.value\n    }));\n    const slots = useSlots();\n    const buttonRef = ref(null);\n    __expose({\n      button: buttonRef\n    });\n    const btnAttrs = useSafeAttrs(useAttrs());\n    const buttonSizeToSpinnerSizeMap = {\n      sm: \"md\",\n      md: \"lg\",\n      lg: \"lg\"\n    };\n    const buttonSizeToIconSizeMap = {\n      sm: \"sm\",\n      md: \"md\",\n      lg: \"md\"\n    };\n    const spinnerSize = computed(() => buttonSizeToSpinnerSizeMap[props.size]);\n    const iconSize = computed(() => buttonSizeToIconSizeMap[props.size]);\n    const iconOrder = computed(() => props.iconPosition === \"left\" ? 0 : 1);\n    const linkAttrs = computed(\n      () => linkHrefParser({ as: props.as, to: props.to })\n    );\n    const isLink = computed(() => !!props.to);\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), mergeProps({\n        ref_key: \"buttonRef\",\n        ref: buttonRef,\n        role: isLink.value ? \"link\" : \"button\",\n        \"data-cy\": \"b-button\"\n      }, { ...unref(btnAttrs), ...linkAttrs.value }, {\n        class: [\"b-button\", [\n          `b-button--${_ctx.colorScheme}`,\n          `b-button--${_ctx.size}`,\n          `b-button--${_ctx.variant}`,\n          {\n            \"b-button--loading\": _ctx.loading,\n            \"b-button--disabled\": _ctx.disabled\n          }\n        ]],\n        tabindex: isLink.value && _ctx.disabled ? -1 : 0,\n        \"aria-disabled\": _ctx.disabled,\n        disabled: _ctx.disabled,\n        onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n      }), {\n        default: withCtx(() => [\n          unref(slots)[\"icon\"] ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            \"data-cy\": \"b-button-icon\",\n            class: normalizeClass([\n              \"b-button__icon\",\n              !_ctx.loading ? \"b-button__icon--visibile\" : \"b-button__icon--hidden\"\n            ])\n          }, [\n            renderSlot(_ctx.$slots, \"icon\", {\n              size: iconSize.value,\n              fill: \"currentColor\"\n            }, void 0, true)\n          ], 2)) : createCommentVNode(\"\", true),\n          withDirectives(createElementVNode(\"span\", _hoisted_1$X, [\n            createVNode(unref(BSpinner), { size: spinnerSize.value }, null, 8, [\"size\"])\n          ], 512), [\n            [vShow, _ctx.loading]\n          ]),\n          createElementVNode(\"span\", {\n            class: normalizeClass([\"b-button__text\", {\n              \"b-button__text--visible\": !_ctx.loading,\n              \"b-button__text--hidden\": _ctx.loading\n            }])\n          }, [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ], 2)\n        ]),\n        _: 3\n      }, 16, [\"role\", \"tabindex\", \"aria-disabled\", \"disabled\", \"class\"]);\n    };\n  }\n});\nconst bButton_vue_vue_type_style_index_0_scoped_abb99f1c_lang = \"\";\nconst BButton = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [[\"__scopeId\", \"data-v-abb99f1c\"]]);\nfunction useSelectionDetection() {\n  let pointerMovement;\n  let startPoint;\n  const pointerMovementPxThreshold = 4;\n  const isSelecting = ref(false);\n  return {\n    listeners: {\n      pointerdown: (event) => {\n        isSelecting.value = false;\n        startPoint = {\n          x: event.clientX,\n          y: event.clientY\n        };\n      },\n      pointermove: (event) => {\n        if (!startPoint) {\n          return;\n        }\n        pointerMovement = Math.abs(startPoint.x - event.clientX) + Math.abs(startPoint.y - event.clientY);\n        isSelecting.value = pointerMovement >= pointerMovementPxThreshold;\n      }\n    },\n    isSelecting\n  };\n}\nfunction addThousandsSeparators(number) {\n  return number.toLocaleString(\"en-US\", { useGrouping: true });\n}\nfunction abbreviateNumber(number) {\n  if (number < 1e4) {\n    return addThousandsSeparators(number);\n  }\n  const units = [\"k\", \"m\", \"b\", \"t\"];\n  const exponent = Math.floor(Math.log10(number) / 3);\n  const decimal = Math.pow(1e3, exponent);\n  const unit = units[exponent - 1];\n  const formattedNumber = (number / decimal).toString().slice(0, 4).replace(/(\\..*)0+$/, \"$1\");\n  return formattedNumber.endsWith(\".\") ? formattedNumber.slice(0, -1) + unit : formattedNumber + unit;\n}\nconst parseLinkProps = ({\n  to,\n  as\n}) => {\n  if (as === \"a\" && typeof to === \"string\") {\n    return { href: to };\n  }\n  return { to };\n};\nconst _sfc_main$19 = /* @__PURE__ */ defineComponent({\n  __name: \"b-card-link\",\n  props: {\n    isSelecting: { type: Boolean },\n    link: {}\n  },\n  setup(__props, { expose: __expose }) {\n    const props = __props;\n    __expose({ navigateToLink });\n    const linkRef = ref();\n    const linkComponent = computed(() => props.link.as ?? \"a\");\n    const linkProps = computed(() => {\n      const { to, as: _as, ...remainingProps } = props.link;\n      const hrefProp = parseLinkProps({\n        as: linkComponent.value,\n        to\n      });\n      return {\n        ...remainingProps,\n        ...hrefProp\n      };\n    });\n    function navigateToLink(event) {\n      var _a;\n      const link = linkRef.value instanceof HTMLElement ? linkRef.value : (_a = linkRef.value) == null ? void 0 : _a.$el;\n      if (link && event.target !== link && !props.isSelecting) {\n        link.click();\n      }\n    }\n    return (_ctx, _cache) => {\n      var _a;\n      return ((_a = _ctx.link) == null ? void 0 : _a.to) ? (openBlock(), createBlock(resolveDynamicComponent(linkComponent.value), mergeProps({ key: 0 }, linkProps.value, {\n        ref_key: \"linkRef\",\n        ref: linkRef\n      }), {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\")\n        ]),\n        _: 3\n      }, 16)) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst _hoisted_1$W = { class: \"b-card-stats__value\" };\nconst _sfc_main$18 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-card-stats-list\",\n  props: {\n    stats: {},\n    format: { default: \"full\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const formattedStats = computed(\n      () => props.stats.filter((stat) => stat.value > 0).map(({ value, label }) => ({ label, value: formatStatValue(value) }))\n    );\n    function formatStatValue(value) {\n      if (props.format === \"abbreviated\") {\n        return abbreviateNumber(value);\n      } else {\n        return addThousandsSeparators(value);\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", mergeProps({ class: \"b-card-stats\" }, unref(safeAttrs)), [\n        (openBlock(true), createElementBlock(Fragment, null, renderList(formattedStats.value, ({ label, value }) => {\n          return openBlock(), createElementBlock(\"li\", {\n            key: label,\n            class: \"b-card-stats__entry\"\n          }, [\n            createElementVNode(\"span\", _hoisted_1$W, toDisplayString(value), 1),\n            createTextVNode(\" \" + toDisplayString(label), 1)\n          ]);\n        }), 128))\n      ], 16);\n    };\n  }\n});\nconst bCardStatsList_vue_vue_type_style_index_0_scoped_0b793be6_lang = \"\";\nconst BCardStatsList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [[\"__scopeId\", \"data-v-0b793be6\"]]);\nconst _hoisted_1$V = { class: \"b-card-article__header\" };\nconst _hoisted_2$H = { class: \"b-card-article__type\" };\nconst _hoisted_3$q = { class: \"b-card-article__published\" };\nconst _hoisted_4$h = {\n  key: 0,\n  class: \"b-card-article__authors\"\n};\nconst _hoisted_5$b = {\n  key: 1,\n  class: \"b-card-article__image-wrapper\"\n};\nconst _hoisted_6$b = {\n  key: 2,\n  class: \"b-card-article__footer\"\n};\nconst _hoisted_7$8 = {\n  key: 0,\n  class: \"b-card-article__reference\"\n};\nconst _hoisted_8$4 = {\n  key: 0,\n  class: \"b-card-article__journal-title\"\n};\nconst _hoisted_9$3 = {\n  key: 1,\n  class: \"b-card-article__doi\"\n};\nconst _sfc_main$17 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-card-article\",\n  props: {\n    title: {},\n    header: {},\n    published: {},\n    authors: { default: () => [] },\n    journalTitle: {},\n    articleDoi: {},\n    citations: {},\n    views: {},\n    titleAs: { default: \"h1\" },\n    link: {},\n    statsNumberFormat: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useSafeAttrs(useAttrs());\n    const linkComponent = ref();\n    const { listeners, isSelecting } = useSelectionDetection();\n    const stats = computed(() => {\n      const { views, citations } = props;\n      return [\n        { label: \"views\", value: views ?? 0 },\n        { label: \"citations\", value: citations ?? 0 }\n      ];\n    });\n    const shouldRenderStats = computed(\n      () => !!props.citations || !!props.views\n    );\n    const shouldRenderFooter = computed(\n      () => shouldRenderStats.value || !!props.journalTitle || !!props.articleDoi\n    );\n    const authorsText = computed(() => {\n      if (typeof props.authors === \"string\") {\n        return props.authors;\n      }\n      const formattedAuthorsList = props.authors.length > 10 ? [\n        ...props.authors.slice(0, 9),\n        `${props.authors.length - 10} more`,\n        props.authors.at(-1)\n      ] : props.authors;\n      return formattedAuthorsList.join(\"  ·  \");\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"article\", mergeProps({\n        class: [\"b-card-article\", [\n          {\n            \"b-card-article--has-link\": !!_ctx.link\n          }\n        ]]\n      }, unref(attrs), toHandlers(unref(listeners), true), {\n        onClick: _cache[0] || (_cache[0] = //@ts-ignore\n        (...args) => {\n          var _a, _b;\n          return ((_a = linkComponent.value) == null ? void 0 : _a.navigateToLink) && ((_b = linkComponent.value) == null ? void 0 : _b.navigateToLink(...args));\n        })\n      }), [\n        createElementVNode(\"div\", _hoisted_1$V, [\n          createElementVNode(\"p\", _hoisted_2$H, toDisplayString(_ctx.header), 1),\n          createElementVNode(\"p\", _hoisted_3$q, toDisplayString(_ctx.published), 1)\n        ]),\n        (openBlock(), createBlock(resolveDynamicComponent(_ctx.titleAs), { class: \"b-card-article__title\" }, {\n          default: withCtx(() => [\n            _ctx.link ? (openBlock(), createBlock(_sfc_main$19, {\n              key: 0,\n              ref_key: \"linkComponent\",\n              ref: linkComponent,\n              \"is-selecting\": unref(isSelecting),\n              link: _ctx.link\n            }, {\n              default: withCtx(() => [\n                createTextVNode(toDisplayString(_ctx.title), 1)\n              ]),\n              _: 1\n            }, 8, [\"is-selecting\", \"link\"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n              createTextVNode(toDisplayString(_ctx.title), 1)\n            ], 64))\n          ]),\n          _: 1\n        })),\n        authorsText.value ? (openBlock(), createElementBlock(\"p\", _hoisted_4$h, toDisplayString(authorsText.value), 1)) : createCommentVNode(\"\", true),\n        _ctx.$slots.image ? (openBlock(), createElementBlock(\"div\", _hoisted_5$b, [\n          renderSlot(_ctx.$slots, \"image\", normalizeProps(guardReactiveProps({\n            style: {\n              \"width\": \"100%\",\n              \"height\": \"100%\",\n              \"object-fit\": \"cover\"\n            }\n          })), void 0, true)\n        ])) : createCommentVNode(\"\", true),\n        shouldRenderFooter.value ? (openBlock(), createElementBlock(\"footer\", _hoisted_6$b, [\n          _ctx.journalTitle || _ctx.articleDoi ? (openBlock(), createElementBlock(\"div\", _hoisted_7$8, [\n            _ctx.journalTitle ? (openBlock(), createElementBlock(\"p\", _hoisted_8$4, toDisplayString(_ctx.journalTitle), 1)) : createCommentVNode(\"\", true),\n            _ctx.articleDoi ? (openBlock(), createElementBlock(\"p\", _hoisted_9$3, toDisplayString(_ctx.articleDoi), 1)) : createCommentVNode(\"\", true)\n          ])) : createCommentVNode(\"\", true),\n          shouldRenderStats.value ? (openBlock(), createBlock(BCardStatsList, {\n            key: 1,\n            stats: stats.value,\n            format: _ctx.statsNumberFormat\n          }, null, 8, [\"stats\", \"format\"])) : createCommentVNode(\"\", true)\n        ])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bCardArticle_vue_vue_type_style_index_0_scoped_131af256_lang = \"\";\nconst bCardArticle = /* @__PURE__ */ _export_sfc(_sfc_main$17, [[\"__scopeId\", \"data-v-131af256\"]]);\nconst _hoisted_1$U = { class: \"b-card-people__avatar\" };\nconst _hoisted_2$G = {\n  class: \"b-card-people__header\",\n  role: \"generic\"\n};\nconst _hoisted_3$p = { class: \"b-card-people__body\" };\nconst _hoisted_4$g = [\"title\"];\nconst _hoisted_5$a = {\n  key: 0,\n  class: \"b-card-people__footer\"\n};\nconst _hoisted_6$a = [\"title\"];\nconst _hoisted_7$7 = [\"title\"];\nconst _sfc_main$16 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-card-people\",\n  props: {\n    name: {},\n    nameAs: { default: \"h1\" },\n    institution: {},\n    location: {},\n    professionalRole: {},\n    professionalArea: {},\n    layout: { default: \"vertical\" },\n    link: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const linkComponent = ref();\n    const attrs = useSafeAttrs(useAttrs());\n    const { listeners, isSelecting } = useSelectionDetection();\n    const avatarProps = computed(() => ({\n      alt: props.name,\n      size: \"lg\"\n    }));\n    const bodyContent = computed(() => [props.institution, props.location]);\n    function navigateToLink(event) {\n      var _a;\n      (_a = linkComponent.value) == null ? void 0 : _a.navigateToLink(event);\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"article\", mergeProps({\n        class: [\"b-card-people\", [\n          `b-card-people--${_ctx.layout}`,\n          {\n            \"b-card-people--is-interactive\": _ctx.link\n          }\n        ]]\n      }, unref(attrs), { onClick: navigateToLink }, toHandlers(unref(listeners), true)), [\n        createElementVNode(\"div\", _hoisted_1$U, [\n          renderSlot(_ctx.$slots, \"avatar\", normalizeProps(guardReactiveProps(avatarProps.value)), void 0, true)\n        ]),\n        createElementVNode(\"header\", _hoisted_2$G, [\n          (openBlock(), createBlock(resolveDynamicComponent(_ctx.nameAs), {\n            class: \"b-card-people__name\",\n            title: _ctx.name\n          }, {\n            default: withCtx(() => [\n              _ctx.link ? (openBlock(), createBlock(_sfc_main$19, {\n                key: 0,\n                ref_key: \"linkComponent\",\n                ref: linkComponent,\n                \"is-selecting\": unref(isSelecting),\n                link: _ctx.link\n              }, {\n                default: withCtx(() => [\n                  createTextVNode(toDisplayString(_ctx.name), 1)\n                ]),\n                _: 1\n              }, 8, [\"is-selecting\", \"link\"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n                createTextVNode(toDisplayString(_ctx.name), 1)\n              ], 64))\n            ]),\n            _: 1\n          }, 8, [\"title\"]))\n        ]),\n        createElementVNode(\"div\", _hoisted_3$p, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(bodyContent.value, (paragraph, index) => {\n            return openBlock(), createElementBlock(\"p\", {\n              key: index,\n              class: \"b-card-people__body-paragraph\",\n              title: paragraph\n            }, toDisplayString(paragraph), 9, _hoisted_4$g);\n          }), 128))\n        ]),\n        _ctx.professionalRole || _ctx.professionalArea ? (openBlock(), createElementBlock(\"footer\", _hoisted_5$a, [\n          _ctx.professionalRole ? (openBlock(), createElementBlock(\"p\", {\n            key: 0,\n            class: \"b-card-people__professional-role\",\n            title: _ctx.professionalRole\n          }, toDisplayString(_ctx.professionalRole), 9, _hoisted_6$a)) : createCommentVNode(\"\", true),\n          _ctx.professionalArea ? (openBlock(), createElementBlock(\"p\", {\n            key: 1,\n            class: \"b-card-people__professional-area\",\n            title: _ctx.professionalArea\n          }, toDisplayString(_ctx.professionalArea), 9, _hoisted_7$7)) : createCommentVNode(\"\", true)\n        ])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bCardPeople_vue_vue_type_style_index_0_scoped_fe86faf7_lang = \"\";\nconst bCardPeople = /* @__PURE__ */ _export_sfc(_sfc_main$16, [[\"__scopeId\", \"data-v-fe86faf7\"]]);\nconst _hoisted_1$T = {\n  key: 0,\n  class: \"b-tag__icon\"\n};\nconst _hoisted_2$F = { class: \"b-tag__label\" };\nconst _sfc_main$15 = /* @__PURE__ */ defineComponent({\n  __name: \"b-tag\",\n  props: {\n    colorScheme: {},\n    variant: { default: \"fill\" },\n    size: { default: \"md\" },\n    iconPosition: { default: \"right\" }\n  },\n  setup(__props) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"f38b1f04\": icon_order.value\n    }));\n    const slots = useSlots();\n    const iconSizeMap = {\n      md: \"sm\",\n      lg: \"sm\"\n    };\n    const icon_order = computed(() => props.iconPosition === \"left\" ? \"0\" : \"1\");\n    const tagAttrs = useSafeAttrs(useAttrs());\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        \"data-cy\": \"b-tag\",\n        class: \"b-tag\"\n      }, unref(tagAttrs), {\n        class: [`b-tag--${_ctx.colorScheme}`, `b-tag--${_ctx.variant}`, `b-tag--${_ctx.size}`]\n      }), [\n        unref(slots)[\"icon\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_1$T, [\n          renderSlot(_ctx.$slots, \"icon\", {\n            size: iconSizeMap[_ctx.size],\n            fill: \"currentColor\"\n          }, void 0, true)\n        ])) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", _hoisted_2$F, [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ])\n      ], 16);\n    };\n  }\n});\nconst bTag_vue_vue_type_style_index_0_scoped_1477a19f_lang = \"\";\nconst BTag = /* @__PURE__ */ _export_sfc(_sfc_main$15, [[\"__scopeId\", \"data-v-1477a19f\"]]);\nconst _hoisted_1$S = {\n  key: 0,\n  class: \"b-card-rt__tag\"\n};\nconst _hoisted_2$E = {\n  key: 1,\n  class: \"b-card-rt__image-wrapper\"\n};\nconst _hoisted_3$o = { class: \"b-card-rt__header\" };\nconst _hoisted_4$f = { class: \"b-card-rt__type\" };\nconst _hoisted_5$9 = {\n  key: 2,\n  class: \"b-card-rt__authors\"\n};\nconst _hoisted_6$9 = {\n  key: 3,\n  class: \"b-card-rt__footer\"\n};\nconst _sfc_main$14 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-card-rt\",\n  props: {\n    tagLabel: {},\n    title: {},\n    header: {},\n    authors: {},\n    articlesNumber: {},\n    views: {},\n    titleAs: { default: \"h1\" },\n    link: {},\n    statsNumberFormat: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useSafeAttrs(useAttrs());\n    const linkComponent = ref();\n    const { listeners, isSelecting } = useSelectionDetection();\n    const stats = computed(() => {\n      const { views, articlesNumber } = props;\n      return [\n        { label: \"views\", value: views ?? 0 },\n        { label: \"articles\", value: articlesNumber ?? 0 }\n      ];\n    });\n    const shouldRenderFooter = computed(\n      () => !!props.views || !!props.articlesNumber\n    );\n    const authorsText = computed(() => {\n      if (typeof props.authors === \"string\") {\n        return props.authors;\n      }\n      const authors = props.authors ?? [];\n      const formattedAuthorsList = authors.length > 10 ? [...authors.slice(0, 9), `${authors.length - 10} more`, authors.at(-1)] : authors;\n      return formattedAuthorsList.join(\"  ·  \");\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"article\", mergeProps({\n        class: [\"b-card-rt\", [\n          {\n            \"b-card-rt--has-link\": !!_ctx.link\n          }\n        ]]\n      }, unref(attrs), toHandlers(unref(listeners), true), {\n        onClick: _cache[0] || (_cache[0] = //@ts-ignore\n        (...args) => {\n          var _a, _b;\n          return ((_a = linkComponent.value) == null ? void 0 : _a.navigateToLink) && ((_b = linkComponent.value) == null ? void 0 : _b.navigateToLink(...args));\n        })\n      }), [\n        _ctx.tagLabel ? (openBlock(), createElementBlock(\"div\", _hoisted_1$S, [\n          createVNode(BTag, {\n            \"color-scheme\": \"black\",\n            size: \"md\"\n          }, {\n            default: withCtx(() => [\n              createTextVNode(toDisplayString(_ctx.tagLabel), 1)\n            ]),\n            _: 1\n          })\n        ])) : createCommentVNode(\"\", true),\n        _ctx.$slots.image ? (openBlock(), createElementBlock(\"div\", _hoisted_2$E, [\n          renderSlot(_ctx.$slots, \"image\", normalizeProps(guardReactiveProps({\n            style: {\n              \"width\": \"100%\",\n              \"height\": \"100%\",\n              \"object-fit\": \"cover\"\n            }\n          })), void 0, true)\n        ])) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", _hoisted_3$o, [\n          createElementVNode(\"p\", _hoisted_4$f, toDisplayString(_ctx.header), 1)\n        ]),\n        (openBlock(), createBlock(resolveDynamicComponent(_ctx.titleAs), { class: \"b-card-rt__title\" }, {\n          default: withCtx(() => [\n            _ctx.link ? (openBlock(), createBlock(_sfc_main$19, {\n              key: 0,\n              ref_key: \"linkComponent\",\n              ref: linkComponent,\n              \"is-selecting\": unref(isSelecting),\n              link: _ctx.link\n            }, {\n              default: withCtx(() => [\n                createTextVNode(toDisplayString(_ctx.title), 1)\n              ]),\n              _: 1\n            }, 8, [\"is-selecting\", \"link\"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n              createTextVNode(toDisplayString(_ctx.title), 1)\n            ], 64))\n          ]),\n          _: 1\n        })),\n        authorsText.value ? (openBlock(), createElementBlock(\"p\", _hoisted_5$9, toDisplayString(authorsText.value), 1)) : createCommentVNode(\"\", true),\n        shouldRenderFooter.value ? (openBlock(), createElementBlock(\"footer\", _hoisted_6$9, [\n          createVNode(BCardStatsList, {\n            stats: stats.value,\n            format: _ctx.statsNumberFormat\n          }, null, 8, [\"stats\", \"format\"])\n        ])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bCardRt_vue_vue_type_style_index_0_scoped_b453a5cd_lang = \"\";\nconst bCardRt = /* @__PURE__ */ _export_sfc(_sfc_main$14, [[\"__scopeId\", \"data-v-b453a5cd\"]]);\nconst _hoisted_1$R = [\"disabled\", \"aria-pressed\"];\nconst _hoisted_2$D = { class: \"b-chip-filter__label\" };\nconst _sfc_main$13 = /* @__PURE__ */ defineComponent({\n  ...{ inheritAttrs: false },\n  __name: \"b-chip-filter\",\n  props: {\n    colorScheme: { default: \"black\" },\n    label: {},\n    disabled: { type: Boolean },\n    readonly: { type: Boolean },\n    size: { default: \"md\" },\n    modelValue: { type: Boolean, default: false },\n    showTick: { type: Boolean }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const chipFilterRef = ref(null);\n    __expose({\n      button: chipFilterRef\n    });\n    const chipFilterAttrs = useSafeAttrs(useAttrs());\n    const chipSizeToAvatarSizeMap = {\n      xl: \"xs\",\n      lg: \"2xs\",\n      md: \"2xs\",\n      sm: \"3xs\"\n    };\n    const chipSizeToIconSizeMap = {\n      xl: \"lg\",\n      lg: \"md\",\n      md: \"md\",\n      sm: \"sm\"\n    };\n    const avatarSize = computed(() => chipSizeToAvatarSizeMap[props.size]);\n    const renderAvatar = computed(() => !props.showTick && !!slots.avatar);\n    const iconSize = computed(() => chipSizeToIconSizeMap[props.size]);\n    const renderIcon = computed(\n      () => !props.showTick && !!slots.icon && !slots.avatar\n    );\n    function toggleModelValue() {\n      if (props.disabled || props.readonly) {\n        return;\n      }\n      emit(\"update:modelValue\", !props.modelValue);\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"button\", mergeProps({\n        ref_key: \"chipFilterRef\",\n        ref: chipFilterRef,\n        class: [\"b-chip-filter\", [\n          `b-chip-filter--${_ctx.size}`,\n          `b-chip-filter--${_ctx.colorScheme}`,\n          {\n            \"b-chip-filter--selected\": _ctx.modelValue,\n            \"b-chip-filter--disabled\": _ctx.disabled,\n            \"b-chip-filter--readonly\": _ctx.readonly,\n            \"b-chip-filter--has-tick-icon\": _ctx.showTick && _ctx.modelValue,\n            \"b-chip-filter--has-icon\": renderIcon.value,\n            \"b-chip-filter--has-avatar\": renderAvatar.value\n          }\n        ]],\n        disabled: _ctx.disabled,\n        \"aria-pressed\": _ctx.modelValue\n      }, unref(chipFilterAttrs), { onClick: toggleModelValue }), [\n        _ctx.showTick && _ctx.modelValue ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: normalizeClass([\"b-chip-filter__tick-icon\", `b-chip-filter__icon--${_ctx.size}`])\n        }, [\n          createVNode(unref(CheckIcon), { size: iconSize.value }, null, 8, [\"size\"])\n        ], 2)) : createCommentVNode(\"\", true),\n        renderAvatar.value ? (openBlock(), createElementBlock(\"div\", {\n          key: 1,\n          class: normalizeClass([\"b-chip-filter__avatar\", [\n            `b-chip-filter__avatar--${_ctx.size}`,\n            `b-chip-filter__avatar--${_ctx.colorScheme}`,\n            {\n              \"b-chip-filter__avatar--selected\": _ctx.modelValue,\n              \"b-chip-filter__avatar--disabled\": _ctx.disabled\n            }\n          ]])\n        }, [\n          renderSlot(_ctx.$slots, \"avatar\", { size: avatarSize.value }, void 0, true)\n        ], 2)) : createCommentVNode(\"\", true),\n        renderIcon.value ? (openBlock(), createElementBlock(\"div\", {\n          key: 2,\n          class: normalizeClass([\"b-chip-filter__icon\", [\n            `b-chip-filter__icon--${_ctx.size}`,\n            {\n              \"b-chip-filter__icon--selected\": _ctx.modelValue\n            }\n          ]])\n        }, [\n          renderSlot(_ctx.$slots, \"icon\", {\n            size: iconSize.value,\n            fill: \"currentColor\"\n          }, void 0, true)\n        ], 2)) : createCommentVNode(\"\", true),\n        createElementVNode(\"span\", _hoisted_2$D, toDisplayString(_ctx.label), 1)\n      ], 16, _hoisted_1$R);\n    };\n  }\n});\nconst bChipFilter_vue_vue_type_style_index_0_scoped_d5c5b023_lang = \"\";\nconst bChipFilter = /* @__PURE__ */ _export_sfc(_sfc_main$13, [[\"__scopeId\", \"data-v-d5c5b023\"]]);\nconst _hoisted_1$Q = [\"id\", \"aria-labelledby\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"onKeydown\"];\nconst _hoisted_2$C = [\"id\"];\nconst _hoisted_3$n = { class: \"b-chip-select__empty-message\" };\nconst _sfc_main$12 = /* @__PURE__ */ defineComponent({\n  ...{ inheritAttrs: false },\n  __name: \"b-chip-select\",\n  props: {\n    label: {},\n    options: {},\n    modelValue: {},\n    variant: { default: \"single\" },\n    loading: { type: Boolean },\n    emptyMessage: { default: \"No options available\" },\n    size: { default: \"lg\" },\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean },\n    readonly: { type: Boolean }\n  },\n  emits: [\"update:modelValue\", \"change\"],\n  setup(__props, { expose: __expose, emit: emits }) {\n    const props = __props;\n    const slots = useSlots();\n    const chipSelectAttrs = useSafeAttrs(useAttrs());\n    const selectRef = ref(null);\n    const triggerRef = ref(null);\n    const listboxRef = ref(null);\n    const labelId = generateUniqueId();\n    const internalModel = ref(props.modelValue);\n    const isExpanded = ref(false);\n    __expose({\n      select: selectRef,\n      trigger: triggerRef\n    });\n    const chipSizeToAvatarSizeMap = {\n      xl: \"xs\",\n      lg: \"2xs\"\n    };\n    const chipSizeToIconSizeMap = {\n      xl: \"lg\",\n      lg: \"md\"\n    };\n    const chipSizeToChevronSizeMap = {\n      xl: \"md\",\n      lg: \"sm\"\n    };\n    const avatarSize = computed(() => chipSizeToAvatarSizeMap[props.size]);\n    const iconSize = computed(() => chipSizeToIconSizeMap[props.size]);\n    const renderIcon = computed(() => !!slots.icon && !slots.avatar);\n    const renderAvatar = computed(() => !!slots.avatar);\n    const chevronSize = computed(() => chipSizeToChevronSizeMap[props.size]);\n    const proxiedModel = computed({\n      get: () => internalModel.value,\n      set: (value) => {\n        internalModel.value = value;\n        emits(\"update:modelValue\", value);\n        emits(\"change\", value);\n      }\n    });\n    const displaySelection = computed(() => {\n      var _a;\n      if (props.variant === \"single\" && typeof proxiedModel.value === \"string\" && proxiedModel.value.length > 0) {\n        return ((_a = props.options.find((option) => option.value === internalModel.value)) == null ? void 0 : _a.label) ?? \"\";\n      }\n      if (props.variant === \"multiple\" && proxiedModel.value.length > 0) {\n        return `${proxiedModel.value.length} selected`;\n      }\n      return \"\";\n    });\n    const captionMessage = computed(() => {\n      return props.loading ? \"Loading...\" : \"\";\n    });\n    const isSelected = computed(() => {\n      if (props.variant === \"multiple\") {\n        return proxiedModel.value.length > 0;\n      } else {\n        return proxiedModel.value !== \"\";\n      }\n    });\n    onClickOutside(listboxRef, closeListbox, { ignore: [triggerRef] });\n    const { listboxId, triggerId } = createListboxIds();\n    const { focused } = useFocusWithin(selectRef);\n    const { floatingStyles } = useListboxFloating({\n      listboxRef,\n      referenceRef: triggerRef\n    });\n    const {\n      activeDescendantId,\n      getActiveDescendant,\n      getActiveDescendantValue,\n      goToNextDescendant,\n      goToPreviousDescendant,\n      goToLastDescendant,\n      goToFirstDescendant,\n      resetDescendant\n    } = useActiveDescendant({\n      descendants: toRef(props, \"options\")\n    });\n    watch(\n      () => activeDescendantId.value,\n      (value) => {\n        if (value) {\n          const activeDescendant = getActiveDescendant();\n          activeDescendant == null ? void 0 : activeDescendant.scrollIntoView({\n            block: \"nearest\",\n            inline: \"nearest\"\n          });\n        }\n      }\n    );\n    watch(focused, (isFocused) => {\n      if (!isFocused) {\n        closeListbox();\n      }\n    });\n    function toggleListbox() {\n      if (!props.disabled && !props.readonly) {\n        isExpanded.value = !isExpanded.value;\n      }\n    }\n    function openListbox() {\n      if (!props.disabled && !props.readonly) {\n        isExpanded.value = true;\n      }\n    }\n    function closeListbox() {\n      isExpanded.value = false;\n      resetDescendant();\n    }\n    function isValueSelected(value) {\n      if (props.variant === \"multiple\") {\n        return proxiedModel.value.includes(value);\n      } else {\n        return proxiedModel.value === value;\n      }\n    }\n    function onOptionSelected(value) {\n      if (props.variant === \"single\") {\n        proxiedModel.value = value;\n        closeListbox();\n      }\n      if (props.variant === \"multiple\") {\n        if (isValueSelected(value)) {\n          proxiedModel.value = proxiedModel.value.filter(\n            (v) => v !== value\n          );\n        } else {\n          proxiedModel.value = [...proxiedModel.value, value];\n        }\n      }\n    }\n    function onArrowKey(direction) {\n      if (!isExpanded.value) {\n        openListbox();\n      }\n      if (direction === \"down\") {\n        goToNextDescendant();\n      } else {\n        goToPreviousDescendant();\n      }\n    }\n    function onEnterOrSpaceKey() {\n      if (isExpanded.value) {\n        const value = getActiveDescendantValue();\n        if (value) {\n          onOptionSelected(value);\n        } else {\n          closeListbox();\n        }\n      } else {\n        openListbox();\n      }\n    }\n    function onClearAll() {\n      proxiedModel.value = [];\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        ref_key: \"selectRef\",\n        ref: selectRef,\n        class: \"b-chip-select\",\n        onMousedown: _cache[5] || (_cache[5] = withModifiers(() => {\n        }, [\"prevent\"]))\n      }, [\n        createElementVNode(\"button\", mergeProps({\n          id: unref(triggerId),\n          ref_key: \"triggerRef\",\n          ref: triggerRef,\n          role: \"combobox\",\n          class: [\"b-chip-select__trigger\", [\n            `b-chip-select__trigger--${_ctx.size}`,\n            `b-chip-select__trigger--${_ctx.colorScheme}`,\n            {\n              \"b-chip-select__trigger--selected\": isSelected.value,\n              \"b-chip-select__trigger--disabled\": _ctx.disabled,\n              \"b-chip-select__trigger--readonly\": _ctx.readonly,\n              \"b-chip-select__trigger--has-icon\": renderIcon.value,\n              \"b-chip-select__trigger--has-avatar\": renderAvatar.value\n            }\n          ]],\n          \"aria-labelledby\": unref(labelId),\n          \"aria-controls\": unref(listboxId),\n          \"aria-expanded\": isExpanded.value,\n          \"aria-haspopup\": \"listbox\",\n          \"aria-activedescendant\": unref(activeDescendantId)\n        }, unref(chipSelectAttrs), {\n          onClick: toggleListbox,\n          onKeydown: [\n            withKeys(withModifiers(closeListbox, [\"prevent\"]), [\"escape\"]),\n            _cache[0] || (_cache[0] = withKeys(withModifiers(($event) => onArrowKey(\"up\"), [\"prevent\"]), [\"up\"])),\n            _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => onArrowKey(\"down\"), [\"prevent\"]), [\"down\"])),\n            withKeys(withModifiers(onEnterOrSpaceKey, [\"prevent\"]), [\"enter\"]),\n            withKeys(withModifiers(onEnterOrSpaceKey, [\"prevent\"]), [\"space\"]),\n            _cache[2] || (_cache[2] = withKeys(withModifiers(\n              //@ts-ignore\n              (...args) => unref(goToFirstDescendant) && unref(goToFirstDescendant)(...args),\n              [\"prevent\"]\n            ), [\"home\"])),\n            _cache[3] || (_cache[3] = withKeys(withModifiers(\n              //@ts-ignore\n              (...args) => unref(goToLastDescendant) && unref(goToLastDescendant)(...args),\n              [\"prevent\"]\n            ), [\"end\"]))\n          ]\n        }), [\n          renderAvatar.value ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"b-chip-select__avatar\", [\n              `b-chip-select__avatar--${_ctx.size}`,\n              `b-chip-select__avatar--${_ctx.colorScheme}`,\n              { \"b-chip-select__avatar--disabled\": _ctx.disabled }\n            ]])\n          }, [\n            renderSlot(_ctx.$slots, \"avatar\", { size: avatarSize.value })\n          ], 2)) : createCommentVNode(\"\", true),\n          renderIcon.value ? (openBlock(), createElementBlock(\"div\", {\n            key: 1,\n            class: normalizeClass([\"b-chip-select__icon\", `b-chip-select__icon--${_ctx.size}`])\n          }, [\n            renderSlot(_ctx.$slots, \"icon\", {\n              size: iconSize.value,\n              fill: \"currentColor\"\n            })\n          ], 2)) : createCommentVNode(\"\", true),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-chip-select__texts\", `b-chip-select__texts--${_ctx.size}`])\n          }, [\n            createElementVNode(\"span\", {\n              id: unref(labelId),\n              class: normalizeClass([\"b-chip-select__label\", [\n                `b-chip-select__label--${_ctx.size}`,\n                { \"b-chip-select__label--small\": isSelected.value }\n              ]])\n            }, toDisplayString(_ctx.label), 11, _hoisted_2$C),\n            createElementVNode(\"span\", {\n              class: normalizeClass([\"b-chip-select__selected-value\", {\n                \"b-chip-select__selected-value--visible\": displaySelection.value.length\n              }])\n            }, toDisplayString(displaySelection.value), 3)\n          ], 2),\n          !_ctx.loading ? (openBlock(), createElementBlock(\"div\", {\n            key: 2,\n            class: normalizeClass([\"b-chip-select__chevron\", `b-chip-select__chevron--${_ctx.size}`])\n          }, [\n            isExpanded.value ? (openBlock(), createBlock(unref(ChevronUpIcon), {\n              key: 0,\n              size: chevronSize.value\n            }, null, 8, [\"size\"])) : (openBlock(), createBlock(unref(ChevronDownIcon), {\n              key: 1,\n              size: chevronSize.value\n            }, null, 8, [\"size\"]))\n          ], 2)) : (openBlock(), createElementBlock(\"div\", {\n            key: 3,\n            class: normalizeClass([\"b-chip-select__spinner\", `b-chip-select__spinner--${_ctx.size}`])\n          }, [\n            createVNode(unref(BSpinner), { size: chevronSize.value }, null, 8, [\"size\"])\n          ], 2))\n        ], 16, _hoisted_1$Q),\n        isExpanded.value ? (openBlock(), createBlock(unref(BListbox), {\n          key: 0,\n          id: unref(listboxId),\n          ref_key: \"listboxRef\",\n          ref: listboxRef,\n          modelValue: proxiedModel.value,\n          \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event) => proxiedModel.value = $event),\n          class: \"b-chip-select__listbox\",\n          style: normalizeStyle(unref(floatingStyles)),\n          variant: props.variant === \"multiple\" ? \"checkbox\" : \"ticks\",\n          \"multi-selectable\": props.variant === \"multiple\",\n          options: _ctx.loading ? [] : _ctx.options,\n          \"caption-message\": captionMessage.value,\n          \"aria-labelledby\": unref(triggerId),\n          onClearAll,\n          onClickSelected: onOptionSelected\n        }, createSlots({ _: 2 }, [\n          _ctx.options.length === 0 && !_ctx.loading ? {\n            name: \"empty-content\",\n            fn: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_3$n, toDisplayString(_ctx.emptyMessage), 1)\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1032, [\"id\", \"modelValue\", \"style\", \"variant\", \"multi-selectable\", \"options\", \"caption-message\", \"aria-labelledby\"])) : createCommentVNode(\"\", true)\n      ], 544);\n    };\n  }\n});\nconst bChipSelect_vue_vue_type_style_index_0_lang = \"\";\nconst CONTEXTUAL_MENU_STATE = Symbol(\n  \"ContextualMenuState\"\n);\nconst PLACEMENT_VALUES = [\n  \"bottom-start\",\n  \"bottom-end\",\n  \"top-start\",\n  \"top-end\",\n  \"left-start\",\n  \"left-end\",\n  \"right-start\",\n  \"right-end\"\n];\nconst _hoisted_1$P = [\"onKeydown\"];\nconst MENU_OFFSET = 4;\nconst SCREEN_BORDER_PADDING = 10;\nconst _sfc_main$11 = /* @__PURE__ */ defineComponent({\n  __name: \"b-contextual-menu\",\n  props: {\n    placement: { default: \"bottom-end\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const contextualMenuRef = ref(null);\n    const triggerRef = ref(null);\n    const contentRef = ref(null);\n    const menuListId = `contextual-menu-${generateUniqueId()}`;\n    const menuAttrs = useSafeAttrs(useAttrs());\n    const isDisplayed = ref(false);\n    const focusLastItem = ref(false);\n    const shouldAddAutoplacementMiddleware = computed(\n      () => props.placement === \"auto\" ? autoPlacement({ allowedPlacements: PLACEMENT_VALUES }) : flip({\n        fallbackAxisSideDirection: \"end\"\n      })\n    );\n    const middleware = computed(() => [\n      shouldAddAutoplacementMiddleware.value,\n      offset({\n        mainAxis: MENU_OFFSET\n      }),\n      shift({\n        limiter: limitShift(),\n        padding: SCREEN_BORDER_PADDING\n      })\n    ]);\n    const placement = computed(\n      () => props.placement === \"auto\" ? void 0 : props.placement\n    );\n    const { floatingStyles } = useFloating(triggerRef, contentRef, {\n      placement,\n      middleware,\n      whileElementsMounted: autoUpdate\n    });\n    onClickOutside(contextualMenuRef, close);\n    function onArrowKeys(event) {\n      if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n        focusLastItem.value = event.key === \"ArrowUp\";\n        isDisplayed.value = true;\n      }\n    }\n    function toggle() {\n      isDisplayed.value = !isDisplayed.value;\n    }\n    function close() {\n      isDisplayed.value = false;\n      focusLastItem.value = false;\n    }\n    provide(\n      CONTEXTUAL_MENU_STATE,\n      computed(() => ({\n        menuListId,\n        isDisplayed: isDisplayed.value,\n        focusLastItem: focusLastItem.value,\n        close\n      }))\n    );\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        ref_key: \"contextualMenuRef\",\n        ref: contextualMenuRef,\n        class: \"b-contextual-menu\",\n        onKeydown: [\n          withKeys(close, [\"escape\"]),\n          withKeys(close, [\"tab\"])\n        ]\n      }, [\n        createElementVNode(\"div\", {\n          ref_key: \"triggerRef\",\n          ref: triggerRef,\n          class: \"b-contextual-menu__trigger\"\n        }, [\n          renderSlot(_ctx.$slots, \"trigger\", {\n            \"aria-Controls\": menuListId,\n            \"aria-Expanded\": isDisplayed.value,\n            onClick: toggle,\n            onKeydown: onArrowKeys\n          }, void 0, true)\n        ], 512),\n        isDisplayed.value ? (openBlock(), createElementBlock(\"div\", mergeProps({\n          key: 0,\n          ref_key: \"contentRef\",\n          ref: contentRef\n        }, unref(menuAttrs), {\n          class: \"b-contextual-menu__content\",\n          style: unref(floatingStyles)\n        }), [\n          renderSlot(_ctx.$slots, \"content\", {}, void 0, true)\n        ], 16)) : createCommentVNode(\"\", true)\n      ], 40, _hoisted_1$P);\n    };\n  }\n});\nconst bContextualMenu_vue_vue_type_style_index_0_scoped_1ac52696_lang = \"\";\nconst BContextualMenu = /* @__PURE__ */ _export_sfc(_sfc_main$11, [[\"__scopeId\", \"data-v-1ac52696\"]]);\nconst _hoisted_1$O = {\n  key: 0,\n  class: \"b-contextual-menu-item__icon\"\n};\nconst _hoisted_2$B = { class: \"b-contextual-menu-item__label\" };\nconst _sfc_main$10 = /* @__PURE__ */ defineComponent({\n  __name: \"b-contextual-menu-item\",\n  props: {\n    item: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const menuState = inject(CONTEXTUAL_MENU_STATE);\n    const linkProps = computed(\n      () => linkHrefParser({ as: props.item.as, to: props.item.to })\n    );\n    const onPress = (event) => {\n      var _a, _b;\n      if (props.item.disabled) {\n        return;\n      }\n      (_b = (_a = props.item).onClick) == null ? void 0 : _b.call(_a, event);\n      menuState == null ? void 0 : menuState.value.close();\n    };\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.item.as ?? \"button\"), mergeProps({\n        class: [\"b-contextual-menu-item\", {\n          \"b-contextual-menu-item--disabled\": _ctx.item.disabled\n        }]\n      }, linkProps.value, {\n        role: \"menuitem\",\n        \"aria-disabled\": !!_ctx.item.disabled,\n        tabindex: -1,\n        onClick: onPress,\n        onKeydown: [\n          withKeys(withModifiers(onPress, [\"prevent\"]), [\"enter\"]),\n          withKeys(withModifiers(onPress, [\"prevent\"]), [\"space\"])\n        ]\n      }), {\n        default: withCtx(() => [\n          !!_ctx.item.iconComponent ? (openBlock(), createElementBlock(\"div\", _hoisted_1$O, [\n            (openBlock(), createBlock(resolveDynamicComponent(_ctx.item.iconComponent), {\n              fill: \"currentColor\",\n              size: \"md\"\n            }))\n          ])) : createCommentVNode(\"\", true),\n          createElementVNode(\"span\", _hoisted_2$B, toDisplayString(_ctx.item.label), 1)\n        ]),\n        _: 1\n      }, 16, [\"class\", \"aria-disabled\", \"onKeydown\"]);\n    };\n  }\n});\nconst bContextualMenuItem_vue_vue_type_style_index_0_scoped_fee808c3_lang = \"\";\nconst BContextualMenuItem = /* @__PURE__ */ _export_sfc(_sfc_main$10, [[\"__scopeId\", \"data-v-fee808c3\"]]);\nconst _hoisted_1$N = {\n  key: 0,\n  class: \"b-contextual-menu-content__title\"\n};\nconst _hoisted_2$A = [\"id\", \"aria-activedescendant\"];\nconst _sfc_main$$ = /* @__PURE__ */ defineComponent({\n  __name: \"b-contextual-menu-content\",\n  props: {\n    title: { default: void 0 },\n    items: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const menuState = inject(CONTEXTUAL_MENU_STATE);\n    const activeDescendantId = ref(void 0);\n    const genActiveDescendantId = (hash, index) => `contextual-menu-item-${hash}-option-${index}`;\n    const menuItems = computed(() => {\n      return props.items.map((child, index) => ({\n        ...child,\n        id: genActiveDescendantId(generateUniqueId(), index)\n      }));\n    });\n    const menuAttrs = useSafeAttrs(useAttrs());\n    const currentMenuItemIndex = ref(-1);\n    const menuItemsRef = ref(null);\n    const menuItemsNodes = computed(() => {\n      var _a;\n      return [\n        ...((_a = menuItemsRef.value) == null ? void 0 : _a.querySelectorAll(\n          '[role=\"menuitem\"][aria-disabled=\"false\"]'\n        )) ?? []\n      ];\n    });\n    watchEffect(() => {\n      var _a;\n      if ((_a = menuState == null ? void 0 : menuState.value) == null ? void 0 : _a.isDisplayed) {\n        nextTick(() => {\n          var _a2;\n          currentMenuItemIndex.value = ((_a2 = menuState == null ? void 0 : menuState.value) == null ? void 0 : _a2.focusLastItem) ? menuItemsNodes.value.length - 1 : 0;\n        });\n      }\n    });\n    watch(currentMenuItemIndex, () => {\n      var _a;\n      const nextItem = (_a = menuItemsNodes.value) == null ? void 0 : _a[currentMenuItemIndex.value];\n      if (nextItem) {\n        menuItemsNodes.value.forEach((node) => node.setAttribute(\"tabindex\", \"-1\"));\n        nextItem.setAttribute(\"tabindex\", \"0\");\n        nextItem.focus();\n      }\n    });\n    function focusPreviousItem() {\n      const nextIndex = currentMenuItemIndex.value - 1;\n      currentMenuItemIndex.value = nextIndex < 0 ? (menuItemsNodes.value.length ?? 0) - 1 : nextIndex;\n    }\n    function focusNextItem() {\n      currentMenuItemIndex.value = (currentMenuItemIndex.value + 1) % (menuItemsNodes.value.length ?? 0);\n    }\n    function handleItemHover(event) {\n      const nextIndex = menuItemsNodes.value.indexOf(event.target);\n      if (nextIndex >= 0) {\n        currentMenuItemIndex.value = nextIndex;\n      }\n    }\n    return (_ctx, _cache) => {\n      var _a;\n      return openBlock(), createElementBlock(\"div\", mergeProps({ class: \"b-contextual-menu-content\" }, unref(menuAttrs)), [\n        _ctx.title ? (openBlock(), createElementBlock(\"div\", _hoisted_1$N, toDisplayString(_ctx.title), 1)) : createCommentVNode(\"\", true),\n        createElementVNode(\"ul\", {\n          id: (_a = unref(menuState)) == null ? void 0 : _a.menuListId,\n          ref_key: \"menuItemsRef\",\n          ref: menuItemsRef,\n          class: \"b-contextual-menu-content__list\",\n          role: \"menu\",\n          \"aria-activedescendant\": activeDescendantId.value\n        }, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(menuItems.value, (item, index) => {\n            return openBlock(), createElementBlock(\"li\", {\n              key: item.label + index\n            }, [\n              createVNode(BContextualMenuItem, {\n                item,\n                onKeydown: [\n                  withKeys(withModifiers(focusPreviousItem, [\"prevent\"]), [\"up\"]),\n                  withKeys(withModifiers(focusNextItem, [\"prevent\"]), [\"down\"])\n                ],\n                onMouseenter: _cache[0] || (_cache[0] = ($event) => handleItemHover($event)),\n                onFocus: ($event) => activeDescendantId.value = item.id\n              }, null, 8, [\"item\", \"onKeydown\", \"onFocus\"])\n            ]);\n          }), 128))\n        ], 8, _hoisted_2$A)\n      ], 16);\n    };\n  }\n});\nconst bContextualMenuContent_vue_vue_type_style_index_0_scoped_6485fe1b_lang = \"\";\nconst BContextualMenuContent = /* @__PURE__ */ _export_sfc(_sfc_main$$, [[\"__scopeId\", \"data-v-6485fe1b\"]]);\nconst _hoisted_1$M = [\"for\"];\nconst _hoisted_2$z = { class: \"b-form-control__control\" };\nconst _hoisted_3$m = {\n  key: 0,\n  class: \"b-form-control__suffix\"\n};\nconst _hoisted_4$e = {\n  key: 0,\n  class: \"b-form-control__details\"\n};\nconst _hoisted_5$8 = { class: \"b-form-control__messages\" };\nconst _hoisted_6$8 = {\n  key: 0,\n  class: \"b-form-control__details-right-slot\"\n};\nconst _sfc_main$_ = /* @__PURE__ */ defineComponent({\n  __name: \"b-form-control\",\n  props: {\n    colorScheme: { default: \"black\" },\n    label: { default: void 0 },\n    invalid: { type: Boolean, default: false },\n    hint: { default: void 0 },\n    readonly: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false },\n    labelFor: {},\n    populated: { type: Boolean },\n    height: { default: \"fixed\" },\n    noPaddingRight: { type: Boolean },\n    showCursorPointer: { type: Boolean, default: false }\n  },\n  emits: [\"click-form-control\"],\n  setup(__props, { expose: __expose, emit: _emits }) {\n    const props = __props;\n    const formControlRef = ref(null);\n    const { focused } = useFocusWithin(formControlRef);\n    __expose({\n      formControlRef\n    });\n    const slots = useSlots();\n    const hasSmallLabel = computed(() => {\n      if (props.populated) {\n        return true;\n      }\n      if (props.disabled || props.readonly) {\n        return false;\n      }\n      return focused.value;\n    });\n    const hasErrorSlotContent = computed(() => {\n      return props.invalid && !!slots.error;\n    });\n    const hasDetails = computed(() => {\n      return !!slots[\"details-right\"] || !!hasErrorSlotContent.value || !!props.hint;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", null, [\n        createElementVNode(\"div\", {\n          ref_key: \"formControlRef\",\n          ref: formControlRef,\n          class: normalizeClass([\"b-form-control\", [\n            `b-form-control--${_ctx.colorScheme}`,\n            {\n              \"b-form-control--invalid\": _ctx.invalid,\n              \"b-form-control--disabled\": _ctx.disabled,\n              \"b-form-control--readonly\": _ctx.readonly,\n              \"b-form-control--auto-height\": _ctx.height === \"auto\",\n              \"b-form-control--with-suffix\": !!_ctx.$slots.suffix,\n              \"b-form-control--no-padding-right\": !!_ctx.noPaddingRight,\n              \"b-form-control--cursor-pointer\": _ctx.showCursorPointer\n            }\n          ]]),\n          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click-form-control\"))\n        }, [\n          createElementVNode(\"label\", {\n            class: normalizeClass([\"b-form-control__label\", {\n              \"b-form-control__label--small\": hasSmallLabel.value\n            }]),\n            for: _ctx.labelFor\n          }, toDisplayString(_ctx.label), 11, _hoisted_1$M),\n          createElementVNode(\"div\", _hoisted_2$z, [\n            renderSlot(_ctx.$slots, \"control\", {}, void 0, true)\n          ]),\n          unref(slots).suffix ? (openBlock(), createElementBlock(\"div\", _hoisted_3$m, [\n            renderSlot(_ctx.$slots, \"suffix\", {}, void 0, true)\n          ])) : createCommentVNode(\"\", true)\n        ], 2),\n        hasDetails.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4$e, [\n          createElementVNode(\"div\", _hoisted_5$8, [\n            hasErrorSlotContent.value ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: normalizeClass([\"b-form-control__error\", { \"b-form-control__error--with-hint\": !!_ctx.hint }])\n            }, [\n              renderSlot(_ctx.$slots, \"error\", {}, void 0, true)\n            ], 2)) : createCommentVNode(\"\", true),\n            !!_ctx.hint ? (openBlock(), createElementBlock(\"div\", {\n              key: 1,\n              class: normalizeClass([\"b-form-control__hint\", [`b-form-control__hint--${_ctx.colorScheme}`]])\n            }, toDisplayString(_ctx.hint), 3)) : createCommentVNode(\"\", true)\n          ]),\n          unref(slots)[\"details-right\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_6$8, [\n            renderSlot(_ctx.$slots, \"details-right\", {}, void 0, true)\n          ])) : createCommentVNode(\"\", true)\n        ])) : createCommentVNode(\"\", true)\n      ]);\n    };\n  }\n});\nconst bFormControl_vue_vue_type_style_index_0_scoped_ffddd276_lang = \"\";\nconst BFormControl = /* @__PURE__ */ _export_sfc(_sfc_main$_, [[\"__scopeId\", \"data-v-ffddd276\"]]);\nfunction dateToFormatedDateString(date) {\n  const day = date.getDate().toString().padStart(2, \"0\");\n  const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n  const year = date.getFullYear();\n  return `${day}/${month}/${year}`;\n}\nfunction stringToDate(string, separator) {\n  const [day, month, year] = string.split(separator);\n  return new Date(\n    Number.parseInt(year),\n    Number.parseInt(month) - 1,\n    Number.parseInt(day)\n  );\n}\nconst _hoisted_1$L = [\"id\", \"value\", \"disabled\", \"readonly\", \"onClick\", \"onKeydown\"];\nconst DATE_PLACEHOLDER = \"DD/MM/YYYY\";\nconst YEAR_PLACEHOLDER = \"YYYY\";\nconst MONTH_PLACEHOLDER = \"MM\";\nconst DAY_PLACEHOLDER = \"DD\";\nconst SEPARATOR = \"/\";\nconst _sfc_main$Z = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-date-input\",\n  props: {\n    invalid: { type: Boolean, default: false },\n    readonly: { type: Boolean, default: false },\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean, default: false },\n    modelValue: {},\n    errorMessage: { default: void 0 },\n    label: {},\n    hint: { default: void 0 }\n  },\n  emits: [\"update:modelValue\", \"focus\", \"blur\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const NonValidCharsRegexp = new RegExp(`[^0-9DMY${SEPARATOR}]`, \"g\");\n    const inputAttrs = useSafeAttrs(useAttrs());\n    const id = generateUniqueId();\n    const dateInputRef = ref(null);\n    const isFocused = ref(false);\n    const selectedDatePart = ref(0);\n    const typedDigits = ref(0);\n    const internalModel = ref(DATE_PLACEHOLDER);\n    const dateParts = DATE_PLACEHOLDER.split(SEPARATOR).map(\n      (placeholder) => reactive({\n        placeholder,\n        start: DATE_PLACEHOLDER.indexOf(placeholder),\n        end: DATE_PLACEHOLDER.indexOf(placeholder) + placeholder.length,\n        value: null\n      })\n    );\n    const currentDatePart = computed(() => dateParts[selectedDatePart.value]);\n    const dayValue = computed(\n      () => {\n        var _a;\n        return (_a = dateParts.find((part) => part.placeholder === DAY_PLACEHOLDER)) == null ? void 0 : _a.value;\n      }\n    );\n    const monthValue = computed(\n      () => {\n        var _a;\n        return (_a = dateParts.find((part) => part.placeholder === MONTH_PLACEHOLDER)) == null ? void 0 : _a.value;\n      }\n    );\n    const yearValue = computed(\n      () => {\n        var _a;\n        return (_a = dateParts.find((part) => part.placeholder === YEAR_PLACEHOLDER)) == null ? void 0 : _a.value;\n      }\n    );\n    const populated = computed(\n      () => internalModel.value !== DATE_PLACEHOLDER || isFocused.value\n    );\n    watch(\n      () => props.modelValue,\n      () => {\n        if (props.modelValue) {\n          const stringDate = dateToFormatedDateString(props.modelValue);\n          dateParts.forEach(\n            (part) => part.value = Number(stringDate.slice(part.start, part.end))\n          );\n          updateInternalModel();\n        }\n      },\n      { immediate: true }\n    );\n    watch(\n      dateParts.map((part) => () => part.value),\n      updateInternalModel\n    );\n    watch(selectedDatePart, () => {\n      selectRange();\n      typedDigits.value = 0;\n    });\n    function updateInternalModel() {\n      if ((dayValue.value ?? 0) > getMaxDatePart(DAY_PLACEHOLDER)) {\n        const dayPart = dateParts.find(\n          (part) => part.placeholder === DAY_PLACEHOLDER\n        );\n        if (dayPart) {\n          dayPart.value = getMaxDatePart(DAY_PLACEHOLDER);\n        }\n      }\n      internalModel.value = dateParts.map(\n        (part) => part.value !== null ? part.value.toString().padStart(part.end - part.start, \"0\") : part.placeholder\n      ).join(SEPARATOR);\n      setTimeout(() => {\n        selectRange();\n      }, 0);\n    }\n    function getMaxDatePart(placeholder) {\n      switch (placeholder) {\n        case DAY_PLACEHOLDER: {\n          if (yearValue.value && monthValue.value) {\n            return new Date(yearValue.value, monthValue.value, 0).getDate();\n          }\n          if (monthValue.value) {\n            return new Date(2e3, monthValue.value, 0).getDate();\n          }\n          return 31;\n        }\n        case MONTH_PLACEHOLDER: {\n          return 12;\n        }\n        case YEAR_PLACEHOLDER: {\n          return 9999;\n        }\n        default: {\n          return 0;\n        }\n      }\n    }\n    function selectRange() {\n      var _a;\n      (_a = dateInputRef.value) == null ? void 0 : _a.setSelectionRange(\n        currentDatePart.value.start,\n        currentDatePart.value.end\n      );\n    }\n    function handleFocus(event) {\n      selectRange();\n      isFocused.value = true;\n      emit(\"focus\", event);\n    }\n    function handleBlur(event) {\n      isFocused.value = false;\n      emit(\"blur\", event);\n      if (internalModel.value === DATE_PLACEHOLDER) {\n        emit(\"update:modelValue\", null);\n      } else {\n        const date = stringToDate(internalModel.value, SEPARATOR);\n        if (date.toString() !== \"Invalid Date\") {\n          emit(\"update:modelValue\", date);\n        }\n      }\n    }\n    function handleClick() {\n      var _a;\n      const cursorPosition = ((_a = dateInputRef.value) == null ? void 0 : _a.selectionStart) ?? 0;\n      const index = dateParts.findIndex(\n        (part) => cursorPosition >= part.start && cursorPosition <= part.end\n      );\n      selectedDatePart.value = index || selectedDatePart.value;\n      selectRange();\n    }\n    function handleKey(event) {\n      const isNumber = /^\\d$/i.test(event.key);\n      const isTab = event.key === \"Tab\";\n      if (isTab) {\n        return;\n      }\n      event.preventDefault();\n      if (isNumber) {\n        updateDatePart(Number(event.key));\n      }\n      resetOnSpecialCharacter(event.key);\n    }\n    function resetOnSpecialCharacter(key) {\n      setTimeout(() => {\n        var _a;\n        if (dateInputRef.value && (key === \"Dead\" || // \"Dead\" is the key value for ´ ¨ `\n        NonValidCharsRegexp.test(((_a = dateInputRef.value) == null ? void 0 : _a.value) ?? \"\"))) {\n          dateInputRef.value.value = internalModel.value;\n        }\n      });\n    }\n    function handleTab(event) {\n      if (event.shiftKey) {\n        if (selectedDatePart.value !== 0) {\n          selectPreviousDatePart();\n          event.preventDefault();\n        }\n      } else {\n        if (selectedDatePart.value !== 2) {\n          selectNextDatePart();\n          event.preventDefault();\n        }\n      }\n    }\n    function updateDatePart(newDigit) {\n      const currentDatePartLength = currentDatePart.value.end - currentDatePart.value.start;\n      if (currentDatePart.value.value === null || typedDigits.value === 0) {\n        currentDatePart.value.value = newDigit;\n      } else {\n        let newValue = currentDatePart.value.value * 10 + newDigit;\n        if (newValue.toString().length > currentDatePartLength) {\n          newValue = Number(newValue.toString().slice(1));\n        }\n        if (newValue > getMaxDatePart(currentDatePart.value.placeholder)) {\n          selectNextDatePart();\n          return;\n        } else {\n          currentDatePart.value.value = newValue;\n        }\n      }\n      typedDigits.value++;\n      if (typedDigits.value === currentDatePartLength) {\n        selectNextDatePart();\n      }\n    }\n    function increaseDatePart() {\n      if (currentDatePart.value.value === null) {\n        if (currentDatePart.value.placeholder === YEAR_PLACEHOLDER) {\n          currentDatePart.value.value = (/* @__PURE__ */ new Date()).getFullYear();\n        } else {\n          currentDatePart.value.value = 1;\n        }\n      } else {\n        const isMaxValue = currentDatePart.value.value === getMaxDatePart(currentDatePart.value.placeholder);\n        if (isMaxValue) {\n          currentDatePart.value.value = 1;\n        } else {\n          currentDatePart.value.value++;\n        }\n      }\n    }\n    const decreaseDatePart = () => {\n      const maxValue = getMaxDatePart(currentDatePart.value.placeholder);\n      if (currentDatePart.value.value === null) {\n        if (currentDatePart.value.placeholder === YEAR_PLACEHOLDER) {\n          currentDatePart.value.value = (/* @__PURE__ */ new Date()).getFullYear();\n        } else {\n          currentDatePart.value.value = maxValue;\n        }\n      } else {\n        const isMinValue = currentDatePart.value.value === 1;\n        if (isMinValue) {\n          currentDatePart.value.value = maxValue;\n        } else {\n          currentDatePart.value.value--;\n        }\n      }\n    };\n    function selectNextDatePart() {\n      selectedDatePart.value = (selectedDatePart.value + 1) % 3;\n    }\n    function selectPreviousDatePart() {\n      selectedDatePart.value--;\n      if (selectedDatePart.value < 0) {\n        selectedDatePart.value = 2;\n      }\n    }\n    function deleteDatePart() {\n      currentDatePart.value.value = null;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(BFormControl, {\n        \"label-for\": unref(id),\n        populated: populated.value,\n        label: _ctx.label,\n        invalid: _ctx.invalid,\n        \"error-message\": _ctx.errorMessage,\n        \"color-scheme\": _ctx.colorScheme,\n        disabled: _ctx.disabled,\n        readonly: _ctx.readonly,\n        hint: _ctx.hint\n      }, {\n        control: withCtx(() => [\n          createElementVNode(\"input\", mergeProps({\n            id: unref(id),\n            ref_key: \"dateInputRef\",\n            ref: dateInputRef,\n            value: internalModel.value,\n            disabled: _ctx.disabled,\n            readonly: _ctx.readonly,\n            class: [{ \"b-date-input--populated\": populated.value }, \"b-date-input\"],\n            type: \"text\"\n          }, unref(inputAttrs), {\n            inputmode: \"numeric\",\n            onDrop: _cache[0] || (_cache[0] = withModifiers(() => {\n            }, [\"prevent\"])),\n            onMouseup: _cache[1] || (_cache[1] = withModifiers(() => {\n            }, [\"prevent\"])),\n            onClick: withModifiers(handleClick, [\"prevent\"]),\n            onFocus: handleFocus,\n            onBlur: handleBlur,\n            onKeydown: [\n              handleKey,\n              withKeys(handleTab, [\"tab\"]),\n              withKeys(withModifiers(selectNextDatePart, [\"prevent\"]), [\"right\"]),\n              withKeys(withModifiers(selectPreviousDatePart, [\"prevent\"]), [\"left\"]),\n              withKeys(withModifiers(increaseDatePart, [\"prevent\"]), [\"up\"]),\n              withKeys(withModifiers(decreaseDatePart, [\"prevent\"]), [\"down\"]),\n              withKeys(withModifiers(deleteDatePart, [\"prevent\"]), [\"delete\"]),\n              withKeys(withModifiers(deleteDatePart, [\"prevent\"]), [\"backspace\"])\n            ]\n          }), null, 16, _hoisted_1$L)\n        ]),\n        suffix: withCtx(() => [\n          createVNode(unref(CalendarIcon))\n        ]),\n        _: 1\n      }, 8, [\"label-for\", \"populated\", \"label\", \"invalid\", \"error-message\", \"color-scheme\", \"disabled\", \"readonly\", \"hint\"]);\n    };\n  }\n});\nconst bDateInput_vue_vue_type_style_index_0_scoped_ba308aaf_lang = \"\";\nconst bDateInput = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [[\"__scopeId\", \"data-v-ba308aaf\"]]);\nfunction useFocusTrap(target, options = {}) {\n  let trap;\n  const { immediate, ...focusTrapOptions } = options;\n  const hasFocus = ref(false);\n  const isPaused = ref(false);\n  const activate = (opts) => trap && trap.activate(opts);\n  const deactivate = (opts) => trap && trap.deactivate(opts);\n  const pause = () => {\n    if (trap) {\n      trap.pause();\n      isPaused.value = true;\n    }\n  };\n  const unpause = () => {\n    if (trap) {\n      trap.unpause();\n      isPaused.value = false;\n    }\n  };\n  watch(\n    () => unrefElement(target),\n    (el) => {\n      if (!el)\n        return;\n      trap = createFocusTrap(el, {\n        ...focusTrapOptions,\n        onActivate() {\n          hasFocus.value = true;\n          if (options.onActivate)\n            options.onActivate();\n        },\n        onDeactivate() {\n          hasFocus.value = false;\n          if (options.onDeactivate)\n            options.onDeactivate();\n        }\n      });\n      if (immediate)\n        activate();\n    },\n    { flush: \"post\" }\n  );\n  tryOnScopeDispose(() => deactivate());\n  return {\n    hasFocus,\n    isPaused,\n    activate,\n    deactivate,\n    pause,\n    unpause\n  };\n}\nconst useModalTrap = (el, options) => {\n  const { activate, deactivate } = useFocusTrap(el, {\n    ...options\n  });\n  onMounted(() => {\n    nextTick(() => {\n      try {\n        activate();\n      } catch {\n        console.warn(\n          \"You have tried to use a Modal Trap without any tabbable elements. Please add a tabbable element to your modal.\"\n        );\n      }\n    });\n  });\n  onUnmounted(() => {\n    deactivate();\n  });\n};\nconst _hoisted_1$K = { class: \"b-modal\" };\nconst _hoisted_2$y = [\"aria-labelledby\"];\nconst _hoisted_3$l = {\n  key: 0,\n  class: \"b-modal__overlay\",\n  \"aria-hidden\": \"true\"\n};\nconst _sfc_main$Y = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-modal\",\n  props: {\n    labelledById: {},\n    disableScrollLock: { type: Boolean },\n    hideOverlay: { type: Boolean },\n    focusTrapOptions: {}\n  },\n  emits: [\"click-outside\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const modalRef = ref(null);\n    useModalTrap(modalRef, props.focusTrapOptions);\n    onClickOutside(modalRef, () => {\n      emit(\"click-outside\");\n    });\n    const isLocked = useScrollLock(isBrowser() ? document.body : void 0);\n    watch(\n      () => props.disableScrollLock,\n      (value) => isLocked.value = !value,\n      { immediate: true }\n    );\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$K, [\n        createElementVNode(\"div\", mergeProps(_ctx.$attrs, {\n          ref_key: \"modalRef\",\n          ref: modalRef,\n          role: \"dialog\",\n          \"aria-labelledby\": _ctx.labelledById,\n          \"aria-modal\": \"true\",\n          class: \"b-modal__content\"\n        }), [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ], 16, _hoisted_2$y),\n        !_ctx.hideOverlay ? (openBlock(), createElementBlock(\"div\", _hoisted_3$l)) : createCommentVNode(\"\", true)\n      ]);\n    };\n  }\n});\nconst bModal_vue_vue_type_style_index_0_scoped_894e8b8b_lang = \"\";\nconst BModal = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [[\"__scopeId\", \"data-v-894e8b8b\"]]);\nconst _hoisted_1$J = [\"onKeydown\"];\nconst _hoisted_2$x = [\"id\"];\nconst _sfc_main$X = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-dialog\",\n  props: {\n    modelValue: { type: Boolean },\n    title: {},\n    compact: { type: Boolean },\n    aspectRatio: { default: \"square\" },\n    focusTrapOptions: {},\n    teleportTo: { default: \"body\" },\n    disableScrollLock: { type: Boolean }\n  },\n  emits: [\"close\", \"update:modelValue\"],\n  setup(__props, { emit }) {\n    const slots = useSlots();\n    const dialogBodyRef = ref(null);\n    const hasContentScrollable = ref(false);\n    const labelId = generateUniqueId();\n    watchEffect(() => {\n      if (dialogBodyRef.value) {\n        hasContentScrollable.value = dialogBodyRef.value.scrollHeight > dialogBodyRef.value.clientHeight;\n      }\n    });\n    const closeDialog = () => {\n      emit(\"close\");\n      emit(\"update:modelValue\", false);\n    };\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(Teleport, { to: _ctx.teleportTo }, [\n        createVNode(Transition, {\n          appear: \"\",\n          name: \"b-dialog-fade-\"\n        }, {\n          default: withCtx(() => [\n            _ctx.modelValue ? (openBlock(), createBlock(BModal, {\n              key: 0,\n              \"disable-scroll-lock\": _ctx.disableScrollLock,\n              \"labelled-by-id\": unref(labelId),\n              \"focus-trap-options\": { allowOutsideClick: true, ..._ctx.focusTrapOptions },\n              onClickOutside: closeDialog\n            }, {\n              default: withCtx(() => [\n                createElementVNode(\"div\", {\n                  class: normalizeClass([\"b-dialog__panel\", [`b-dialog__panel--${_ctx.aspectRatio}`]]),\n                  onKeydown: withKeys(closeDialog, [\"escape\"])\n                }, [\n                  createElementVNode(\"div\", {\n                    id: unref(labelId),\n                    class: normalizeClass([\"b-dialog__title\", { \"b-dialog__title--compact\": _ctx.compact }])\n                  }, [\n                    renderSlot(_ctx.$slots, \"title-prefix\", {}, void 0, true),\n                    createTextVNode(toDisplayString(_ctx.title), 1)\n                  ], 10, _hoisted_2$x),\n                  createElementVNode(\"div\", {\n                    ref_key: \"dialogBodyRef\",\n                    ref: dialogBodyRef,\n                    class: normalizeClass([\"b-dialog__body\", {\n                      \"b-dialog__body--scrollable\": hasContentScrollable.value,\n                      \"b-dialog__body--compact\": _ctx.compact\n                    }])\n                  }, [\n                    renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n                  ], 2),\n                  unref(slots).footer ? (openBlock(), createElementBlock(\"div\", {\n                    key: 0,\n                    class: normalizeClass([\"b-dialog__footer\", {\n                      \"b-dialog__footer--scrollable\": hasContentScrollable.value,\n                      \"b-dialog__footer--compact\": _ctx.compact\n                    }])\n                  }, [\n                    renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n                  ], 2)) : createCommentVNode(\"\", true),\n                  createElementVNode(\"button\", {\n                    class: \"b-dialog__close-button\",\n                    \"aria-label\": \"close dialog\",\n                    onClick: closeDialog\n                  }, [\n                    createVNode(unref(CloseIcon), { size: \"lg\" })\n                  ])\n                ], 42, _hoisted_1$J)\n              ]),\n              _: 3\n            }, 8, [\"disable-scroll-lock\", \"labelled-by-id\", \"focus-trap-options\"])) : createCommentVNode(\"\", true)\n          ]),\n          _: 3\n        })\n      ], 8, [\"to\"]);\n    };\n  }\n});\nconst bDialog_vue_vue_type_style_index_0_scoped_2e39b792_lang = \"\";\nconst bDialog = /* @__PURE__ */ _export_sfc(_sfc_main$X, [[\"__scopeId\", \"data-v-2e39b792\"]]);\nconst _hoisted_1$I = [\"aria-labelledby\", \"disabled\"];\nconst _hoisted_2$w = {\n  key: 0,\n  \"data-cy\": \"b-floating-button-icon\",\n  class: \"b-floating-button__icon\"\n};\nconst _hoisted_3$k = [\"id\"];\nconst _sfc_main$W = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-floating-button\",\n  props: {\n    colorScheme: { default: \"blue\" },\n    disabled: { type: Boolean },\n    variant: { default: \"fill\" },\n    size: { default: \"md\" },\n    iconPosition: { default: \"right\" }\n  },\n  setup(__props, { expose: __expose }) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"c5ab7bec\": order.value\n    }));\n    const slots = useSlots();\n    const buttonRef = ref(null);\n    __expose({\n      button: buttonRef\n    });\n    const textId = generateUniqueId();\n    const attrs = useAttrs();\n    const btnAttrs = useSafeAttrs(attrs);\n    const isOnlyIcon = computed(() => !slots.default);\n    const order = computed(() => props.iconPosition === \"left\" ? \"0\" : \"1\");\n    onMounted(() => {\n      if (isOnlyIcon.value && !(btnAttrs == null ? void 0 : btnAttrs.value[\"aria-label\"])) {\n        console.warn(\n          \"Please provide a text label or aria-label for a BFloatingButton\"\n        );\n      }\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"button\", mergeProps({\n        ref_key: \"buttonRef\",\n        ref: buttonRef,\n        \"data-cy\": \"b-floating-button\",\n        \"aria-labelledby\": unref(textId)\n      }, unref(btnAttrs), {\n        class: [\"b-floating-button\", [\n          `b-floating-button--${_ctx.size}`,\n          `b-floating-button--${_ctx.variant}`,\n          `b-floating-button--${_ctx.colorScheme}`,\n          {\n            \"b-floating-button--disabled\": _ctx.disabled\n          }\n        ]],\n        disabled: _ctx.disabled\n      }), [\n        _ctx.$slots[\"icon\"] ? (openBlock(), createElementBlock(\"div\", _hoisted_2$w, [\n          renderSlot(_ctx.$slots, \"icon\", {\n            size: \"md\",\n            fill: \"currentColor\"\n          }, void 0, true)\n        ])) : createCommentVNode(\"\", true),\n        _ctx.$slots[\"default\"] ? (openBlock(), createElementBlock(\"span\", {\n          key: 1,\n          id: unref(textId),\n          class: \"b-floating-button__text\",\n          \"data-cy\": \"b-floating-button-text\"\n        }, [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ], 8, _hoisted_3$k)) : createCommentVNode(\"\", true)\n      ], 16, _hoisted_1$I);\n    };\n  }\n});\nconst bFloatingButton_vue_vue_type_style_index_0_scoped_65173925_lang = \"\";\nconst bFloatingButton = /* @__PURE__ */ _export_sfc(_sfc_main$W, [[\"__scopeId\", \"data-v-65173925\"]]);\nconst _hoisted_1$H = {\n  key: 0,\n  \"data-cy\": \"b-link-icon\",\n  class: \"b-link__icon\"\n};\nconst _hoisted_2$v = [\"id\"];\nconst _sfc_main$V = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-link\",\n  props: {\n    colorScheme: { default: \"blue\" },\n    size: { default: \"md\" },\n    inline: { type: Boolean },\n    as: { default: \"a\" },\n    to: {},\n    iconPosition: { default: \"left\" }\n  },\n  setup(__props, { expose: __expose }) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"68dd31ef\": iconOrder.value\n    }));\n    const slots = useSlots();\n    const linkRef = ref(null);\n    __expose({\n      link: linkRef\n    });\n    const attrs = useAttrs();\n    const id = generateUniqueId();\n    const linkAttrs = useSafeAttrs(attrs);\n    const colorClassName = computed(() => {\n      if (props.colorScheme === \"black\") {\n        return \"b-link--black\";\n      }\n      if (props.colorScheme === \"white\") {\n        return \"b-link--white\";\n      }\n      return \"b-link--accent\";\n    });\n    const hrefProp = computed(\n      () => typeof props.to === \"string\" && isExternalLink(props.to) ? { href: props.to } : { to: props.to }\n    );\n    const buttonSizeToIconSizeMap = {\n      sm: \"sm\",\n      md: \"md\"\n    };\n    const iconSize = computed(() => buttonSizeToIconSizeMap[props.size]);\n    const iconOrder = computed(() => props.iconPosition === \"left\" ? 0 : 1);\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), mergeProps({\n        ref_key: \"linkRef\",\n        ref: linkRef\n      }, { ...unref(linkAttrs), ...hrefProp.value }, {\n        \"aria-labelledby\": unref(id),\n        class: [\"b-link\", [\n          colorClassName.value,\n          `b-link--${_ctx.size}`,\n          `b-link--${_ctx.colorScheme}`,\n          { \"b-link--inline\": _ctx.inline }\n        ]]\n      }), {\n        default: withCtx(() => [\n          unref(slots).icon ? (openBlock(), createElementBlock(\"div\", _hoisted_1$H, [\n            renderSlot(_ctx.$slots, \"icon\", {\n              size: iconSize.value,\n              fill: \"currentColor\"\n            }, void 0, true)\n          ])) : createCommentVNode(\"\", true),\n          createElementVNode(\"span\", {\n            id: unref(id),\n            class: \"b-link__text\"\n          }, [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ], 8, _hoisted_2$v)\n        ]),\n        _: 3\n      }, 16, [\"aria-labelledby\", \"class\"]);\n    };\n  }\n});\nconst bLink_vue_vue_type_style_index_0_scoped_aec1a28e_lang = \"\";\nconst BLink = /* @__PURE__ */ _export_sfc(_sfc_main$V, [[\"__scopeId\", \"data-v-aec1a28e\"]]);\nconst _hoisted_1$G = { class: \"b-footer-base__copyright\" };\nconst _hoisted_2$u = { class: \"b-footer-base__links-list\" };\nconst _sfc_main$U = /* @__PURE__ */ defineComponent({\n  __name: \"b-footer-base\",\n  props: {\n    copyrightText: {},\n    links: {},\n    withSeparator: { type: Boolean }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-footer-base\", { \"b-footer-base--has-separator\": _ctx.withSeparator }])\n      }, [\n        createElementVNode(\"p\", _hoisted_1$G, toDisplayString(_ctx.copyrightText), 1),\n        createElementVNode(\"ul\", _hoisted_2$u, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.links, ({ as = \"a\", to, label, ...extraAttrs }) => {\n            return openBlock(), createElementBlock(\"li\", {\n              key: label,\n              class: \"b-footer-base__links-item\"\n            }, [\n              createVNode(unref(BLink), mergeProps({\n                as,\n                to,\n                size: \"sm\",\n                \"color-scheme\": \"black\"\n              }, extraAttrs), {\n                default: withCtx(() => [\n                  createTextVNode(toDisplayString(label), 1)\n                ]),\n                _: 2\n              }, 1040, [\"as\", \"to\"])\n            ]);\n          }), 128))\n        ])\n      ], 2);\n    };\n  }\n});\nconst bFooterBase_vue_vue_type_style_index_0_scoped_b85798b5_lang = \"\";\nconst BFooterBase = /* @__PURE__ */ _export_sfc(_sfc_main$U, [[\"__scopeId\", \"data-v-b85798b5\"]]);\nconst _withScopeId$6 = (n) => (pushScopeId(\"data-v-894a539e\"), n = n(), popScopeId(), n);\nconst _hoisted_1$F = { class: \"b-footer-accordion-content\" };\nconst _hoisted_2$t = {\n  key: 0,\n  class: \"b-footer-column\"\n};\nconst _hoisted_3$j = /* @__PURE__ */ _withScopeId$6(() => /* @__PURE__ */ createElementVNode(\"h1\", { class: \"b-footer-column__title\" }, \"Follow us\", -1));\nconst _hoisted_4$d = {\n  key: 1,\n  class: \"b-footer-groups\"\n};\nconst _hoisted_5$7 = { class: \"b-footer-column__title\" };\nconst _hoisted_6$7 = {\n  key: 0,\n  class: \"b-footer-groups__item b-footer-column\"\n};\nconst _hoisted_7$6 = /* @__PURE__ */ _withScopeId$6(() => /* @__PURE__ */ createElementVNode(\"h1\", { class: \"b-footer-column__title\" }, \"Follow us\", -1));\nconst _sfc_main$T = /* @__PURE__ */ defineComponent({\n  __name: \"b-footer-groups-list\",\n  props: {\n    groups: {},\n    withAccordion: { type: Boolean }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return _ctx.withAccordion ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n        createVNode(unref(BAccordion), null, {\n          default: withCtx(() => [\n            (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.groups, (group) => {\n              return openBlock(), createBlock(unref(BAccordionItem), {\n                key: group.title\n              }, {\n                header: withCtx(() => [\n                  createTextVNode(toDisplayString(group.title), 1)\n                ]),\n                content: withCtx(() => [\n                  createElementVNode(\"div\", _hoisted_1$F, [\n                    renderSlot(_ctx.$slots, \"links\", {\n                      links: group.children\n                    }, void 0, true)\n                  ])\n                ]),\n                _: 2\n              }, 1024);\n            }), 128))\n          ]),\n          _: 3\n        }),\n        _ctx.$slots.social ? (openBlock(), createElementBlock(\"div\", _hoisted_2$t, [\n          _hoisted_3$j,\n          renderSlot(_ctx.$slots, \"social\", {}, void 0, true)\n        ])) : createCommentVNode(\"\", true)\n      ], 64)) : (openBlock(), createElementBlock(\"ul\", _hoisted_4$d, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.groups, (group) => {\n          return openBlock(), createElementBlock(\"li\", {\n            key: group.title,\n            class: \"b-footer-column\"\n          }, [\n            createElementVNode(\"h1\", _hoisted_5$7, toDisplayString(group.title), 1),\n            renderSlot(_ctx.$slots, \"links\", {\n              links: group.children\n            }, void 0, true)\n          ]);\n        }), 128)),\n        _ctx.$slots.social ? (openBlock(), createElementBlock(\"li\", _hoisted_6$7, [\n          _hoisted_7$6,\n          renderSlot(_ctx.$slots, \"social\", {}, void 0, true)\n        ])) : createCommentVNode(\"\", true)\n      ]));\n    };\n  }\n});\nconst bFooterGroupsList_vue_vue_type_style_index_0_scoped_894a539e_lang = \"\";\nconst BFooterGroupsList = /* @__PURE__ */ _export_sfc(_sfc_main$T, [[\"__scopeId\", \"data-v-894a539e\"]]);\nconst _sfc_main$S = /* @__PURE__ */ defineComponent({\n  __name: \"b-footer-links-list\",\n  props: {\n    links: {},\n    layout: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const computedLinks = computed(() => {\n      return props.links.map(({ to, as = \"a\", ...rest }) => {\n        const linkProp = linkHrefParser({ to, as });\n        return {\n          as,\n          ...linkProp,\n          ...rest\n        };\n      });\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", {\n        class: normalizeClass([\"b-footer-links-list\", [`b-footer-links-list--${_ctx.layout}`]])\n      }, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList(computedLinks.value, ({ as, label, ...extraAttrs }) => {\n          return openBlock(), createElementBlock(\"li\", {\n            key: label,\n            class: normalizeClass([\"b-footer-links-list__item\", [`b-footer-links-list__item--${_ctx.layout}`]])\n          }, [\n            (openBlock(), createBlock(resolveDynamicComponent(as), mergeProps({\n              class: [\"b-footer-links-list__link\", [`b-footer-links-list__link--${_ctx.layout}`]]\n            }, extraAttrs), {\n              default: withCtx(() => [\n                createTextVNode(toDisplayString(label), 1)\n              ]),\n              _: 2\n            }, 1040, [\"class\"]))\n          ], 2);\n        }), 128))\n      ], 2);\n    };\n  }\n});\nconst bFooterLinksList_vue_vue_type_style_index_0_scoped_b4aa10f8_lang = \"\";\nconst BFooterLinksList = /* @__PURE__ */ _export_sfc(_sfc_main$S, [[\"__scopeId\", \"data-v-b4aa10f8\"]]);\nconst _hoisted_1$E = { class: \"b-footer-social-links\" };\nconst _sfc_main$R = /* @__PURE__ */ defineComponent({\n  __name: \"b-footer-social-links\",\n  props: {\n    links: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const computedLinks = computed(() => {\n      return props.links.map(({ to, as = \"a\", ...rest }) => {\n        const linkProp = linkHrefParser({ to, as });\n        return {\n          as,\n          ...linkProp,\n          ...rest\n        };\n      });\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", _hoisted_1$E, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList(computedLinks.value, ({ as, iconComponent, label, ...extraAttrs }) => {\n          return openBlock(), createElementBlock(\"li\", {\n            key: label,\n            class: \"b-footer-social-links__item\"\n          }, [\n            (openBlock(), createBlock(resolveDynamicComponent(as), mergeProps({\n              \"aria-label\": label,\n              target: \"_blank\"\n            }, extraAttrs, { class: \"b-footer-social-links__link\" }), {\n              default: withCtx(() => [\n                (openBlock(), createBlock(resolveDynamicComponent(iconComponent), { size: \"lg\" }))\n              ]),\n              _: 2\n            }, 1040, [\"aria-label\"]))\n          ]);\n        }), 128))\n      ]);\n    };\n  }\n});\nconst bFooterSocialLinks_vue_vue_type_style_index_0_scoped_30bd7e42_lang = \"\";\nconst BFooterSocialLinks = /* @__PURE__ */ _export_sfc(_sfc_main$R, [[\"__scopeId\", \"data-v-30bd7e42\"]]);\nconst _hoisted_1$D = { class: \"b-footer__wrapper\" };\nconst _hoisted_2$s = {\n  key: 1,\n  class: \"b-footer__simple-links\"\n};\nconst _sfc_main$Q = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-footer\",\n  props: {\n    copyrightText: {},\n    links: {},\n    socialLinks: {},\n    copyrightRightSideLinks: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const footerAttrs = useSafeAttrs(useAttrs());\n    const breakpoints = useBreakpoints();\n    const isMdOrAbove = breakpoints.greaterOrEqual(\"md\");\n    const isTabletOrAbove = computed(\n      () => !isBrowser() || isMdOrAbove.value\n    );\n    function isLinksGroup(links = []) {\n      return links.length > 0 && Array.isArray(links[0].children);\n    }\n    const variant = computed(() => {\n      const links = props.links ?? [];\n      if (links.length === 0) {\n        return \"base\";\n      }\n      return isLinksGroup(links) ? \"groups\" : \"simplified\";\n    });\n    const simplifiedFooterLayout = computed(\n      () => isMdOrAbove.value ? \"horizontal\" : \"vertical\"\n    );\n    const computedCopyrightText = computed(() => {\n      if (props.copyrightText) {\n        return props.copyrightText;\n      }\n      const year = (/* @__PURE__ */ new Date()).getFullYear();\n      return `© ${year} Frontiers Media S.A. All rights reserved`;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"footer\", mergeProps({\n        class: [\"b-footer\", [`b-footer--${variant.value}`]]\n      }, unref(footerAttrs)), [\n        createElementVNode(\"div\", _hoisted_1$D, [\n          isLinksGroup(_ctx.links) ? (openBlock(), createBlock(BFooterGroupsList, {\n            key: 0,\n            groups: _ctx.links,\n            \"with-accordion\": !isTabletOrAbove.value\n          }, {\n            links: withCtx((scope) => [\n              createVNode(BFooterLinksList, {\n                links: scope.links,\n                layout: \"vertical\"\n              }, null, 8, [\"links\"])\n            ]),\n            social: withCtx(() => [\n              _ctx.socialLinks ? (openBlock(), createBlock(BFooterSocialLinks, {\n                key: 0,\n                links: _ctx.socialLinks\n              }, null, 8, [\"links\"])) : createCommentVNode(\"\", true)\n            ]),\n            _: 1\n          }, 8, [\"groups\", \"with-accordion\"])) : variant.value === \"simplified\" ? (openBlock(), createElementBlock(\"div\", _hoisted_2$s, [\n            _ctx.links ? (openBlock(), createBlock(BFooterLinksList, {\n              key: 0,\n              links: _ctx.links,\n              layout: simplifiedFooterLayout.value\n            }, null, 8, [\"links\", \"layout\"])) : createCommentVNode(\"\", true),\n            _ctx.socialLinks ? (openBlock(), createBlock(BFooterSocialLinks, {\n              key: 1,\n              links: _ctx.socialLinks\n            }, null, 8, [\"links\"])) : createCommentVNode(\"\", true)\n          ])) : createCommentVNode(\"\", true),\n          _ctx.copyrightRightSideLinks ? (openBlock(), createBlock(BFooterBase, {\n            key: 2,\n            links: _ctx.copyrightRightSideLinks,\n            \"copyright-text\": computedCopyrightText.value,\n            \"with-separator\": variant.value !== \"base\"\n          }, null, 8, [\"links\", \"copyright-text\", \"with-separator\"])) : createCommentVNode(\"\", true)\n        ])\n      ], 16);\n    };\n  }\n});\nconst bFooter_vue_vue_type_style_index_0_scoped_7b4341fa_lang = \"\";\nconst bFooter = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [[\"__scopeId\", \"data-v-7b4341fa\"]]);\nconst _hoisted_1$C = { class: \"b-sliding-panel\" };\nconst SCROLL_FACTOR = 0.7;\nconst _sfc_main$P = /* @__PURE__ */ defineComponent({\n  __name: \"b-sliding-panel\",\n  props: {\n    disableScroll: { type: Boolean }\n  },\n  setup(__props, { expose: __expose }) {\n    useCssVars((_ctx) => ({\n      \"692e8fca\": leftControlWidth.value,\n      \"20d80bfa\": rightControlWidth.value\n    }));\n    const scrollRef = ref(null);\n    const leftControlRef = ref(null);\n    const rightControlRef = ref(null);\n    const leftControlWidth = ref(\"\");\n    const rightControlWidth = ref(\"\");\n    const scrollPosition = ref(0);\n    __expose({\n      scrollElementIntoView\n    });\n    const { width: clientWidth } = useElementSize(scrollRef);\n    const showLeftControl = computed(() => scrollPosition.value > 0);\n    const showRightControl = computed(() => {\n      var _a;\n      const scrollVisibleWidth = clientWidth.value ?? 0;\n      const scrollTotalWidth = ((_a = scrollRef.value) == null ? void 0 : _a.scrollWidth) ?? 0;\n      return scrollPosition.value + scrollVisibleWidth <= scrollTotalWidth - 1;\n    });\n    watchEffect(() => {\n      var _a;\n      const { width = 0 } = ((_a = leftControlRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? {};\n      leftControlWidth.value = `${width}px`;\n    });\n    watchEffect(() => {\n      var _a;\n      const { width = 0 } = ((_a = rightControlRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? {};\n      rightControlWidth.value = `${width}px`;\n    });\n    function scrollTo(direction) {\n      var _a, _b;\n      const scrollValue = ((_a = scrollRef.value) == null ? void 0 : _a.clientWidth) ?? 0;\n      const directionFactor = direction === \"left\" ? -1 : 1;\n      (_b = scrollRef.value) == null ? void 0 : _b.scrollBy({\n        left: directionFactor * scrollValue * SCROLL_FACTOR,\n        behavior: \"smooth\"\n      });\n    }\n    function updateScrollPosition() {\n      var _a;\n      scrollPosition.value = ((_a = scrollRef.value) == null ? void 0 : _a.scrollLeft) ?? 0;\n    }\n    function scrollElementIntoView(element) {\n      var _a, _b;\n      const elementLeftPosition = element.offsetLeft;\n      const elementHalfWidth = element.clientWidth / 2;\n      const scrollHalfWidth = (((_a = scrollRef.value) == null ? void 0 : _a.clientWidth) ?? 0) / 2;\n      (_b = scrollRef.value) == null ? void 0 : _b.scrollTo({\n        left: elementLeftPosition - scrollHalfWidth + elementHalfWidth,\n        // Center the element in the scroll\n        behavior: \"smooth\"\n      });\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$C, [\n        showLeftControl.value ? (openBlock(), createElementBlock(\"button\", {\n          key: 0,\n          ref_key: \"leftControlRef\",\n          ref: leftControlRef,\n          class: \"b-sliding-panel__control-left\",\n          \"data-cy\": \"sliding-panel-button-left\",\n          \"aria-label\": \"Scroll to left\",\n          tabindex: \"-1\",\n          onClick: _cache[0] || (_cache[0] = ($event) => scrollTo(\"left\"))\n        }, [\n          renderSlot(_ctx.$slots, \"button-left\", {}, void 0, true)\n        ], 512)) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", {\n          ref_key: \"scrollRef\",\n          ref: scrollRef,\n          class: normalizeClass([\"b-sliding-panel__scroll\", { \"b-sliding-panel__scroll--disabled\": _ctx.disableScroll }]),\n          onScroll: updateScrollPosition\n        }, [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ], 34),\n        showRightControl.value ? (openBlock(), createElementBlock(\"button\", {\n          key: 1,\n          ref_key: \"rightControlRef\",\n          ref: rightControlRef,\n          class: \"b-sliding-panel__control-right\",\n          \"data-cy\": \"sliding-panel-button-right\",\n          \"aria-label\": \"Scroll to right\",\n          tabindex: \"-1\",\n          onClick: _cache[1] || (_cache[1] = ($event) => scrollTo(\"right\"))\n        }, [\n          renderSlot(_ctx.$slots, \"button-right\", {}, void 0, true)\n        ], 512)) : createCommentVNode(\"\", true)\n      ]);\n    };\n  }\n});\nconst bSlidingPanel_vue_vue_type_style_index_0_scoped_3989ee7e_lang = \"\";\nconst BSlidingPanel = /* @__PURE__ */ _export_sfc(_sfc_main$P, [[\"__scopeId\", \"data-v-3989ee7e\"]]);\nconst STEPPER_STATE_KEY$1 = Symbol(\"stepperState\");\nconst _hoisted_1$B = { class: \"b-horizontal-stepper__scroll-button\" };\nconst _hoisted_2$r = { class: \"b-horizontal-stepper__scroll-button\" };\nconst _sfc_main$O = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: true\n  },\n  __name: \"b-horizontal-stepper\",\n  props: {\n    activeStep: {},\n    linear: { type: Boolean, default: true },\n    labelReversed: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const stepperAttr = useSafeAttrs(useAttrs());\n    const registeredSteps = ref(/* @__PURE__ */ new Set());\n    const completedSteps = ref(/* @__PURE__ */ new Set());\n    const stepperState = computed(() => ({\n      activeStep: props.activeStep,\n      linear: props.linear,\n      labelReversed: props.labelReversed,\n      disabled: props.disabled,\n      registeredSteps: registeredSteps.value.size,\n      completedSteps: props.linear ? props.activeStep - 1 : completedSteps.value.size,\n      registerStep,\n      unregisterStep,\n      setCompletedStep\n    }));\n    const { smallerOrEqual } = useBreakpoints();\n    const isSingleStep = smallerOrEqual(\"md\");\n    const wrapperComponent = computed(\n      () => isSingleStep.value ? \"div\" : BSlidingPanel\n    );\n    provide(STEPPER_STATE_KEY$1, stepperState);\n    function registerStep(id) {\n      registeredSteps.value.add(id);\n    }\n    function unregisterStep(id) {\n      registeredSteps.value.delete(id);\n    }\n    function setCompletedStep(id, completed) {\n      if (completed) {\n        completedSteps.value.add(id);\n      } else {\n        completedSteps.value.delete(id);\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(wrapperComponent.value), null, {\n        \"button-left\": withCtx(() => [\n          createElementVNode(\"div\", _hoisted_1$B, [\n            createVNode(unref(ChevronLeftIcon), {\n              size: \"lg\",\n              fill: \"currentColor\"\n            })\n          ])\n        ]),\n        default: withCtx(() => [\n          createElementVNode(\"ul\", mergeProps({\n            class: [\"b-horizontal-stepper\", { \"b-horizontal-stepper--single-step\": unref(isSingleStep) }]\n          }, unref(stepperAttr)), [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ], 16)\n        ]),\n        \"button-right\": withCtx(() => [\n          createElementVNode(\"div\", _hoisted_2$r, [\n            createVNode(unref(ChevronRightIcon), {\n              size: \"lg\",\n              fill: \"currentColor\"\n            })\n          ])\n        ]),\n        _: 3\n      });\n    };\n  }\n});\nconst bHorizontalStepper_vue_vue_type_style_index_0_scoped_4e97efaa_lang = \"\";\nconst bHorizontalStepper = /* @__PURE__ */ _export_sfc(_sfc_main$O, [[\"__scopeId\", \"data-v-4e97efaa\"]]);\nconst _withScopeId$5 = (n) => (pushScopeId(\"data-v-0ea5c489\"), n = n(), popScopeId(), n);\nconst _hoisted_1$A = [\"alt\"];\nconst _hoisted_2$q = [\"id\"];\nconst _hoisted_3$i = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode(\"circle\", {\n  r: \"22\",\n  cx: \"24\",\n  cy: \"24\",\n  \"stroke-width\": \"4\",\n  stroke: \"white\"\n}, null, -1));\nconst _hoisted_4$c = [\n  _hoisted_3$i\n];\nconst _hoisted_5$6 = [\"mask\"];\nconst _hoisted_6$6 = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-progress-indicator__circle\" }, null, -1));\nconst _hoisted_7$5 = [\n  _hoisted_6$6\n];\nconst _sfc_main$N = /* @__PURE__ */ defineComponent({\n  __name: \"b-progress-indicator\",\n  props: {\n    altText: {},\n    completedPercentage: {}\n  },\n  setup(__props) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"6d220c98\": computedPercentage.value\n    }));\n    const svgId = generateUniqueId();\n    const computedPercentage = computed(() => `${props.completedPercentage}%`);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"svg\", {\n        height: \"48\",\n        width: \"48\",\n        class: \"b-progress-indicator\",\n        alt: _ctx.altText\n      }, [\n        createElementVNode(\"defs\", null, [\n          createElementVNode(\"mask\", { id: unref(svgId) }, _hoisted_4$c, 8, _hoisted_2$q)\n        ]),\n        (openBlock(), createElementBlock(\"foreignObject\", {\n          x: \"0\",\n          y: \"0\",\n          width: \"48\",\n          height: \"48\",\n          mask: `url(#${unref(svgId)})`\n        }, _hoisted_7$5, 8, _hoisted_5$6))\n      ], 8, _hoisted_1$A);\n    };\n  }\n});\nconst bProgressIndicator_vue_vue_type_style_index_0_scoped_0ea5c489_lang = \"\";\nconst BPropgressIndicator = /* @__PURE__ */ _export_sfc(_sfc_main$N, [[\"__scopeId\", \"data-v-0ea5c489\"]]);\nconst _withScopeId$4 = (n) => (pushScopeId(\"data-v-89a845af\"), n = n(), popScopeId(), n);\nconst _hoisted_1$z = [\"tabindex\", \"aria-label\", \"aria-hidden\", \"disabled\", \"onKeydown\"];\nconst _hoisted_2$p = {\n  key: 1,\n  class: \"b-step__number\"\n};\nconst _hoisted_3$h = {\n  key: 0,\n  class: \"b-step__label\"\n};\nconst _hoisted_4$b = {\n  key: 1,\n  class: \"b-step__sub-label\"\n};\nconst _hoisted_5$5 = {\n  key: 1,\n  class: \"b-step__progress\"\n};\nconst _hoisted_6$5 = { class: \"b-step__progress-label\" };\nconst _hoisted_7$4 = { \"aria-label\": \"Current step\" };\nconst _hoisted_8$3 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode(\"span\", { \"aria-hidden\": \"true\" }, \"/\", -1));\nconst _hoisted_9$2 = { \"aria-label\": \"Total steps\" };\nconst _sfc_main$M = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-horizontal-stepper-step\",\n  props: {\n    stepNumber: {},\n    name: {},\n    label: {},\n    subLabel: {},\n    tagLabel: {},\n    completed: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false }\n  },\n  emits: [\"click\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const stepId = generateUniqueId();\n    const stepperState = inject(STEPPER_STATE_KEY$1);\n    const stepAttr = useSafeAttrs(useAttrs());\n    const { smallerOrEqual } = useBreakpoints();\n    const isSingleStep = smallerOrEqual(\"md\");\n    const isDisabled = computed(\n      () => (stepperState == null ? void 0 : stepperState.value.disabled) || ((stepperState == null ? void 0 : stepperState.value.linear) ? props.stepNumber > (stepperState == null ? void 0 : stepperState.value.activeStep) : props.disabled)\n    );\n    const isActive = computed(\n      () => props.stepNumber === (stepperState == null ? void 0 : stepperState.value.activeStep)\n    );\n    const isCompleted = computed(\n      () => (stepperState == null ? void 0 : stepperState.value.linear) ? props.stepNumber < (stepperState == null ? void 0 : stepperState.value.activeStep) : props.completed\n    );\n    const tagVariant = computed(\n      () => isCompleted.value && !isDisabled.value ? \"green\" : \"blue\"\n    );\n    const hasLabels = computed(\n      () => props.label !== void 0 || props.subLabel !== void 0 || props.tagLabel !== void 0\n    );\n    const completedPercentage = computed(\n      () => Math.round(\n        ((stepperState == null ? void 0 : stepperState.value.completedSteps) ?? 0) / ((stepperState == null ? void 0 : stepperState.value.registeredSteps) ?? 1) * 100\n      )\n    );\n    const progressAltText = computed(\n      () => `${(stepperState == null ? void 0 : stepperState.value.completedSteps) ?? 0} of ${(stepperState == null ? void 0 : stepperState.value.registeredSteps) ?? 0} steps completed`\n    );\n    const showStep = computed(\n      () => !isSingleStep.value || isActive.value || ((stepperState == null ? void 0 : stepperState.value.activeStep) ?? 0) > props.stepNumber && (stepperState == null ? void 0 : stepperState.value.registeredSteps) === props.stepNumber\n    );\n    stepperState == null ? void 0 : stepperState.value.registerStep(stepId);\n    watch(\n      () => props.completed,\n      () => stepperState == null ? void 0 : stepperState.value.setCompletedStep(stepId, props.completed),\n      { immediate: true }\n    );\n    onBeforeUnmount(() => {\n      stepperState == null ? void 0 : stepperState.value.unregisterStep(stepId);\n      stepperState == null ? void 0 : stepperState.value.setCompletedStep(stepId, false);\n    });\n    function onStepClick() {\n      if (!isDisabled.value) {\n        emit(\"click\", props.stepNumber);\n      }\n    }\n    return (_ctx, _cache) => {\n      var _a, _b, _c, _d;\n      return showStep.value ? (openBlock(), createElementBlock(\"li\", mergeProps({\n        key: 0,\n        class: \"b-step\"\n      }, unref(stepAttr), {\n        class: {\n          \"b-step--disabled\": isDisabled.value,\n          \"b-step--linear\": (_a = unref(stepperState)) == null ? void 0 : _a.linear,\n          \"b-step--non-linear\": !((_b = unref(stepperState)) == null ? void 0 : _b.linear),\n          \"b-step--active\": isActive.value,\n          \"b-step--completed\": isCompleted.value,\n          \"b-step--single-step\": unref(isSingleStep)\n        },\n        tabindex: isDisabled.value ? -1 : 0,\n        role: \"button\",\n        \"aria-label\": _ctx.name,\n        \"aria-hidden\": !showStep.value,\n        disabled: isDisabled.value,\n        onClick: onStepClick,\n        onKeydown: [\n          withKeys(onStepClick, [\"enter\"]),\n          withKeys(withModifiers(onStepClick, [\"prevent\"]), [\"space\"])\n        ]\n      }), [\n        !unref(isSingleStep) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n          isCompleted.value && !isDisabled.value ? (openBlock(), createBlock(unref(BFeedbackIcon), {\n            key: 0,\n            size: \"xl\",\n            type: \"success\",\n            class: \"b-step__completed-icon\"\n          })) : (openBlock(), createElementBlock(\"div\", {\n            key: 1,\n            class: normalizeClass([\"b-step__default-icon\", { \"b-step__default-icon--disabled\": isDisabled.value }])\n          }, [\n            isActive.value ? (openBlock(), createBlock(unref(EditIcon), {\n              key: 0,\n              size: \"md\"\n            })) : (openBlock(), createElementBlock(\"span\", _hoisted_2$p, toDisplayString(_ctx.stepNumber), 1))\n          ], 2))\n        ], 64)) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-step__description\", {\n            \"b-step__description--reversed\": (_c = unref(stepperState)) == null ? void 0 : _c.labelReversed,\n            \"b-step__description--single-step\": unref(isSingleStep)\n          }])\n        }, [\n          createElementVNode(\"span\", {\n            class: normalizeClass([\"b-step__name\", { \"b-step__name--disabled\": isDisabled.value }])\n          }, toDisplayString(_ctx.name), 3),\n          hasLabels.value ? (openBlock(), createElementBlock(\"div\", {\n            key: 0,\n            class: normalizeClass([\"b-step__labels\", { \"b-step__labels--disabled\": isDisabled.value }])\n          }, [\n            _ctx.label ? (openBlock(), createElementBlock(\"span\", _hoisted_3$h, toDisplayString(_ctx.label), 1)) : createCommentVNode(\"\", true),\n            _ctx.subLabel ? (openBlock(), createElementBlock(\"span\", _hoisted_4$b, toDisplayString(_ctx.subLabel), 1)) : createCommentVNode(\"\", true),\n            _ctx.tagLabel ? (openBlock(), createElementBlock(\"div\", {\n              key: 2,\n              class: normalizeClass([\"b-step__tag\", { \"b-step__tag--disabled\": isDisabled.value }])\n            }, [\n              createVNode(unref(BTag), {\n                \"color-scheme\": tagVariant.value,\n                variant: \"outline\"\n              }, {\n                default: withCtx(() => [\n                  createTextVNode(toDisplayString(_ctx.tagLabel), 1)\n                ]),\n                _: 1\n              }, 8, [\"color-scheme\"])\n            ], 2)) : createCommentVNode(\"\", true)\n          ], 2)) : createCommentVNode(\"\", true)\n        ], 2),\n        unref(isSingleStep) ? (openBlock(), createElementBlock(\"div\", _hoisted_5$5, [\n          createVNode(BPropgressIndicator, {\n            class: \"b-step__progress-indicator\",\n            \"alt-text\": progressAltText.value,\n            \"completed-percentage\": completedPercentage.value\n          }, null, 8, [\"alt-text\", \"completed-percentage\"]),\n          createElementVNode(\"div\", _hoisted_6$5, [\n            createElementVNode(\"span\", _hoisted_7$4, toDisplayString(_ctx.stepNumber), 1),\n            _hoisted_8$3,\n            createElementVNode(\"span\", _hoisted_9$2, toDisplayString((_d = unref(stepperState)) == null ? void 0 : _d.registeredSteps), 1)\n          ])\n        ])) : createCommentVNode(\"\", true)\n      ], 16, _hoisted_1$z)) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst bHorizontalStepperStep_vue_vue_type_style_index_0_scoped_89a845af_lang = \"\";\nconst bHorizontalStepperStep = /* @__PURE__ */ _export_sfc(_sfc_main$M, [[\"__scopeId\", \"data-v-89a845af\"]]);\nconst _hoisted_1$y = [\"disabled\", \"aria-label\"];\nconst _sfc_main$L = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-icon-button\",\n  props: {\n    label: {},\n    colorScheme: { default: \"black\" },\n    size: { default: \"md\" },\n    disabled: { type: Boolean, default: void 0 },\n    showTooltip: { type: Boolean, default: false },\n    tooltipPlacement: { default: \"top-start\" }\n  },\n  emits: [\"click\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const iconSizeMap = {\n      xs: \"md\",\n      sm: \"md\",\n      md: \"lg\",\n      lg: \"lg\"\n    };\n    const ariaLabel = computed(() => props.showTooltip ? void 0 : props.label);\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(unref(BTooltip), { placement: _ctx.tooltipPlacement }, {\n        trigger: withCtx((tooltipProps) => [\n          createElementVNode(\"button\", mergeProps(_ctx.showTooltip ? tooltipProps : {}, {\n            class: [\"b-icon-button\", [\n              `b-icon-button--${_ctx.colorScheme}`,\n              `b-icon-button--${_ctx.size}`,\n              {\n                \"b-icon-button--disabled\": _ctx.disabled\n              }\n            ]],\n            disabled: _ctx.disabled,\n            \"aria-label\": ariaLabel.value,\n            onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n          }), [\n            renderSlot(_ctx.$slots, \"icon\", {\n              size: iconSizeMap[_ctx.size],\n              fill: \"currentColor\"\n            }, void 0, true)\n          ], 16, _hoisted_1$y)\n        ]),\n        content: withCtx(() => [\n          createTextVNode(toDisplayString(_ctx.label), 1)\n        ]),\n        _: 3\n      }, 8, [\"placement\"]);\n    };\n  }\n});\nconst bIconButton_vue_vue_type_style_index_0_scoped_5b7593c8_lang = \"\";\nconst BIconButton = /* @__PURE__ */ _export_sfc(_sfc_main$L, [[\"__scopeId\", \"data-v-5b7593c8\"]]);\nconst _sfc_main$K = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-input\",\n  props: {\n    invalid: { type: Boolean, default: false },\n    readonly: { type: Boolean, default: false },\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean, default: false },\n    modelValue: {},\n    errorMessage: {},\n    label: {},\n    hint: {},\n    type: {}\n  },\n  emits: [\"update:modelValue\", \"focus\", \"blur\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const inputRef = ref(null);\n    __expose({\n      input: inputRef\n    });\n    const id = generateUniqueId();\n    const attrs = useAttrs();\n    const inputAttrs = useSafeAttrs(attrs);\n    const proxiedModel = computed({\n      get: () => props.modelValue,\n      set: (value) => {\n        emit(\"update:modelValue\", value);\n      }\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(BFormControl, {\n        \"label-for\": unref(id),\n        populated: !!proxiedModel.value,\n        label: _ctx.label,\n        invalid: _ctx.invalid,\n        \"color-scheme\": _ctx.colorScheme,\n        disabled: _ctx.disabled,\n        readonly: _ctx.readonly,\n        hint: _ctx.hint\n      }, createSlots({\n        control: withCtx(() => [\n          withDirectives(createElementVNode(\"input\", mergeProps({\n            ref_key: \"inputRef\",\n            ref: inputRef,\n            \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => proxiedModel.value = $event),\n            \"data-cy\": \"b-input\",\n            class: \"b-input\"\n          }, {\n            ...unref(inputAttrs),\n            \"aria-invalid\": _ctx.invalid,\n            type: _ctx.type,\n            disabled: _ctx.disabled,\n            id: unref(id),\n            readonly: _ctx.readonly\n          }, {\n            onFocus: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"focus\", $event)),\n            onBlur: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"blur\", $event))\n          }), null, 16), [\n            [vModelDynamic, proxiedModel.value]\n          ])\n        ]),\n        error: withCtx(() => [\n          _ctx.invalid && _ctx.errorMessage ? (openBlock(), createBlock(unref(BFormError), {\n            key: 0,\n            \"error-message\": _ctx.errorMessage,\n            \"color-scheme\": _ctx.colorScheme\n          }, null, 8, [\"error-message\", \"color-scheme\"])) : createCommentVNode(\"\", true)\n        ]),\n        _: 2\n      }, [\n        !!unref(slots).icon ? {\n          name: \"suffix\",\n          fn: withCtx(() => [\n            renderSlot(_ctx.$slots, \"icon\", {\n              size: \"md\",\n              fill: \"currentColor\"\n            }, void 0, true)\n          ]),\n          key: \"0\"\n        } : void 0\n      ]), 1032, [\"label-for\", \"populated\", \"label\", \"invalid\", \"color-scheme\", \"disabled\", \"readonly\", \"hint\"]);\n    };\n  }\n});\nconst bInput_vue_vue_type_style_index_0_scoped_b89714c2_lang = \"\";\nconst bInput = /* @__PURE__ */ _export_sfc(_sfc_main$K, [[\"__scopeId\", \"data-v-b89714c2\"]]);\nconst useNavigationBarDropdown = (items) => {\n  const dropdownId = generateUniqueId();\n  const activeTriggerId = ref(null);\n  const dropdownRef = ref(null);\n  const isDropdownOpen = ref(false);\n  const activeItem = computed(() => {\n    var _a;\n    if (activeTriggerId.value === null) {\n      return null;\n    }\n    return ((_a = items.value) == null ? void 0 : _a.find((item) => item.id === activeTriggerId.value)) ?? null;\n  });\n  onClickOutside(dropdownRef, (e) => {\n    if (e.target instanceof HTMLElement && e.target.id === activeTriggerId.value) {\n      return;\n    }\n    closeDropdown();\n  });\n  function toggleDropdown(id) {\n    _updateActiveId(id);\n    isDropdownOpen.value = !isDropdownOpen.value;\n  }\n  function closeDropdown() {\n    isDropdownOpen.value = false;\n    activeTriggerId.value = null;\n  }\n  function _updateActiveId(id) {\n    if (activeTriggerId.value === id) {\n      activeTriggerId.value = null;\n      return;\n    } else {\n      activeTriggerId.value = id;\n    }\n  }\n  return {\n    activeItem,\n    activeTriggerId,\n    dropdownId,\n    dropdownRef,\n    isDropdownOpen,\n    toggleDropdown,\n    closeDropdown\n  };\n};\nconst _sfc_main$J = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-action-button\",\n  props: {\n    actionButtonProps: {},\n    isMobileMenu: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const actionButtonAs = computed(() => {\n      var _a;\n      return ((_a = props.actionButtonProps) == null ? void 0 : _a.as) || \"button\";\n    });\n    const actionButtonParsedProps = computed(() => {\n      const { as: _, to, ...rest } = props.actionButtonProps;\n      if (to) {\n        return {\n          ...rest,\n          ...linkHrefParser({ as: actionButtonAs.value, to })\n        };\n      }\n      return rest;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(actionButtonAs.value), mergeProps(actionButtonParsedProps.value, {\n        class: [\"b-navigation-action-button\", { \"b-navigation-action-button--mobile\": _ctx.isMobileMenu }]\n      }), {\n        default: withCtx(() => [\n          createTextVNode(toDisplayString(actionButtonParsedProps.value.label), 1)\n        ]),\n        _: 1\n      }, 16, [\"class\"]);\n    };\n  }\n});\nconst bNavigationBarActionButton_vue_vue_type_style_index_0_scoped_e1f933b2_lang = \"\";\nconst BNavigationBarActionButton = /* @__PURE__ */ _export_sfc(_sfc_main$J, [[\"__scopeId\", \"data-v-e1f933b2\"]]);\nconst _hoisted_1$x = { class: \"b-navigation-bar-brand\" };\nconst _hoisted_2$o = {\n  key: 0,\n  class: \"b-navigation-bar-brand__divider\"\n};\nconst _sfc_main$I = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-brand\",\n  props: {\n    brandProps: {},\n    isBottomBar: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const brandAs = computed(() => {\n      return props.brandProps.as || \"button\";\n    });\n    const brandParsedProps = computed(() => {\n      const { as: _, to, ...rest } = props.brandProps;\n      if (to) {\n        return {\n          ...rest,\n          ...linkHrefParser({ as: brandAs.value, to })\n        };\n      }\n      return rest;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$x, [\n        !_ctx.isBottomBar ? (openBlock(), createElementBlock(\"div\", _hoisted_2$o)) : createCommentVNode(\"\", true),\n        (openBlock(), createBlock(resolveDynamicComponent(brandAs.value), mergeProps({\n          class: [\"b-navigation-bar-brand__link\", {\n            \"b-navigation-bar-brand__link--top-bar\": !_ctx.isBottomBar,\n            \"b-navigation-bar-brand__link--bottom-bar\": _ctx.isBottomBar\n          }]\n        }, brandParsedProps.value), {\n          default: withCtx(() => [\n            createTextVNode(toDisplayString(brandParsedProps.value.label), 1)\n          ]),\n          _: 1\n        }, 16, [\"class\"]))\n      ]);\n    };\n  }\n});\nconst bNavigationBarBrand_vue_vue_type_style_index_0_scoped_d4715505_lang = \"\";\nconst BNavigationBarBrand = /* @__PURE__ */ _export_sfc(_sfc_main$I, [[\"__scopeId\", \"data-v-d4715505\"]]);\nconst _hoisted_1$w = { class: \"b-navigation-bottom-bar\" };\nconst _hoisted_2$n = { class: \"b-navigation-bottom-bar__wrapper\" };\nconst _hoisted_3$g = { class: \"b-navigation-bottom-bar__items\" };\nconst _sfc_main$H = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-bottom-bar\",\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$w, [\n        createElementVNode(\"div\", _hoisted_2$n, [\n          renderSlot(_ctx.$slots, \"brand\", {}, void 0, true),\n          createElementVNode(\"div\", _hoisted_3$g, [\n            renderSlot(_ctx.$slots, \"menu-items\", {}, void 0, true)\n          ]),\n          renderSlot(_ctx.$slots, \"dropdown\", {}, void 0, true)\n        ])\n      ]);\n    };\n  }\n});\nconst bNavigationBarBottomBar_vue_vue_type_style_index_0_scoped_1116c445_lang = \"\";\nconst BNavigationBarBottomBar = /* @__PURE__ */ _export_sfc(_sfc_main$H, [[\"__scopeId\", \"data-v-1116c445\"]]);\nconst _withScopeId$3 = (n) => (pushScopeId(\"data-v-10bcece0\"), n = n(), popScopeId(), n);\nconst _hoisted_1$v = {\n  key: 0,\n  class: \"b-navigation-dropdown\"\n};\nconst _hoisted_2$m = { class: \"b-navigation-dropdown__title\" };\nconst _hoisted_3$f = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-navigation-dropdown__divider\" }, null, -1));\nconst _hoisted_4$a = { key: 0 };\nconst _hoisted_5$4 = [\"onClick\"];\nconst _hoisted_6$4 = { class: \"b-navigation-dropdown__link-text\" };\nconst _hoisted_7$3 = { key: 1 };\nconst _hoisted_8$2 = { class: \"b-navigation-dropdown__link-text\" };\nconst NUMBER_OF_COLS_WITH_STANDARD_GAP = 4;\nconst _sfc_main$G = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-dropdown\",\n  props: {\n    item: {}\n  },\n  emits: [\"close\"],\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return Array.isArray(_ctx.item.children) && _ctx.item.children.length > 0 ? (openBlock(), createElementBlock(\"div\", _hoisted_1$v, [\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-navigation-dropdown__wrapper\", {\n            \"b-navigation-dropdown__wrapper--small-gap\": _ctx.item.children.length > NUMBER_OF_COLS_WITH_STANDARD_GAP\n          }]),\n          onKeydown: _cache[0] || (_cache[0] = withKeys(($event) => _ctx.$emit(\"close\"), [\"esc\"]))\n        }, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.item.children, ({ title, items: childItem }) => {\n            return openBlock(), createElementBlock(\"div\", {\n              key: title,\n              class: \"b-navigation-dropdown__col\"\n            }, [\n              title ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n                createElementVNode(\"span\", _hoisted_2$m, toDisplayString(title), 1),\n                _hoisted_3$f\n              ], 64)) : createCommentVNode(\"\", true),\n              createElementVNode(\"ul\", {\n                class: normalizeClass([\"b-navigation-dropdown__links\", {\n                  \"b-navigation-dropdown__links--without-title\": !!title\n                }])\n              }, [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(childItem, ({ as, to, label, onClick, ...rest }) => {\n                  return openBlock(), createElementBlock(Fragment, { key: label }, [\n                    typeof onClick === \"function\" && !to ? (openBlock(), createElementBlock(\"li\", _hoisted_4$a, [\n                      createElementVNode(\"button\", {\n                        class: \"b-navigation-dropdown__link-button\",\n                        onClick\n                      }, [\n                        createElementVNode(\"span\", _hoisted_6$4, toDisplayString(label), 1)\n                      ], 8, _hoisted_5$4)\n                    ])) : to ? (openBlock(), createElementBlock(\"li\", _hoisted_7$3, [\n                      createVNode(unref(BLink), mergeProps({\n                        \"color-scheme\": \"black\",\n                        as,\n                        to\n                      }, rest, {\n                        onClick: ($event) => onClick == null ? void 0 : onClick()\n                      }), {\n                        default: withCtx(() => [\n                          createElementVNode(\"span\", _hoisted_8$2, toDisplayString(label), 1)\n                        ]),\n                        _: 2\n                      }, 1040, [\"as\", \"to\", \"onClick\"])\n                    ])) : createCommentVNode(\"\", true)\n                  ], 64);\n                }), 128))\n              ], 2)\n            ]);\n          }), 128))\n        ], 34)\n      ])) : createCommentVNode(\"\", true);\n    };\n  }\n});\nconst bNavigationBarDropdown_vue_vue_type_style_index_0_scoped_10bcece0_lang = \"\";\nconst BNavigationBarDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$G, [[\"__scopeId\", \"data-v-10bcece0\"]]);\nconst _hoisted_1$u = [\"data-dropdown-active\"];\nconst _hoisted_2$l = [\"id\"];\nconst _sfc_main$F = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-menu-item\",\n  props: {\n    isBottomBar: { type: Boolean, default: false },\n    item: {},\n    activeId: {},\n    dropdownId: {},\n    toggleDropdown: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const hrefProp = computed(() => {\n      if (isDropdownTrigger.value || !props.item.to) {\n        return {};\n      }\n      return linkHrefParser({\n        as: props.item.as,\n        to: props.item.to\n      });\n    });\n    const linkAttr = computed(() => {\n      const { label, onClick, to, as, children, id, ...rest } = props.item;\n      return rest;\n    });\n    const componentTag = computed(\n      () => props.item.as !== void 0 ? props.item.as : props.item.to ? \"a\" : \"button\"\n    );\n    const isDropdownTrigger = computed(() => {\n      return Array.isArray(props.item.children);\n    });\n    const isDropdownOpen = computed(() => {\n      return props.activeId === props.item.id;\n    });\n    const accessibilityProps = computed(\n      () => {\n        let attributes = {\n          \"aria-label\": props.item.label\n        };\n        if (!isDropdownTrigger.value) {\n          return attributes;\n        }\n        attributes = {\n          \"aria-haspopup\": \"true\",\n          \"aria-expanded\": isDropdownOpen.value ? \"false\" : \"true\",\n          \"aria-controls\": props.dropdownId\n        };\n        return attributes;\n      }\n    );\n    const dropdownAttrs = computed(() => {\n      const {\n        id: _,\n        to: _1,\n        onClick: _2,\n        children: _3,\n        as: _4,\n        ...rest\n      } = props.item;\n      return {\n        ...rest,\n        ...accessibilityProps.value\n      };\n    });\n    function onTriggerClick() {\n      var _a, _b;\n      if (isDropdownTrigger.value && typeof props.toggleDropdown === \"function\") {\n        props.toggleDropdown(props.item.id);\n      }\n      (_b = (_a = props.item).onClick) == null ? void 0 : _b.call(_a);\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-navigation-item\", {\n          \"b-navigation-item--open\": isDropdownOpen.value\n        }]),\n        \"data-dropdown-active\": isDropdownOpen.value,\n        onClick: onTriggerClick\n      }, [\n        !isDropdownTrigger.value ? (openBlock(), createBlock(resolveDynamicComponent(componentTag.value), mergeProps({\n          key: 0,\n          id: _ctx.item.id\n        }, {\n          ...hrefProp.value,\n          ...linkAttr.value,\n          \"exact-active-class\": \"b-navigation-item__trigger--active\"\n        }, { class: \"b-navigation-item__trigger\" }), {\n          default: withCtx(() => [\n            createTextVNode(toDisplayString(_ctx.item.label), 1)\n          ]),\n          _: 1\n        }, 16, [\"id\"])) : (openBlock(), createElementBlock(\"button\", mergeProps({\n          key: 1,\n          id: _ctx.item.id,\n          class: \"b-navigation-item__trigger\"\n        }, dropdownAttrs.value), [\n          createTextVNode(toDisplayString(_ctx.item.label) + \" \", 1),\n          createVNode(unref(ChevronDownIcon), {\n            class: normalizeClass([\"b-navigation-item__icon\", {\n              \"b-navigation-item__icon--open\": isDropdownOpen.value\n            }])\n          }, null, 8, [\"class\"])\n        ], 16, _hoisted_2$l))\n      ], 10, _hoisted_1$u);\n    };\n  }\n});\nconst bNavigationBarMenuItem_vue_vue_type_style_index_0_scoped_45f8be30_lang = \"\";\nconst BNavigationBarMenuItem = /* @__PURE__ */ _export_sfc(_sfc_main$F, [[\"__scopeId\", \"data-v-45f8be30\"]]);\nfunction omit(item, ...keys) {\n  const ret = {};\n  let key;\n  for (key in item) {\n    if (!keys.includes(key)) {\n      ret[key] = item[key];\n    }\n  }\n  return ret;\n}\nconst _sfc_main$E = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-navigation-bar-service-button\",\n  props: {\n    as: { default: \"button\" },\n    to: {},\n    label: {},\n    active: { type: Boolean },\n    iconOnly: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useSafeAttrs(useAttrs());\n    const linkProps = computed(() => {\n      const { as, to } = props;\n      if (to) {\n        return linkHrefParser({ to, as });\n      }\n      return {};\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), mergeProps({\n        \"aria-label\": _ctx.iconOnly ? _ctx.label : void 0\n      }, { ...unref(attrs), ...linkProps.value }, {\n        class: [\"b-navigation-service-button\", {\n          \"b-navigation-service-button--active\": _ctx.active,\n          \"b-navigation-service-button--icon-only\": _ctx.iconOnly\n        }]\n      }), {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\", {\n            iconProps: {\n              fill: \"currentColor\",\n              size: _ctx.iconOnly ? \"lg\" : \"md\"\n            }\n          }, void 0, true)\n        ]),\n        _: 3\n      }, 16, [\"aria-label\", \"class\"]);\n    };\n  }\n});\nconst bNavigationBarServiceButton_vue_vue_type_style_index_0_scoped_3753a4ff_lang = \"\";\nconst BNavigationBarServiceButton = /* @__PURE__ */ _export_sfc(_sfc_main$E, [[\"__scopeId\", \"data-v-3753a4ff\"]]);\nconst _hoisted_1$t = { class: \"b-navigation-service-area\" };\nconst _sfc_main$D = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-service-area\",\n  props: {\n    items: {}\n  },\n  setup(__props) {\n    function removeSchemaProps(item) {\n      const attributeMap = omit(\n        item,\n        \"as\",\n        \"to\",\n        \"label\",\n        \"onClick\",\n        \"children\",\n        \"iconComponent\",\n        \"iconPosition\",\n        \"iconOnly\"\n      );\n      return attributeMap;\n    }\n    function isContextMenu(item) {\n      return Array.isArray(item.children) && item.children.length > 0;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$t, [\n        (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {\n          return openBlock(), createElementBlock(Fragment, {\n            key: item.label\n          }, [\n            isContextMenu(item) ? (openBlock(), createBlock(unref(BContextualMenu), { key: 0 }, {\n              trigger: withCtx((triggerProps) => [\n                createVNode(BNavigationBarServiceButton, mergeProps({\n                  label: item.label\n                }, {\n                  ...removeSchemaProps(item),\n                  ...triggerProps\n                }, {\n                  onClick: item.onClick\n                }), {\n                  default: withCtx(({ iconProps }) => [\n                    item.iconComponent ? (openBlock(), createBlock(resolveDynamicComponent(item.iconComponent), normalizeProps(mergeProps({ key: 0 }, iconProps)), null, 16)) : createCommentVNode(\"\", true),\n                    createTextVNode(\" \" + toDisplayString(item.label) + \" \", 1),\n                    createVNode(unref(ChevronDownIcon), mergeProps(iconProps, {\n                      class: [\"b-navigation-service-area__chevron\", {\n                        \"b-navigation-service-area__chevron--open\": triggerProps[\"aria-Expanded\"]\n                      }]\n                    }), null, 16, [\"class\"])\n                  ]),\n                  _: 2\n                }, 1040, [\"label\", \"onClick\"])\n              ]),\n              content: withCtx(() => [\n                createElementVNode(\"div\", null, [\n                  createVNode(unref(BContextualMenuContent), {\n                    items: item.children\n                  }, null, 8, [\"items\"])\n                ])\n              ]),\n              _: 2\n            }, 1024)) : (openBlock(), createBlock(BNavigationBarServiceButton, mergeProps({\n              key: 1,\n              label: item.label,\n              to: item.to,\n              as: item.as,\n              \"icon-only\": item.iconOnly\n            }, removeSchemaProps(item), {\n              onClick: item.onClick\n            }), {\n              default: withCtx(({ iconProps }) => [\n                !item.iconOnly && item.iconComponent && (item.iconPosition === \"left\" || !item.iconPosition) ? (openBlock(), createBlock(resolveDynamicComponent(item.iconComponent), normalizeProps(mergeProps({ key: 0 }, iconProps)), null, 16)) : createCommentVNode(\"\", true),\n                item.iconOnly ? (openBlock(), createBlock(resolveDynamicComponent(item.iconComponent), normalizeProps(mergeProps({ key: 1 }, iconProps)), null, 16)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [\n                  createTextVNode(toDisplayString(item.label), 1)\n                ], 64)),\n                !item.iconOnly && item.iconComponent && item.iconPosition === \"right\" ? (openBlock(), createBlock(resolveDynamicComponent(item.iconComponent), normalizeProps(mergeProps({ key: 3 }, iconProps)), null, 16)) : createCommentVNode(\"\", true)\n              ]),\n              _: 2\n            }, 1040, [\"label\", \"to\", \"as\", \"icon-only\", \"onClick\"]))\n          ], 64);\n        }), 128))\n      ]);\n    };\n  }\n});\nconst bNavigationBarServiceArea_vue_vue_type_style_index_0_scoped_aa85d00d_lang = \"\";\nconst BNavigationBarServiceArea = /* @__PURE__ */ _export_sfc(_sfc_main$D, [[\"__scopeId\", \"data-v-aa85d00d\"]]);\nconst _hoisted_1$s = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 2712 569\"\n};\nconst _hoisted_2$k = /* @__PURE__ */ createStaticVNode('<g clip-path=\"url(#a)\"><path fill=\"#6D6E70\" d=\"M633.872 233.191h-42.674v-57.246h42.674c0-19.776 2.082-35.388 5.204-48.919 4.164-13.531 9.368-23.94 17.695-31.226 8.326-8.326 18.735-13.53 32.266-16.653 13.531-3.122 29.143-5.204 47.878-5.204h21.858c7.286 0 14.572 1.04 21.857 1.04v62.451c-8.326-1.041-16.653-2.082-23.939-2.082-10.408 0-17.694 1.041-23.939 4.164-6.245 3.122-9.368 10.408-9.368 22.898v13.531h53.083v57.246h-53.083v213.373h-89.512V233.191Zm160.289-57.246h86.39v47.879h1.041c6.245-17.694 16.653-30.184 31.225-39.552 14.572-9.367 31.225-13.531 49.96-13.531h10.409c3.122 0 7.286 1.041 10.408 2.082v81.185c-6.245-2.081-11.449-3.122-16.653-4.163-5.204-1.041-11.449-1.041-16.654-1.041-11.449 0-20.816 2.082-29.143 5.204-8.327 3.123-15.613 8.327-20.817 14.572-5.204 6.245-10.408 12.49-12.49 20.817-3.123 8.327-4.163 15.613-4.163 23.939v133.228h-88.472V175.945h-1.041ZM989.84 311.254c0-19.776 3.122-39.552 10.41-56.205 7.28-17.695 16.65-32.266 29.14-45.797 12.49-13.531 27.06-22.899 44.76-30.185 17.69-7.285 36.43-11.449 57.24-11.449 20.82 0 39.56 4.164 57.25 11.449 17.69 7.286 32.27 17.695 45.8 30.185 12.49 12.49 22.9 28.102 29.14 45.797 7.29 17.694 10.41 36.429 10.41 56.205 0 20.817-3.12 39.552-10.41 57.246-7.29 17.695-16.65 32.266-29.14 44.756-12.49 12.49-28.11 22.899-45.8 30.185-17.69 7.286-36.43 11.449-57.25 11.449-20.81 0-40.59-4.163-57.24-11.449-17.7-7.286-32.27-17.695-44.76-30.185-12.49-12.49-21.86-28.102-29.14-44.756-7.288-17.694-10.41-36.429-10.41-57.246Zm88.47 0c0 8.327 1.04 17.694 3.12 26.021 2.09 9.368 5.21 16.653 9.37 23.939 4.16 7.286 9.37 13.531 16.65 17.695 7.29 4.163 15.62 7.285 26.03 7.285 10.4 0 18.73-2.081 26.02-7.285 7.28-4.164 12.49-10.409 16.65-17.695 4.16-7.286 7.29-15.612 9.37-23.939 2.08-9.368 3.12-17.694 3.12-26.021 0-8.327-1.04-17.694-3.12-26.021-2.08-9.368-5.21-16.653-9.37-23.939-4.16-7.286-9.37-13.531-16.65-17.695-7.29-5.204-15.62-7.285-26.02-7.285-10.41 0-18.74 2.081-26.03 7.285-7.28 5.205-12.49 10.409-16.65 17.695-4.16 7.286-7.28 15.612-9.37 23.939-2.08 9.368-3.12 17.694-3.12 26.021Zm227.94-135.309h86.39v37.47h1.04c4.17-7.286 9.37-13.531 15.62-18.735 6.24-5.204 13.53-10.408 20.81-14.572 7.29-4.163 15.62-7.286 23.94-9.367 8.33-2.082 16.66-3.123 24.98-3.123 22.9 0 40.6 4.164 53.09 11.449 13.53 7.286 22.89 16.654 29.14 27.062 6.24 10.409 10.41 21.858 12.49 34.348 2.08 12.49 2.08 22.898 2.08 33.307v172.779h-88.47V288.356c0-9.368-1.04-16.654-4.16-23.94-3.13-7.286-7.29-12.49-13.53-16.653-6.25-4.164-15.62-6.245-27.07-6.245-8.32 0-15.61 2.081-21.85 5.204-6.25 3.122-11.45 7.286-14.58 13.531-4.16 5.204-6.24 11.449-8.32 18.735s-3.12 14.572-3.12 21.858v145.717h-88.48V175.945Zm474.63 57.245h-55.17v122.819c0 10.409 3.12 17.695 8.33 20.817 6.24 3.123 13.53 5.204 22.9 5.204 4.16 0 7.28 0 11.45-1.04h11.45v65.572c-8.33 0-15.62 1.041-23.94 2.082-8.33 1.041-16.66 1.041-23.94 1.041-18.74 0-34.35-2.082-46.84-5.204-12.49-3.123-21.86-8.327-29.14-15.613-7.29-7.286-12.49-16.653-14.58-29.143-3.12-12.49-4.16-27.062-4.16-45.797V233.19h-44.76v-57.246h44.76V93.718h88.47v82.226h55.17v57.246Zm121.78-90.551h-88.48V74.984h88.48v67.655Zm-89.52 33.307h88.48v270.618h-88.48V175.946Zm211.29 157.165c1.04 18.735 6.25 33.307 16.66 44.756 10.4 11.449 24.98 16.654 43.71 16.654 10.41 0 20.82-2.082 30.19-7.286 9.36-5.204 16.65-12.49 20.81-22.899h83.27c-4.16 15.613-10.41 29.144-19.78 40.593-9.36 11.449-19.77 20.817-31.22 28.103-12.49 7.286-24.98 12.49-39.55 16.653-14.57 3.123-29.15 5.204-43.72 5.204-21.86 0-41.63-3.122-60.37-9.367-18.73-6.245-34.34-15.613-46.83-28.103-12.49-12.49-22.9-27.062-30.19-45.797-7.28-17.694-10.41-38.511-10.41-60.369 0-20.816 4.17-39.552 11.45-57.246 7.29-17.694 17.7-32.266 31.23-44.756 13.53-12.49 29.14-21.858 46.83-29.143 17.7-7.286 36.43-10.409 56.21-10.409 23.94 0 45.8 4.164 63.49 12.49 17.7 8.327 33.31 19.776 44.76 35.389 11.45 15.612 20.81 32.266 26.02 52.042 5.2 19.776 8.33 41.633 7.28 64.532h-199.84v-1.041Zm110.33-49.96c-1.04-15.613-6.24-28.103-15.61-39.552-9.37-10.409-21.86-16.654-37.47-16.654s-28.1 5.205-38.51 15.613c-10.41 10.408-16.66 23.939-18.74 40.593h110.33Zm119.7-107.206h86.39v47.879h1.04c6.25-17.694 16.65-30.184 31.23-39.552 14.57-9.367 31.22-13.531 49.96-13.531h10.4c3.13 0 7.29 1.041 10.41 2.082v81.185c-6.24-2.081-11.45-3.122-16.65-4.163-5.21-1.041-11.45-1.041-16.65-1.041-11.45 0-20.82 2.082-29.15 5.204-8.32 3.123-15.61 8.327-20.81 14.572-6.25 6.245-10.41 12.49-12.49 20.817-3.13 8.327-4.17 15.613-4.17 23.939v133.228h-88.47V175.945h-1.04Zm279.99 182.146c0 7.286 1.04 12.49 4.16 17.694 3.12 5.205 6.24 9.368 10.41 12.491 4.16 3.122 9.36 5.204 14.57 7.285 6.24 2.082 11.45 2.082 17.69 2.082 4.17 0 8.33 0 13.53-2.082 5.21-1.04 9.37-3.122 13.53-5.204 4.17-2.081 7.29-5.204 10.41-9.367 3.13-4.164 4.17-8.327 4.17-13.531 0-5.204-2.09-9.368-5.21-12.49-3.12-3.123-7.28-6.245-11.45-8.327-4.16-2.082-9.36-4.163-14.57-5.204-5.2-1.041-9.37-2.082-13.53-3.123-13.53-3.122-28.1-6.245-42.67-9.367-14.58-3.123-28.11-7.286-40.6-12.49-12.49-6.245-22.9-13.531-30.18-23.94-8.33-10.408-11.45-23.939-11.45-42.674 0-16.654 4.16-30.184 11.45-40.593 8.33-10.408 17.69-18.735 30.18-24.98 12.49-6.245 26.02-10.408 40.6-13.531 14.57-3.122 28.1-4.163 41.63-4.163 14.57 0 29.14 1.041 43.71 4.163 14.58 2.082 27.07 7.286 39.56 13.531 12.49 6.245 21.85 15.613 29.14 27.062 7.29 11.449 11.45 26.021 12.49 43.715h-82.23c0-10.408-4.16-18.735-11.45-23.939-7.28-4.164-16.65-7.286-28.1-7.286-4.16 0-8.32 0-12.49 1.041-4.16 1.041-8.32 1.041-12.49 2.081-4.16 1.041-7.28 3.123-9.37 6.245-2.08 3.123-4.16 6.245-4.16 11.45 0 6.245 3.12 11.449 10.41 15.612 6.24 4.164 14.57 7.286 24.98 10.409 10.41 2.081 20.82 5.204 32.27 7.286 11.44 2.081 22.89 4.163 33.3 6.245 13.53 3.122 24.98 7.285 33.31 13.53 9.37 6.246 15.61 12.491 20.82 19.776 5.2 7.286 9.36 14.572 11.45 21.858 2.08 7.286 3.12 13.531 3.12 19.776 0 17.694-4.17 33.307-11.45 45.797-8.33 12.49-17.7 21.858-30.19 30.184-12.49 7.286-26.02 12.49-41.63 16.654-15.61 3.122-31.22 5.204-45.8 5.204-15.61 0-32.26-1.041-47.87-4.163-15.62-3.123-29.15-8.327-41.64-15.613a83.852 83.852 0 0 1-30.18-30.184c-8.33-12.49-12.49-28.103-12.49-46.838h84.31v-2.082Z\"></path><path fill=\"#8BC53F\" d=\"M0 480.91V280.028l187.351-58.287v200.882L0 480.91Z\"></path><path fill=\"#EBD417\" d=\"M187.351 422.623V221.741l126.983 87.431v200.882l-126.983-87.431Z\"></path><path fill=\"#034EA1\" d=\"M126.982 568.342 0 480.911l187.351-58.287 126.983 87.431-187.352 58.287Z\"></path><path fill=\"#712E74\" d=\"m183.188 211.331 51.001-116.574 65.573 155.085-51.001 116.574-65.573-155.085Z\"></path><path fill=\"#009FD1\" d=\"m248.761 366.415 51.001-116.574 171.739-28.102-49.96 115.533-172.78 29.143Z\"></path><path fill=\"#F6921E\" d=\"M299.762 249.843 234.189 94.758l171.739-28.103 65.573 155.085-171.739 28.103Z\"></path><path fill=\"#DA2128\" d=\"M187.352 221.741 59.328 197.802 44.757 70.819 172.78 94.76l14.572 126.982Z\"></path><path fill=\"#25BCBD\" d=\"M172.78 94.758 44.757 70.82 115.534.042l128.023 23.94-70.777 70.776Z\"></path><path fill=\"#00844A\" d=\"m258.129 152.005-70.777 69.736-14.571-126.982 70.777-70.778 14.571 128.024Z\"></path></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h2712v569H0z\"></path></clipPath></defs>', 2);\nconst _hoisted_4$9 = [\n  _hoisted_2$k\n];\nfunction render(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1$s, _hoisted_4$9);\n}\nconst FrontiersLogo = { render };\nconst _sfc_main$C = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-logo\",\n  props: {\n    logoProps: {},\n    withBrand: { type: Boolean }\n  },\n  setup(__props) {\n    const props = __props;\n    const logoAs = computed(() => {\n      var _a, _b;\n      return ((_a = props.logoProps) == null ? void 0 : _a.as) || ((_b = props.logoProps) == null ? void 0 : _b.to) ? \"a\" : \"div\";\n    });\n    const logoParsedProps = computed(() => {\n      const { as: _, to, label, ...rest } = props.logoProps || {};\n      if (logoAs.value === \"div\") {\n        return {};\n      }\n      if (to) {\n        return {\n          \"aria-label\": label,\n          ...rest,\n          ...linkHrefParser({ as: logoAs.value, to })\n        };\n      }\n      return { ...rest, \"aria-label\": label };\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-navigation-bar-logo\", [\n          {\n            \"b-navigation-bar-logo--no-margin\": _ctx.withBrand\n          }\n        ]])\n      }, [\n        (openBlock(), createBlock(resolveDynamicComponent(logoAs.value), mergeProps(logoParsedProps.value, { class: \"b-navigation-bar-logo__item\" }), {\n          default: withCtx(() => [\n            renderSlot(_ctx.$slots, \"default\", {}, () => [\n              createVNode(unref(FrontiersLogo), { class: \"b-navigation-bar-logo__base-logo\" })\n            ], true)\n          ]),\n          _: 3\n        }, 16))\n      ], 2);\n    };\n  }\n});\nconst bNavigationBarLogo_vue_vue_type_style_index_0_scoped_dd1b5d4c_lang = \"\";\nconst BNavigationBarLogo = /* @__PURE__ */ _export_sfc(_sfc_main$C, [[\"__scopeId\", \"data-v-dd1b5d4c\"]]);\nconst _hoisted_1$r = { class: \"b-navigation-bar-top\" };\nconst _hoisted_2$j = { class: \"b-navigation-bar-top__wrapper\" };\nconst _hoisted_3$e = { class: \"b-navigation-bar__brand\" };\nconst _hoisted_4$8 = { class: \"b-navigation-bar-top__service-login-area\" };\nconst _sfc_main$B = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-top-bar\",\n  props: {\n    logoProps: {},\n    withBrand: { type: Boolean }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$r, [\n        createElementVNode(\"div\", _hoisted_2$j, [\n          createVNode(BNavigationBarLogo, {\n            \"logo-props\": _ctx.logoProps,\n            \"with-brand\": _ctx.withBrand\n          }, {\n            default: withCtx(() => [\n              renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n            ]),\n            _: 3\n          }, 8, [\"logo-props\", \"with-brand\"]),\n          createElementVNode(\"div\", _hoisted_3$e, [\n            renderSlot(_ctx.$slots, \"brand\", {}, void 0, true)\n          ]),\n          renderSlot(_ctx.$slots, \"menu-items\", {}, void 0, true),\n          renderSlot(_ctx.$slots, \"action-button\", {}, void 0, true),\n          createElementVNode(\"div\", _hoisted_4$8, [\n            renderSlot(_ctx.$slots, \"service-area\", {}, void 0, true),\n            renderSlot(_ctx.$slots, \"login\", {}, void 0, true)\n          ]),\n          renderSlot(_ctx.$slots, \"dropdown\", {}, void 0, true)\n        ])\n      ]);\n    };\n  }\n});\nconst bNavigationBarTopBar_vue_vue_type_style_index_0_scoped_2048ee95_lang = \"\";\nconst BNavigationBarTopBar$1 = /* @__PURE__ */ _export_sfc(_sfc_main$B, [[\"__scopeId\", \"data-v-2048ee95\"]]);\nconst _hoisted_1$q = {\n  class: \"b-navigation-bar\",\n  \"aria-label\": \"Main navigation bar\"\n};\nconst _sfc_main$A = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-desktop\",\n  props: {\n    items: {},\n    bottomBarItems: {},\n    brandProps: {},\n    bottomBarBrandProps: {},\n    actionButtonProps: {},\n    logoProps: {},\n    serviceAreaItems: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const items = computed(\n      () => props.items.map((item) => ({\n        ...item,\n        id: generateUniqueId()\n      }))\n    );\n    const bottomBarItems = computed(\n      () => {\n        var _a;\n        return (_a = props.bottomBarItems) == null ? void 0 : _a.map((item) => ({\n          ...item,\n          id: generateUniqueId()\n        }));\n      }\n    );\n    const {\n      activeItem: topActiveItem,\n      activeTriggerId: topActiveTriggerId,\n      dropdownRef: topDropdownRef,\n      dropdownId: topDropdownId,\n      closeDropdown: closeTopDropdown,\n      toggleDropdown: toggleTopDropdown,\n      isDropdownOpen: isTopDropdownOpen\n    } = useNavigationBarDropdown(items);\n    const {\n      activeItem: bottomActiveItem,\n      activeTriggerId: bottomActiveTriggerId,\n      dropdownId: bottomDropdownId,\n      dropdownRef: bottomDropdownRef,\n      closeDropdown: closeBottomDropdown,\n      toggleDropdown: toggleBottomDropdown,\n      isDropdownOpen: isBottomDropdownOpen\n    } = useNavigationBarDropdown(bottomBarItems);\n    const hasBottomBar = computed(\n      () => Array.isArray(bottomBarItems.value) && bottomBarItems.value.length > 0\n    );\n    const showtopBarDropdown = computed(() => {\n      return isTopDropdownOpen.value && Array.isArray(items.value) && items.value.length > 0;\n    });\n    const showBottomBarDropdown = computed(() => {\n      return isBottomDropdownOpen.value && hasBottomBar.value;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"nav\", _hoisted_1$q, [\n        createVNode(BNavigationBarTopBar$1, {\n          \"logo-props\": _ctx.logoProps,\n          \"with-brand\": !!_ctx.brandProps\n        }, {\n          logo: withCtx(() => [\n            renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n          ]),\n          brand: withCtx(() => [\n            _ctx.brandProps ? (openBlock(), createBlock(BNavigationBarBrand, {\n              key: 0,\n              \"brand-props\": _ctx.brandProps\n            }, null, 8, [\"brand-props\"])) : createCommentVNode(\"\", true)\n          ]),\n          \"menu-items\": withCtx(() => [\n            (openBlock(true), createElementBlock(Fragment, null, renderList(items.value, (item, index) => {\n              return openBlock(), createBlock(BNavigationBarMenuItem, {\n                key: item.label + index,\n                \"dropdown-id\": unref(topDropdownId),\n                \"toggle-dropdown\": unref(toggleTopDropdown),\n                \"active-id\": unref(topActiveTriggerId),\n                item\n              }, null, 8, [\"dropdown-id\", \"toggle-dropdown\", \"active-id\", \"item\"]);\n            }), 128))\n          ]),\n          \"action-button\": withCtx(() => [\n            _ctx.actionButtonProps ? (openBlock(), createBlock(BNavigationBarActionButton, {\n              key: 0,\n              \"action-button-props\": _ctx.actionButtonProps\n            }, null, 8, [\"action-button-props\"])) : createCommentVNode(\"\", true)\n          ]),\n          \"service-area\": withCtx(() => [\n            renderSlot(_ctx.$slots, \"service-area\", {}, () => [\n              _ctx.serviceAreaItems ? (openBlock(), createBlock(BNavigationBarServiceArea, {\n                key: 0,\n                items: _ctx.serviceAreaItems\n              }, null, 8, [\"items\"])) : createCommentVNode(\"\", true)\n            ], true)\n          ]),\n          login: withCtx(() => [\n            renderSlot(_ctx.$slots, \"login\", {}, void 0, true)\n          ]),\n          dropdown: withCtx(() => [\n            createVNode(Transition, { name: \"b-navigation-bar__dropdown-fade-\" }, {\n              default: withCtx(() => [\n                showtopBarDropdown.value && unref(topActiveItem) ? (openBlock(), createBlock(BNavigationBarDropdown, {\n                  key: 0,\n                  id: unref(topDropdownId),\n                  ref_key: \"topDropdownRef\",\n                  ref: topDropdownRef,\n                  item: unref(topActiveItem),\n                  onClose: unref(closeTopDropdown)\n                }, null, 8, [\"id\", \"item\", \"onClose\"])) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            })\n          ]),\n          _: 3\n        }, 8, [\"logo-props\", \"with-brand\"]),\n        hasBottomBar.value ? (openBlock(), createBlock(BNavigationBarBottomBar, { key: 0 }, {\n          brand: withCtx(() => [\n            _ctx.bottomBarBrandProps ? (openBlock(), createBlock(BNavigationBarBrand, {\n              key: 0,\n              \"brand-props\": _ctx.bottomBarBrandProps,\n              \"is-bottom-bar\": true\n            }, null, 8, [\"brand-props\"])) : createCommentVNode(\"\", true)\n          ]),\n          \"menu-items\": withCtx(() => [\n            (openBlock(true), createElementBlock(Fragment, null, renderList(bottomBarItems.value, (item, index) => {\n              return openBlock(), createBlock(BNavigationBarMenuItem, {\n                key: item.label + index,\n                \"dropdown-id\": unref(bottomDropdownId),\n                \"is-bottom-bar\": true,\n                \"active-id\": unref(bottomActiveTriggerId),\n                \"toggle-dropdown\": unref(toggleBottomDropdown),\n                item\n              }, null, 8, [\"dropdown-id\", \"active-id\", \"toggle-dropdown\", \"item\"]);\n            }), 128))\n          ]),\n          dropdown: withCtx(() => [\n            createVNode(Transition, { name: \"b-navigation-bar__dropdown-second-level-fade-\" }, {\n              default: withCtx(() => [\n                showBottomBarDropdown.value && unref(bottomActiveItem) ? (openBlock(), createBlock(BNavigationBarDropdown, {\n                  key: 0,\n                  id: unref(bottomDropdownId),\n                  ref_key: \"bottomDropdownRef\",\n                  ref: bottomDropdownRef,\n                  item: unref(bottomActiveItem),\n                  onClose: unref(closeBottomDropdown)\n                }, null, 8, [\"id\", \"item\", \"onClose\"])) : createCommentVNode(\"\", true)\n              ]),\n              _: 1\n            })\n          ]),\n          _: 1\n        })) : createCommentVNode(\"\", true)\n      ]);\n    };\n  }\n});\nconst bNavigationBarDesktop_vue_vue_type_style_index_0_scoped_9b20e9ed_lang = \"\";\nconst BNavigationBarDesktop = /* @__PURE__ */ _export_sfc(_sfc_main$A, [[\"__scopeId\", \"data-v-9b20e9ed\"]]);\nconst _hoisted_1$p = { class: \"b-navigation-bar-mobile-brand\" };\nconst _sfc_main$z = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile-brand\",\n  props: {\n    brandProps: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const brandAs = computed(() => {\n      return props.brandProps.as || \"button\";\n    });\n    const brandParsedProps = computed(() => {\n      const { as: _, to, label: __, ...rest } = props.brandProps;\n      if (to) {\n        return {\n          ...rest,\n          ...linkHrefParser({ to, as: brandAs.value })\n        };\n      }\n      return rest;\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$p, [\n        (openBlock(), createBlock(resolveDynamicComponent(brandAs.value), mergeProps({\n          class: \"b-navigation-bar-mobile-brand__link\",\n          \"aria-label\": brandParsedProps.value.label\n        }, brandParsedProps.value), {\n          default: withCtx(() => [\n            createTextVNode(toDisplayString(brandParsedProps.value.label), 1)\n          ]),\n          _: 1\n        }, 16, [\"aria-label\"]))\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobileBrand_vue_vue_type_style_index_0_scoped_1aeeeb5c_lang = \"\";\nconst BNavigationBarMobileBrand = /* @__PURE__ */ _export_sfc(_sfc_main$z, [[\"__scopeId\", \"data-v-1aeeeb5c\"]]);\nconst _sfc_main$y = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile-item\",\n  props: {\n    item: {},\n    activeId: {}\n  },\n  emits: [\"toggle-secondary-menu\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const linkAttr = computed(() => {\n      const { label, onClick, to, as, children, id, ...rest } = props.item;\n      return rest;\n    });\n    const componentTag = computed(\n      () => props.item.as !== void 0 ? props.item.as : props.item.to ? \"a\" : \"button\"\n    );\n    const isDropdownTrigger = computed(() => {\n      return Array.isArray(props.item.children);\n    });\n    const isMobileMenuOpen = computed(() => {\n      return props.activeId === props.item.id;\n    });\n    const hrefProp = computed(() => {\n      if (isDropdownTrigger.value || !props.item.to) {\n        return {};\n      }\n      return linkHrefParser({\n        as: componentTag.value,\n        to: props.item.to\n      });\n    });\n    const accessibilityProps = computed(\n      () => {\n        let attributes = {\n          \"aria-label\": props.item.label\n        };\n        if (!isDropdownTrigger.value) {\n          return attributes;\n        }\n        attributes = {\n          \"aria-haspopup\": \"true\",\n          \"aria-expanded\": isMobileMenuOpen.value ? \"false\" : \"true\",\n          \"aria-controls\": props.activeId ?? void 0\n        };\n        return attributes;\n      }\n    );\n    function onTriggerClick() {\n      var _a, _b;\n      if (isDropdownTrigger.value) {\n        emit(\"toggle-secondary-menu\", props.item.id);\n      }\n      (_b = (_a = props.item).onClick) == null ? void 0 : _b.call(_a);\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: \"b-navigation-mobile-item\",\n        onClick: onTriggerClick\n      }, [\n        !isDropdownTrigger.value ? (openBlock(), createBlock(resolveDynamicComponent(componentTag.value), mergeProps({ key: 0 }, {\n          ...hrefProp.value,\n          ...linkAttr.value,\n          \"exact-active-class\": \"b-navigation-mobile-item__trigger--active\"\n        }, { class: \"b-navigation-mobile-item__trigger\" }), {\n          default: withCtx(() => [\n            createTextVNode(toDisplayString(_ctx.item.label), 1)\n          ]),\n          _: 1\n        }, 16)) : (openBlock(), createElementBlock(\"button\", mergeProps({\n          key: 1,\n          class: \"b-navigation-mobile-item__trigger\"\n        }, accessibilityProps.value), [\n          createTextVNode(toDisplayString(_ctx.item.label) + \" \", 1),\n          createVNode(unref(ChevronRightIcon), { class: \"b-navigation-mobile-item__icon\" })\n        ], 16))\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobileItem_vue_vue_type_style_index_0_scoped_6d717911_lang = \"\";\nconst BNavigationBarMobileItem = /* @__PURE__ */ _export_sfc(_sfc_main$y, [[\"__scopeId\", \"data-v-6d717911\"]]);\nconst _hoisted_1$o = { class: \"b-navigation-bar-mobile-menu-secondary\" };\nconst _hoisted_2$i = { class: \"b-navigation-bar-mobile-menu-secondary__top\" };\nconst _hoisted_3$d = { class: \"b-navigation-bar-mobile-menu-secondary__title\" };\nconst _hoisted_4$7 = { class: \"b-navigation-bar-mobile-menu-secondary__content\" };\nconst _hoisted_5$3 = {\n  key: 0,\n  class: \"b-navigation-bar-mobile-menu-secondary__item-title\"\n};\nconst _hoisted_6$3 = { class: \"b-navigation-bar-mobile-menu-secondary__links\" };\nconst _hoisted_7$2 = { key: 0 };\nconst _hoisted_8$1 = [\"onClick\"];\nconst _hoisted_9$1 = { class: \"b-navigation-bar-mobile-menu-secondary__link-text\" };\nconst _hoisted_10$1 = { key: 1 };\nconst _hoisted_11 = { class: \"b-navigation-bar-mobile-menu-secondary__link-text\" };\nconst _sfc_main$x = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile-menu-secondary\",\n  props: {\n    item: {}\n  },\n  emits: [\"close-mobile-menu-secondary\", \"close-mobile-menu\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const isButton = (item) => \"onClick\" in item && !(\"to\" in item);\n    const isLink = (item) => \"to\" in item;\n    const hasItemsArray = (child) => \"items\" in child;\n    const parseItemChildren = computed(() => {\n      const children = props.item.children ?? [];\n      if (children.length === 0) {\n        return [];\n      }\n      if (hasItemsArray(children[0])) {\n        return children;\n      }\n      return [{ items: children, title: void 0 }];\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$o, [\n        createElementVNode(\"div\", _hoisted_2$i, [\n          createElementVNode(\"button\", {\n            type: \"button\",\n            class: \"b-navigation-bar-mobile-menu-secondary__back-button\",\n            onClick: _cache[0] || (_cache[0] = ($event) => emit(\"close-mobile-menu-secondary\"))\n          }, [\n            createVNode(unref(ChevronLeftIcon), {\n              size: \"lg\",\n              fill: \"currentColor\"\n            }),\n            createElementVNode(\"span\", _hoisted_3$d, toDisplayString(_ctx.item.label), 1)\n          ]),\n          createElementVNode(\"button\", {\n            type: \"button\",\n            class: \"b-navigation-bar-mobile-menu-secondary__close-button\",\n            onClick: _cache[1] || (_cache[1] = ($event) => emit(\"close-mobile-menu\"))\n          }, [\n            createVNode(unref(CloseIcon), {\n              size: \"lg\",\n              fill: \"currentColor\"\n            })\n          ])\n        ]),\n        createElementVNode(\"div\", _hoisted_4$7, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(parseItemChildren.value, ({ title, items: childItem }, index) => {\n            return openBlock(), createElementBlock(\"div\", {\n              key: index,\n              class: normalizeClass([\"b-navigation-bar-mobile-menu-secondary__col\", {\n                \"b-navigation-bar-mobile-menu-secondary__col--with-title\": !!title\n              }])\n            }, [\n              title ? (openBlock(), createElementBlock(\"span\", _hoisted_5$3, toDisplayString(title), 1)) : createCommentVNode(\"\", true),\n              createElementVNode(\"ul\", _hoisted_6$3, [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(childItem, (grandChildItem, childIndex) => {\n                  return openBlock(), createElementBlock(Fragment, { key: childIndex }, [\n                    isButton(grandChildItem) ? (openBlock(), createElementBlock(\"li\", _hoisted_7$2, [\n                      createElementVNode(\"button\", {\n                        class: \"b-navigation-bar-mobile-menu-secondary__link-button\",\n                        onClick: grandChildItem.onClick\n                      }, [\n                        createElementVNode(\"div\", _hoisted_9$1, toDisplayString(grandChildItem.label), 1)\n                      ], 8, _hoisted_8$1)\n                    ])) : isLink(grandChildItem) ? (openBlock(), createElementBlock(\"li\", _hoisted_10$1, [\n                      createVNode(unref(BLink), {\n                        \"color-scheme\": \"black\",\n                        as: grandChildItem.as,\n                        to: grandChildItem.to,\n                        onClick: ($event) => {\n                          var _a;\n                          return (_a = grandChildItem.onClick) == null ? void 0 : _a.call(grandChildItem);\n                        }\n                      }, {\n                        default: withCtx(() => [\n                          createElementVNode(\"div\", _hoisted_11, toDisplayString(grandChildItem.label), 1)\n                        ]),\n                        _: 2\n                      }, 1032, [\"as\", \"to\", \"onClick\"])\n                    ])) : createCommentVNode(\"\", true)\n                  ], 64);\n                }), 128))\n              ])\n            ], 2);\n          }), 128))\n        ])\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobileMenuSecondary_vue_vue_type_style_index_0_scoped_a0492418_lang = \"\";\nconst BNavigationBarMobileMenuSecondary = /* @__PURE__ */ _export_sfc(_sfc_main$x, [[\"__scopeId\", \"data-v-a0492418\"]]);\nconst _hoisted_1$n = { class: \"b-navigation-bar-mobile-side-panel\" };\nconst _hoisted_2$h = { class: \"b-navigation-bar-mobile-side-panel__header\" };\nconst _hoisted_3$c = { class: \"b-navigation-bar-mobile-side-panel__items\" };\nconst _sfc_main$w = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile-side-panel\",\n  props: {\n    logoProps: {}\n  },\n  emits: [\"close-mobile-menu\"],\n  setup(__props, { emit }) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$n, [\n        createElementVNode(\"div\", _hoisted_2$h, [\n          createVNode(BNavigationBarLogo, {\n            \"logo-props\": _ctx.logoProps,\n            \"with-brand\": false\n          }, {\n            default: withCtx(() => [\n              renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n            ]),\n            _: 3\n          }, 8, [\"logo-props\"]),\n          createElementVNode(\"button\", {\n            type: \"button\",\n            class: \"b-navigation-bar-mobile-side-panel__close-button\",\n            onClick: _cache[0] || (_cache[0] = ($event) => emit(\"close-mobile-menu\"))\n          }, [\n            createVNode(unref(CloseIcon), {\n              size: \"lg\",\n              fill: \"currentColor\"\n            })\n          ])\n        ]),\n        createElementVNode(\"div\", _hoisted_3$c, [\n          renderSlot(_ctx.$slots, \"items\", {}, void 0, true)\n        ])\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobileSidePanel_vue_vue_type_style_index_0_scoped_e643b5f8_lang = \"\";\nconst BNavigationBarMobileSidePanel = /* @__PURE__ */ _export_sfc(_sfc_main$w, [[\"__scopeId\", \"data-v-e643b5f8\"]]);\nconst _hoisted_1$m = { class: \"b-navigation-bar-top\" };\nconst _hoisted_2$g = { class: \"b-navigation-bar-top__wrapper\" };\nconst _hoisted_3$b = { class: \"b-navigation-bar__brand\" };\nconst _hoisted_4$6 = { class: \"b-navigation-bar-top__service-login-area\" };\nconst _sfc_main$v = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile-top-bar\",\n  props: {\n    logoProps: {},\n    withBrand: { type: Boolean }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$m, [\n        renderSlot(_ctx.$slots, \"hamburger\", {}, void 0, true),\n        createElementVNode(\"div\", _hoisted_2$g, [\n          createVNode(BNavigationBarLogo, {\n            \"logo-props\": _ctx.logoProps,\n            \"with-brand\": _ctx.withBrand\n          }, {\n            default: withCtx(() => [\n              renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n            ]),\n            _: 3\n          }, 8, [\"logo-props\", \"with-brand\"]),\n          createElementVNode(\"div\", _hoisted_3$b, [\n            renderSlot(_ctx.$slots, \"brand\", {}, void 0, true)\n          ]),\n          createElementVNode(\"div\", _hoisted_4$6, [\n            renderSlot(_ctx.$slots, \"login\", {}, void 0, true)\n          ])\n        ])\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobileTopBar_vue_vue_type_style_index_0_scoped_da64cc2c_lang = \"\";\nconst BNavigationBarTopBar = /* @__PURE__ */ _export_sfc(_sfc_main$v, [[\"__scopeId\", \"data-v-da64cc2c\"]]);\nconst _withScopeId$2 = (n) => (pushScopeId(\"data-v-69dd183c\"), n = n(), popScopeId(), n);\nconst _hoisted_1$l = {\n  class: \"b-navigation-bar\",\n  \"aria-label\": \"Main navigation bar\"\n};\nconst _hoisted_2$f = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-navigation-bar-mobile-menu__divider\" }, null, -1));\nconst _hoisted_3$a = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-navigation-bar-mobile-menu__divider\" }, null, -1));\nconst _sfc_main$u = /* @__PURE__ */ defineComponent({\n  __name: \"b-navigation-bar-mobile\",\n  props: {\n    items: {},\n    bottomBarItems: {},\n    brandProps: {},\n    bottomBarBrandProps: {},\n    actionButtonProps: {},\n    logoProps: {},\n    serviceAreaItems: {}\n  },\n  setup(__props) {\n    const props = __props;\n    const items = computed(\n      () => props.items.map((item) => ({\n        ...item,\n        id: generateUniqueId()\n      }))\n    );\n    const bottomBarItems = computed(\n      () => {\n        var _a;\n        return (_a = props.bottomBarItems) == null ? void 0 : _a.map((item) => ({\n          ...item,\n          id: generateUniqueId()\n        }));\n      }\n    );\n    const isLocked = useScrollLock(document.body);\n    const showMobileMenu = ref(false);\n    const activeMenuSecondaryId = ref(null);\n    const serviceAreaItems = computed(() => {\n      var _a;\n      return (_a = props.serviceAreaItems) == null ? void 0 : _a.map((item) => ({\n        ...item,\n        id: generateUniqueId()\n      }));\n    });\n    const activeMenuSecondaryItem = computed(() => {\n      return [\n        ...items.value,\n        ...bottomBarItems.value || [],\n        ...serviceAreaItems.value || []\n      ].find((item) => item.id === activeMenuSecondaryId.value);\n    });\n    const toggleSecondaryMenu = (id) => {\n      activeMenuSecondaryId.value = activeMenuSecondaryId.value === id ? null : id;\n    };\n    const closeMobileMenu = () => {\n      activeMenuSecondaryId.value = null;\n      showMobileMenu.value = false;\n    };\n    watch(showMobileMenu, (value) => isLocked.value = value);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"nav\", _hoisted_1$l, [\n        createVNode(BNavigationBarTopBar, {\n          \"logo-props\": _ctx.logoProps,\n          \"with-brand\": !!_ctx.brandProps\n        }, {\n          hamburger: withCtx(() => [\n            createElementVNode(\"button\", {\n              class: \"b-navigation-bar__hamburger\",\n              type: \"button\",\n              onClick: _cache[0] || (_cache[0] = ($event) => showMobileMenu.value = true)\n            }, [\n              createVNode(unref(BurgerIcon), {\n                size: \"lg\",\n                fill: \"currentColor\"\n              })\n            ])\n          ]),\n          logo: withCtx(() => [\n            renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n          ]),\n          brand: withCtx(() => [\n            _ctx.brandProps ? (openBlock(), createBlock(BNavigationBarBrand, {\n              key: 0,\n              \"brand-props\": _ctx.brandProps\n            }, null, 8, [\"brand-props\"])) : createCommentVNode(\"\", true)\n          ]),\n          login: withCtx(() => [\n            renderSlot(_ctx.$slots, \"login\", {}, void 0, true)\n          ]),\n          _: 3\n        }, 8, [\"logo-props\", \"with-brand\"]),\n        createVNode(Transition, { name: \"b-navigation-bar__mobile-menu-slide-\" }, {\n          default: withCtx(() => [\n            withDirectives(createVNode(BNavigationBarMobileSidePanel, {\n              \"logo-props\": _ctx.logoProps,\n              onCloseMobileMenu: closeMobileMenu\n            }, {\n              logo: withCtx(() => [\n                renderSlot(_ctx.$slots, \"logo\", {}, void 0, true)\n              ]),\n              items: withCtx(() => [\n                _ctx.bottomBarBrandProps ? (openBlock(), createBlock(BNavigationBarMobileBrand, {\n                  key: 0,\n                  \"brand-props\": _ctx.bottomBarBrandProps\n                }, null, 8, [\"brand-props\"])) : createCommentVNode(\"\", true),\n                (openBlock(true), createElementBlock(Fragment, null, renderList(bottomBarItems.value, (item, index) => {\n                  return openBlock(), createBlock(BNavigationBarMobileItem, {\n                    key: item.label + index,\n                    \"active-id\": activeMenuSecondaryId.value,\n                    item,\n                    onToggleSecondaryMenu: toggleSecondaryMenu\n                  }, null, 8, [\"active-id\", \"item\"]);\n                }), 128)),\n                _hoisted_2$f,\n                (openBlock(true), createElementBlock(Fragment, null, renderList(items.value, (item, index) => {\n                  return openBlock(), createBlock(BNavigationBarMobileItem, {\n                    key: item.label + index,\n                    \"active-id\": activeMenuSecondaryId.value,\n                    item,\n                    onToggleSecondaryMenu: toggleSecondaryMenu\n                  }, null, 8, [\"active-id\", \"item\"]);\n                }), 128)),\n                _ctx.actionButtonProps ? (openBlock(), createBlock(BNavigationBarActionButton, {\n                  key: 1,\n                  \"action-button-props\": _ctx.actionButtonProps,\n                  \"is-mobile-menu\": \"\"\n                }, null, 8, [\"action-button-props\"])) : createCommentVNode(\"\", true),\n                _hoisted_3$a,\n                (openBlock(true), createElementBlock(Fragment, null, renderList(serviceAreaItems.value, (item, index) => {\n                  return openBlock(), createBlock(BNavigationBarMobileItem, {\n                    key: item.label + index,\n                    \"active-id\": activeMenuSecondaryId.value,\n                    item,\n                    onToggleSecondaryMenu: toggleSecondaryMenu\n                  }, null, 8, [\"active-id\", \"item\"]);\n                }), 128))\n              ]),\n              _: 3\n            }, 8, [\"logo-props\"]), [\n              [vShow, showMobileMenu.value]\n            ])\n          ]),\n          _: 3\n        }),\n        createVNode(Transition, { name: \"b-navigation-bar__mobile-menu-slide-\" }, {\n          default: withCtx(() => [\n            activeMenuSecondaryItem.value ? (openBlock(), createBlock(BNavigationBarMobileMenuSecondary, {\n              key: 0,\n              id: activeMenuSecondaryId.value,\n              item: activeMenuSecondaryItem.value,\n              onCloseMobileMenu: closeMobileMenu,\n              onCloseMobileMenuSecondary: _cache[1] || (_cache[1] = ($event) => activeMenuSecondaryId.value = null)\n            }, null, 8, [\"id\", \"item\"])) : createCommentVNode(\"\", true)\n          ]),\n          _: 1\n        })\n      ]);\n    };\n  }\n});\nconst bNavigationBarMobile_vue_vue_type_style_index_0_scoped_69dd183c_lang = \"\";\nconst BNavigationBarMobile = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"__scopeId\", \"data-v-69dd183c\"]]);\nconst _sfc_main$t = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-navigation-bar\",\n  props: {\n    items: {},\n    bottomBarItems: {},\n    brandProps: {},\n    bottomBarBrandProps: {},\n    actionButtonProps: {},\n    logoProps: {},\n    serviceAreaItems: {}\n  },\n  setup(__props) {\n    const breakpoint = useBreakpoints();\n    const smallerThanMd = breakpoint.smaller(\"md\");\n    const isMobile = computed(() => isBrowser() ? smallerThanMd.value : false);\n    return (_ctx, _cache) => {\n      return !isMobile.value ? (openBlock(), createBlock(BNavigationBarDesktop, normalizeProps(mergeProps({ key: 0 }, { ..._ctx.$props, ..._ctx.$attrs })), {\n        logo: withCtx(() => [\n          renderSlot(_ctx.$slots, \"logo\")\n        ]),\n        login: withCtx(() => [\n          renderSlot(_ctx.$slots, \"login\")\n        ]),\n        \"service-area\": withCtx(() => [\n          renderSlot(_ctx.$slots, \"service-area\")\n        ]),\n        _: 3\n      }, 16)) : (openBlock(), createBlock(BNavigationBarMobile, normalizeProps(mergeProps({ key: 1 }, { ..._ctx.$props, ..._ctx.$attrs })), {\n        logo: withCtx(() => [\n          renderSlot(_ctx.$slots, \"logo\")\n        ]),\n        login: withCtx(() => [\n          renderSlot(_ctx.$slots, \"login\")\n        ]),\n        _: 3\n      }, 16));\n    };\n  }\n});\nfunction roundDown(number, step) {\n  return number % step === 0 ? number : Math.floor(number / step) * step;\n}\nfunction roundUp(number, step) {\n  return number % step === 0 ? number : Math.ceil(number / step) * step;\n}\nconst _hoisted_1$k = [\"inputmode\", \"aria-invalid\", \"onKeydown\"];\nconst _hoisted_2$e = { class: \"b-number-input__stepper\" };\nconst _hoisted_3$9 = [\"aria-label\", \"disabled\"];\nconst _hoisted_4$5 = [\"aria-label\", \"disabled\"];\nconst _sfc_main$s = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-number-input\",\n  props: {\n    invalid: { type: Boolean },\n    readonly: { type: Boolean },\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean },\n    modelValue: {},\n    errorMessage: {},\n    label: {},\n    hint: {},\n    max: { default: Number.POSITIVE_INFINITY },\n    min: { default: Number.NEGATIVE_INFINITY },\n    step: {},\n    decimal: { type: Boolean }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const id = generateUniqueId();\n    const decimalNumberShape = /^[+-]?\\d*\\.?\\d*([Ee][+-]?)?\\d*$/;\n    const integerNumberShape = /^[+-]?\\d*([Ee]\\+?)?\\d*$/;\n    const inputRef = ref(null);\n    __expose({\n      input: inputRef\n    });\n    const inputAttrs = useSafeAttrs(useAttrs());\n    watch(\n      () => props.modelValue,\n      (modelValue) => {\n        if (valueAsNumber.value !== modelValue) {\n          internalModel.value = formatNumberToString(props.modelValue);\n        }\n      }\n    );\n    const internalModel = ref(formatNumberToString(props.modelValue));\n    const isPopulated = computed(() => !!internalModel.value);\n    const valueAsNumber = computed(() => {\n      return Number(internalModel.value.replaceAll(\",\", \"\"));\n    });\n    const hasReachedMax = computed(() => {\n      const stepValue = props.step ?? 1;\n      return valueAsNumber.value + stepValue > props.max;\n    });\n    const isIncrementDisabled = computed(() => {\n      if (props.disabled) {\n        return true;\n      }\n      return hasReachedMax.value;\n    });\n    const hasReachedMin = computed(() => {\n      const stepValue = props.step ?? 1;\n      return valueAsNumber.value - stepValue < props.min;\n    });\n    const isDecrementDisabled = computed(() => {\n      if (props.disabled) {\n        return true;\n      }\n      return hasReachedMin.value;\n    });\n    const inputmode = computed(\n      () => (\n        // Some devices numeric/decimal keyboards do not include propert decimal separator or minus sign.\n        // We fall back to the text one.\n        props.decimal || props.min < 0 ? \"text\" : \"numeric\"\n      )\n    );\n    function discardInvalidValues(event) {\n      const inputEvent = event;\n      const data = inputEvent.data;\n      if (!data) {\n        return;\n      }\n      const futureValue = getFutureValue(event.target, data);\n      if (!isNumber(futureValue)) {\n        return event.preventDefault();\n      }\n    }\n    function getFutureValue(inputElement, newChars) {\n      const actualValue = inputElement.value;\n      return actualValue.slice(0, Math.max(0, inputElement.selectionStart ?? 0)) + newChars + actualValue.slice(Math.max(0, inputElement.selectionEnd ?? 0));\n    }\n    function emitUpdate() {\n      if (!internalModel.value) {\n        return emit(\"update:modelValue\", null);\n      }\n      if (!Number.isNaN(valueAsNumber.value)) {\n        emit(\"update:modelValue\", valueAsNumber.value);\n      }\n    }\n    function restoreValidValue() {\n      if (props.modelValue !== valueAsNumber.value) {\n        internalModel.value = formatNumberToString(props.modelValue);\n      }\n    }\n    function increment() {\n      if (props.readonly || props.disabled) {\n        return;\n      }\n      const step = props.step ?? 1;\n      if (valueAsNumber.value < props.min) {\n        emit(\"update:modelValue\", roundUp(props.min, step));\n      } else {\n        const minValue = Math.min((valueAsNumber.value || 0) + step, props.max);\n        emit(\"update:modelValue\", roundDown(minValue, step));\n      }\n    }\n    function decrement() {\n      if (props.readonly || props.disabled) {\n        return;\n      }\n      const step = props.step ?? 1;\n      if (valueAsNumber.value > props.max) {\n        emit(\"update:modelValue\", roundDown(props.max, step));\n      } else {\n        const minValue = Math.max((valueAsNumber.value || 0) - step, props.min);\n        emit(\"update:modelValue\", roundUp(minValue, step));\n      }\n    }\n    function formatNumberToString(number) {\n      return (number == null ? void 0 : number.toLocaleString(\"fullwide\", { useGrouping: false })) ?? \"\";\n    }\n    function isNumber(numberString) {\n      return props.decimal ? decimalNumberShape.test(numberString) : integerNumberShape.test(numberString);\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(BFormControl, {\n        \"label-for\": unref(id),\n        populated: isPopulated.value,\n        label: _ctx.label,\n        invalid: _ctx.invalid,\n        \"color-scheme\": _ctx.colorScheme,\n        disabled: _ctx.disabled,\n        readonly: _ctx.readonly,\n        hint: _ctx.hint\n      }, {\n        control: withCtx(() => [\n          withDirectives(createElementVNode(\"input\", mergeProps({\n            ref_key: \"inputRef\",\n            ref: inputRef,\n            \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => internalModel.value = $event),\n            class: \"b-number-input\",\n            inputmode: inputmode.value,\n            type: \"text\",\n            \"aria-invalid\": _ctx.invalid\n          }, {\n            ...unref(inputAttrs),\n            disabled: _ctx.disabled,\n            id: unref(id),\n            readonly: _ctx.readonly\n          }, {\n            onBeforeinput: discardInvalidValues,\n            onInput: emitUpdate,\n            onBlur: restoreValidValue,\n            onKeydown: [\n              withKeys(withModifiers(increment, [\"prevent\"]), [\"up\"]),\n              withKeys(withModifiers(decrement, [\"prevent\"]), [\"down\"])\n            ]\n          }), null, 16, _hoisted_1$k), [\n            [vModelText, internalModel.value]\n          ])\n        ]),\n        suffix: withCtx(() => [\n          createElementVNode(\"div\", _hoisted_2$e, [\n            createElementVNode(\"button\", {\n              class: normalizeClass([\"b-number-input__stepper-action\", [\n                `b-number-input__stepper-action--${_ctx.colorScheme}`,\n                {\n                  \"b-number-input__stepper-action--has-reached-limit\": !_ctx.disabled && hasReachedMax.value\n                }\n              ]]),\n              \"aria-label\": `Increase by ${_ctx.step ?? 1}`,\n              disabled: isIncrementDisabled.value,\n              tabindex: \"-1\",\n              onClick: increment\n            }, [\n              createVNode(unref(ChevronUpIcon), { size: \"sm\" })\n            ], 10, _hoisted_3$9),\n            createElementVNode(\"button\", {\n              class: normalizeClass([\"b-number-input__stepper-action\", [\n                `b-number-input__stepper-action--${_ctx.colorScheme}`,\n                {\n                  \"b-number-input__stepper-action--has-reached-limit\": !_ctx.disabled && hasReachedMin.value\n                }\n              ]]),\n              \"aria-label\": `Decrease by ${_ctx.step ?? 1}`,\n              disabled: isDecrementDisabled.value,\n              tabindex: \"-1\",\n              onClick: decrement\n            }, [\n              createVNode(unref(ChevronDownIcon), { size: \"sm\" })\n            ], 10, _hoisted_4$5)\n          ])\n        ]),\n        error: withCtx(() => [\n          _ctx.invalid && _ctx.errorMessage ? (openBlock(), createBlock(unref(BFormError), {\n            key: 0,\n            \"error-message\": _ctx.errorMessage,\n            \"color-scheme\": _ctx.colorScheme\n          }, null, 8, [\"error-message\", \"color-scheme\"])) : createCommentVNode(\"\", true)\n        ]),\n        _: 1\n      }, 8, [\"label-for\", \"populated\", \"label\", \"invalid\", \"color-scheme\", \"disabled\", \"readonly\", \"hint\"]);\n    };\n  }\n});\nconst bNumberInput_vue_vue_type_style_index_0_scoped_b44c2387_lang = \"\";\nconst bNumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"__scopeId\", \"data-v-b44c2387\"]]);\nconst _sfc_main$r = /* @__PURE__ */ defineComponent({\n  __name: \"b-pagination-control\",\n  props: {\n    as: { default: \"button\" },\n    disabled: { type: Boolean, default: false },\n    hideOnMobile: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), {\n        disabled: _ctx.disabled,\n        tabindex: _ctx.disabled ? -1 : 0,\n        \"aria-hidden\": _ctx.disabled,\n        class: normalizeClass([\"b-pagination-control\", {\n          \"b-pagination-control--disabled\": _ctx.disabled,\n          \"b-pagination-control--hide-on-mobile\": _ctx.hideOnMobile\n        }])\n      }, {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ]),\n        _: 3\n      }, 8, [\"disabled\", \"tabindex\", \"aria-hidden\", \"class\"]);\n    };\n  }\n});\nconst bPaginationControl_vue_vue_type_style_index_0_scoped_b282db57_lang = \"\";\nconst BPaginationControl = /* @__PURE__ */ _export_sfc(_sfc_main$r, [[\"__scopeId\", \"data-v-b282db57\"]]);\nconst _sfc_main$q = /* @__PURE__ */ defineComponent({\n  __name: \"b-pagination-link\",\n  props: {\n    isActive: { type: Boolean },\n    page: {},\n    as: {}\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), {\n        class: normalizeClass([\"b-pagination-link\", {\n          \"b-pagination-link--active\": _ctx.isActive\n        }])\n      }, {\n        default: withCtx(() => [\n          createTextVNode(toDisplayString(_ctx.page), 1)\n        ]),\n        _: 1\n      }, 8, [\"class\"]);\n    };\n  }\n});\nconst bPaginationLink_vue_vue_type_style_index_0_scoped_6e7a2a98_lang = \"\";\nconst BPaginationLink = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"__scopeId\", \"data-v-6e7a2a98\"]]);\nconst _hoisted_1$j = { class: \"b-pagination-input\" };\nconst _hoisted_2$d = [\"aria-label\", \"disabled\"];\nconst _hoisted_3$8 = { class: \"b-pagination-input__counter\" };\nconst _sfc_main$p = /* @__PURE__ */ defineComponent({\n  __name: \"b-pagination-number-input\",\n  props: {\n    modelValue: {},\n    pagesCount: {},\n    delay: {}\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const internalModel = ref(props.modelValue.toString());\n    watch(\n      () => props.modelValue,\n      (newValue) => {\n        internalModel.value = newValue.toString();\n      }\n    );\n    const hasOnlyOnePage = computed(() => props.pagesCount === 1);\n    const onInput = (event) => {\n      const pageNum = Number.parseInt(event.target.value);\n      if (Number.isNaN(pageNum)) {\n        return;\n      }\n      if (pageNum === props.modelValue) {\n        return;\n      }\n      if (pageNum === 0) {\n        internalModel.value = \"1\";\n        emit(\"update:modelValue\", 1);\n        return;\n      }\n      if (pageNum > props.pagesCount) {\n        internalModel.value = props.pagesCount.toString();\n        emit(\"update:modelValue\", props.pagesCount);\n        return;\n      }\n      emit(\"update:modelValue\", pageNum);\n    };\n    const debouncedOnInput = useDebounceFn(\n      onInput,\n      props.delay\n    );\n    const onBlur = () => {\n      const currentValue = Number.parseInt(internalModel.value);\n      if (Number.isNaN(currentValue)) {\n        internalModel.value = props.modelValue.toString();\n        return;\n      }\n    };\n    function discardInvalidValues(event) {\n      const inputEvent = event;\n      const data = inputEvent.data;\n      if (!data) {\n        return;\n      }\n      if (!isDigitOnly(data)) {\n        return event.preventDefault();\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"li\", _hoisted_1$j, [\n        withDirectives(createElementVNode(\"input\", {\n          \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => internalModel.value = $event),\n          class: normalizeClass([\"b-pagination-input__control\", {\n            \"b-pagination-input__control--disabled\": hasOnlyOnePage.value\n          }]),\n          type: \"text\",\n          inputmode: \"numeric\",\n          \"aria-label\": `Goto page ${_ctx.modelValue} of ${_ctx.pagesCount}`,\n          disabled: hasOnlyOnePage.value,\n          onBeforeinput: discardInvalidValues,\n          onInput: _cache[1] || (_cache[1] = //@ts-ignore\n          (...args) => unref(debouncedOnInput) && unref(debouncedOnInput)(...args)),\n          onBlur\n        }, null, 42, _hoisted_2$d), [\n          [vModelText, internalModel.value]\n        ]),\n        createElementVNode(\"span\", _hoisted_3$8, \"of \" + toDisplayString(_ctx.pagesCount), 1)\n      ]);\n    };\n  }\n});\nconst bPaginationNumberInput_vue_vue_type_style_index_0_scoped_cb71e9e8_lang = \"\";\nconst BPaginationNumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"__scopeId\", \"data-v-cb71e9e8\"]]);\nconst _hoisted_1$i = { class: \"b-pagination-per-page-select\" };\nconst _hoisted_2$c = [\"for\"];\nconst _hoisted_3$7 = [\"id\", \"value\"];\nconst _hoisted_4$4 = [\"value\"];\nconst _sfc_main$o = /* @__PURE__ */ defineComponent({\n  __name: \"b-pagination-per-page-select\",\n  props: {\n    itemsPerPageOptions: {},\n    itemsPerPage: {}\n  },\n  emits: [\"update:items-per-page\"],\n  setup(__props, { emit }) {\n    const controlId = generateUniqueId();\n    const change = (event) => {\n      const selected = Number.parseInt(event.target.value);\n      emit(\"update:items-per-page\", selected);\n    };\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$i, [\n        createElementVNode(\"label\", {\n          for: unref(controlId),\n          class: \"b-pagination-per-page-select__label\"\n        }, \" Items per page \", 8, _hoisted_2$c),\n        createElementVNode(\"select\", {\n          id: unref(controlId),\n          value: _ctx.itemsPerPage,\n          class: \"b-pagination-per-page-select__control\",\n          onChange: _cache[0] || (_cache[0] = ($event) => change($event))\n        }, [\n          (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.itemsPerPageOptions, (option) => {\n            return openBlock(), createElementBlock(\"option\", {\n              key: option,\n              value: option\n            }, toDisplayString(option), 9, _hoisted_4$4);\n          }), 128))\n        ], 40, _hoisted_3$7),\n        createVNode(unref(ChevronDownIcon), {\n          size: \"md\",\n          class: \"b-pagination-per-page-select__icon\"\n        })\n      ]);\n    };\n  }\n});\nconst bPaginationPerPageSelect_vue_vue_type_style_index_0_scoped_b7e3c914_lang = \"\";\nconst BPaginationPerPageSelect = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"__scopeId\", \"data-v-b7e3c914\"]]);\nconst _hoisted_1$h = { class: \"b-pagination-summary\" };\nconst _hoisted_2$b = { class: \"b-pagination-summary__summary\" };\nconst _sfc_main$n = /* @__PURE__ */ defineComponent({\n  __name: \"b-pagination-summary\",\n  props: {\n    itemsCountName: {},\n    itemsCount: {},\n    rangeOfItems: {}\n  },\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$h, [\n        renderSlot(_ctx.$slots, \"select\", {}, void 0, true),\n        createElementVNode(\"div\", _hoisted_2$b, toDisplayString(_ctx.rangeOfItems) + \" of \" + toDisplayString(_ctx.itemsCount) + \" \" + toDisplayString(_ctx.itemsCountName), 1)\n      ]);\n    };\n  }\n});\nconst bPaginationSummary_vue_vue_type_style_index_0_scoped_206e3070_lang = \"\";\nconst BPaginationSummary = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"__scopeId\", \"data-v-206e3070\"]]);\nconst usePagination = ({\n  page,\n  itemsPerPage,\n  itemsCount,\n  itemsPerPageOptions,\n  onPageUpdate,\n  onItemsPerPageUpdate\n}) => {\n  const pageModel = computed({\n    get() {\n      return page.value;\n    },\n    set(newPage) {\n      if (newPage !== page.value) {\n        onPageUpdate(newPage);\n      }\n    }\n  });\n  const itemsPerPageModel = computed({\n    get() {\n      return itemsPerPage.value;\n    },\n    set(newItemsPerPage) {\n      onItemsPerPageUpdate(newItemsPerPage);\n    }\n  });\n  watch(\n    () => itemsPerPageModel.value,\n    () => {\n      goToFirstPage();\n    }\n  );\n  watchEffect(() => {\n    if (Array.isArray(itemsPerPageOptions.value) && !itemsPerPageOptions.value.includes(itemsPerPageModel.value)) {\n      console.warn(\n        \"You are using an invalid itemsPerPage value. Please use one of the following values:\",\n        itemsPerPageOptions.value\n      );\n    }\n  });\n  const isFirstPageButtonDisabled = computed(\n    () => pageModel.value <= 1\n  );\n  const isLastPageButtonDisabled = computed(\n    () => pageModel.value >= pagesCount.value\n  );\n  const pagesCount = computed(\n    () => Math.ceil(itemsCount.value / itemsPerPageModel.value)\n  );\n  const perPageItemsRange = computed(() => {\n    const _itemsPerPage = itemsPerPageModel.value;\n    const _page = pageModel.value;\n    if (Number.isNaN(_itemsPerPage) || Number.isNaN(_page)) {\n      return null;\n    }\n    const firstItem = _itemsPerPage * (_page - 1) + 1;\n    const lastItem = Math.min(_itemsPerPage * _page, itemsCount.value);\n    return firstItem === lastItem ? `${lastItem}` : `${firstItem}-${lastItem}`;\n  });\n  const changePage = (newPage) => {\n    pageModel.value = newPage;\n  };\n  const goToFirstPage = () => {\n    changePage(1);\n  };\n  const goToLastPage = () => {\n    if (pageModel.value < pagesCount.value) {\n      changePage(pagesCount.value);\n    }\n  };\n  const goToPreviousPage = () => {\n    if (pageModel.value > 1) {\n      changePage(pageModel.value - 1);\n    }\n  };\n  const goToNextPage = () => {\n    if (pageModel.value < pagesCount.value) {\n      changePage(pageModel.value + 1);\n    }\n  };\n  return {\n    pageModel,\n    itemsPerPageModel,\n    changePage,\n    goToFirstPage,\n    goToLastPage,\n    goToPreviousPage,\n    goToNextPage,\n    isFirstPageButtonDisabled,\n    isLastPageButtonDisabled,\n    perPageItemsRange,\n    pagesCount\n  };\n};\nconst _hoisted_1$g = { class: \"b-pagination-summary__text\" };\nconst _hoisted_2$a = [\"aria-label\"];\nconst _hoisted_3$6 = { class: \"b-pagination__list\" };\nconst _hoisted_4$3 = {\n  key: 0,\n  class: \"b-pagination__list-item b-pagination__first-page b-pagination__list-item-control\"\n};\nconst _hoisted_5$2 = { class: \"b-pagination__list-item b-pagination__previous-page b-pagination__list-item-control\" };\nconst _hoisted_6$2 = {\n  key: 0,\n  class: \"b-pagination__list-item-control-label\"\n};\nconst _hoisted_7$1 = { class: \"b-pagination__list-item b-pagination__next-page b-pagination__list-item-control\" };\nconst _hoisted_8 = {\n  key: 0,\n  class: \"b-pagination__list-item-control-label\"\n};\nconst _hoisted_9 = {\n  key: 3,\n  class: \"b-pagination__list-item b-pagination__last-page b-pagination__list-item-control\"\n};\nconst _hoisted_10 = { class: \"b-pagination-summary__text\" };\nconst _sfc_main$m = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-pagination\",\n  props: {\n    display: { default: \"block\" },\n    page: {},\n    itemsCount: {},\n    itemsPerPage: {},\n    itemsPerPageOptions: { default: null },\n    itemsCountName: { default: \"items\" },\n    navAriaLabel: { default: \"Pagination Navigation\" },\n    nextPageAriaLabel: { default: \"Go to the next page\" },\n    previousPageAriaLabel: { default: \"Go to the previous page\" },\n    firstPageAriaLabel: { default: \"Go to the first page\" },\n    lastPageAriaLabel: { default: \"Go to the last page\" },\n    pageLinkAriaLabel: { type: Function, default: (pageNumber) => `Go to page ${pageNumber}` },\n    controlsAs: { default: \"button\" },\n    genHref: {},\n    additionalLinkProps: {},\n    inputDebounceDelay: { default: 1e3 }\n  },\n  emits: [\"update:page\", \"update:items-per-page\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const paginationAttrs = useSafeAttrs(useAttrs());\n    const breakpoints = useBreakpoints();\n    const maxViewportSupportedForLine = useMediaQuery(\"(max-width: 460px)\");\n    const shouldForceBlockVariant = computed(() => {\n      return maxViewportSupportedForLine.value;\n    });\n    const {\n      changePage,\n      goToFirstPage,\n      goToLastPage,\n      goToNextPage,\n      goToPreviousPage,\n      isFirstPageButtonDisabled,\n      isLastPageButtonDisabled,\n      pageModel,\n      pagesCount,\n      itemsPerPageModel,\n      perPageItemsRange\n    } = usePagination({\n      page: toRef(props, \"page\"),\n      itemsCount: toRef(props, \"itemsCount\"),\n      itemsPerPage: toRef(props, \"itemsPerPage\"),\n      itemsPerPageOptions: toRef(props, \"itemsPerPageOptions\"),\n      onItemsPerPageUpdate: (newItemsPerPageValue) => {\n        emit(\"update:items-per-page\", newItemsPerPageValue);\n      },\n      onPageUpdate: (newPageValue) => {\n        emit(\"update:page\", newPageValue);\n      }\n    });\n    const isSmallerThanMd = breakpoints.smaller(\"md\");\n    const display = computed(() => {\n      if (shouldForceBlockVariant.value) {\n        return \"block\";\n      }\n      return props.display;\n    });\n    const showItemsPerPageSelect = computed(() => {\n      if (display.value === \"line\" && isSmallerThanMd.value) {\n        return false;\n      }\n      return Array.isArray(props.itemsPerPageOptions);\n    });\n    const showControlTextLabel = breakpoints.greaterOrEqual(\"md\");\n    const hideFirstAndLastPageControls = computed(() => {\n      return isSmallerThanMd.value && variant.value === \"up-to-5\";\n    });\n    const variant = computed(() => {\n      return pagesCount.value >= 6 ? \"over-5\" : \"up-to-5\";\n    });\n    const genLinkProps = (page) => {\n      var _a;\n      const href = (_a = props.genHref) == null ? void 0 : _a.call(props, page);\n      if (props.controlsAs === \"a\") {\n        return {\n          ...props.additionalLinkProps,\n          \"href\": href,\n          \"aria-current\": page === pageModel.value ? \"page\" : void 0\n        };\n      } else if (props.controlsAs === \"router-link\" || typeof props.controlsAs === \"object\") {\n        return {\n          ...props.additionalLinkProps,\n          \"to\": href,\n          \"aria-current\": page === pageModel.value ? \"page\" : void 0\n        };\n      }\n      return {};\n    };\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        class: [\"b-pagination\", `b-pagination--${display.value}`]\n      }, unref(paginationAttrs)), [\n        unref(perPageItemsRange) && display.value === \"line\" ? (openBlock(), createBlock(BPaginationSummary, {\n          key: 0,\n          \"items-count\": _ctx.itemsCount,\n          \"items-count-name\": _ctx.itemsCountName,\n          \"range-of-items\": unref(perPageItemsRange)\n        }, createSlots({ _: 2 }, [\n          showItemsPerPageSelect.value ? {\n            name: \"select\",\n            fn: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_1$g, toDisplayString(unref(capitalizeFirstLetter)(_ctx.itemsCountName)) + \" per page \", 1),\n              createVNode(BPaginationPerPageSelect, {\n                \"items-per-page\": unref(itemsPerPageModel),\n                \"onUpdate:itemsPerPage\": _cache[0] || (_cache[0] = ($event) => isRef(itemsPerPageModel) ? itemsPerPageModel.value = $event : null),\n                \"items-per-page-options\": _ctx.itemsPerPageOptions\n              }, null, 8, [\"items-per-page\", \"items-per-page-options\"])\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1032, [\"items-count\", \"items-count-name\", \"range-of-items\"])) : createCommentVNode(\"\", true),\n        createElementVNode(\"nav\", {\n          role: \"navigation\",\n          \"aria-label\": _ctx.navAriaLabel\n        }, [\n          createElementVNode(\"ul\", _hoisted_3$6, [\n            !hideFirstAndLastPageControls.value ? (openBlock(), createElementBlock(\"li\", _hoisted_4$3, [\n              createVNode(BPaginationControl, mergeProps(genLinkProps(1), {\n                disabled: unref(isFirstPageButtonDisabled),\n                \"aria-label\": _ctx.firstPageAriaLabel,\n                as: _ctx.controlsAs,\n                onClick: unref(goToFirstPage)\n              }), {\n                default: withCtx(() => [\n                  createVNode(unref(FirstPageIcon), { size: \"md\" })\n                ]),\n                _: 1\n              }, 16, [\"disabled\", \"aria-label\", \"as\", \"onClick\"])\n            ])) : createCommentVNode(\"\", true),\n            createElementVNode(\"li\", _hoisted_5$2, [\n              createVNode(BPaginationControl, mergeProps(genLinkProps(unref(pageModel) > 1 ? unref(pageModel) - 1 : 1), {\n                disabled: unref(isFirstPageButtonDisabled),\n                \"aria-label\": _ctx.previousPageAriaLabel,\n                as: _ctx.controlsAs,\n                onClick: unref(goToPreviousPage)\n              }), {\n                default: withCtx(() => [\n                  createVNode(unref(ChevronLeftIcon), { size: \"md\" }),\n                  unref(showControlTextLabel) ? (openBlock(), createElementBlock(\"span\", _hoisted_6$2, \"Previous\")) : createCommentVNode(\"\", true)\n                ]),\n                _: 1\n              }, 16, [\"disabled\", \"aria-label\", \"as\", \"onClick\"])\n            ]),\n            variant.value === \"up-to-5\" ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(pagesCount), (pageNumber, idx) => {\n              return openBlock(), createElementBlock(\"li\", {\n                key: pageNumber,\n                class: normalizeClass([\"b-pagination__list-item b-pagination__list-item-number\", {\n                  \"b-pagination__list-item-number--first\": idx === 0,\n                  \"b-pagination__list-item-number--last\": idx === unref(pagesCount) - 1\n                }])\n              }, [\n                createVNode(BPaginationLink, mergeProps(genLinkProps(pageNumber), {\n                  \"aria-label\": _ctx.pageLinkAriaLabel(pageNumber),\n                  \"aria-current\": pageNumber === unref(pageModel) ? \"page\" : void 0,\n                  \"is-active\": pageNumber === unref(pageModel),\n                  page: pageNumber,\n                  as: _ctx.controlsAs,\n                  onClick: ($event) => unref(changePage)(pageNumber)\n                }), null, 16, [\"aria-label\", \"aria-current\", \"is-active\", \"page\", \"as\", \"onClick\"])\n              ], 2);\n            }), 128)) : (openBlock(), createBlock(BPaginationNumberInput, {\n              key: 2,\n              modelValue: unref(pageModel),\n              \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => isRef(pageModel) ? pageModel.value = $event : null),\n              \"pages-count\": unref(pagesCount),\n              delay: _ctx.inputDebounceDelay\n            }, null, 8, [\"modelValue\", \"pages-count\", \"delay\"])),\n            createElementVNode(\"li\", _hoisted_7$1, [\n              createVNode(BPaginationControl, mergeProps(\n                genLinkProps(unref(pageModel) < unref(pagesCount) ? unref(pageModel) + 1 : unref(pagesCount)),\n                {\n                  as: _ctx.controlsAs,\n                  \"aria-label\": _ctx.nextPageAriaLabel,\n                  disabled: unref(isLastPageButtonDisabled),\n                  onClick: unref(goToNextPage)\n                }\n              ), {\n                default: withCtx(() => [\n                  unref(showControlTextLabel) ? (openBlock(), createElementBlock(\"span\", _hoisted_8, \"Next\")) : createCommentVNode(\"\", true),\n                  createVNode(unref(ChevronRightIcon), { size: \"md\" })\n                ]),\n                _: 1\n              }, 16, [\"as\", \"aria-label\", \"disabled\", \"onClick\"])\n            ]),\n            !hideFirstAndLastPageControls.value ? (openBlock(), createElementBlock(\"li\", _hoisted_9, [\n              createVNode(BPaginationControl, mergeProps(genLinkProps(unref(pagesCount)), {\n                as: _ctx.controlsAs,\n                \"aria-label\": _ctx.lastPageAriaLabel,\n                disabled: unref(isLastPageButtonDisabled),\n                onClick: unref(goToLastPage)\n              }), {\n                default: withCtx(() => [\n                  createVNode(unref(LastPageIcon), { size: \"md\" })\n                ]),\n                _: 1\n              }, 16, [\"as\", \"aria-label\", \"disabled\", \"onClick\"])\n            ])) : createCommentVNode(\"\", true)\n          ])\n        ], 8, _hoisted_2$a),\n        unref(perPageItemsRange) && display.value === \"block\" ? (openBlock(), createBlock(BPaginationSummary, {\n          key: 1,\n          \"items-count\": _ctx.itemsCount,\n          \"items-count-name\": _ctx.itemsCountName,\n          \"range-of-items\": unref(perPageItemsRange)\n        }, createSlots({ _: 2 }, [\n          showItemsPerPageSelect.value ? {\n            name: \"select\",\n            fn: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_10, toDisplayString(unref(capitalizeFirstLetter)(_ctx.itemsCountName)) + \" per page \", 1),\n              createVNode(BPaginationPerPageSelect, {\n                \"items-per-page\": unref(itemsPerPageModel),\n                \"onUpdate:itemsPerPage\": _cache[2] || (_cache[2] = ($event) => isRef(itemsPerPageModel) ? itemsPerPageModel.value = $event : null),\n                class: \"b-pagination__items-per-page-select\",\n                \"items-per-page-options\": _ctx.itemsPerPageOptions\n              }, null, 8, [\"items-per-page\", \"items-per-page-options\"])\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1032, [\"items-count\", \"items-count-name\", \"range-of-items\"])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bPagination_vue_vue_type_style_index_0_scoped_dc2bc06a_lang = \"\";\nconst bPagination = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"__scopeId\", \"data-v-dc2bc06a\"]]);\nfunction getFocusableElements(element = document) {\n  return [\n    ...element.querySelectorAll(\n      'a[href], button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])'\n    )\n  ].filter(\n    (el) => !el.hasAttribute(\"disabled\") && !el.getAttribute(\"aria-hidden\") && window.getComputedStyle(el).display !== \"none\"\n  );\n}\nconst POPOVER_LABELLEDBY_KEY = Symbol(\n  \"popoverLabelledbyKey\"\n);\nfunction useFloatingPopover({\n  placement,\n  anchorRef,\n  popoverRef,\n  arrowRef,\n  anchorPopoverGap,\n  borderArrowDistance,\n  screenBorderPadding\n}) {\n  const middleware = ref([\n    // to use autoPlacement or flip behaviour depending on the placement\n    placement.value === \"auto\" ? autoPlacement() : flip({ fallbackAxisSideDirection: \"start\" }),\n    offset({\n      // the gap between the Popover and the Anchor\n      mainAxis: anchorPopoverGap\n    }),\n    shift({\n      // the minimun distance from the border of the screen to the popover\n      padding: screenBorderPadding,\n      limiter: limitShift({\n        // Limiting the shift using the anchor axis size and the arrow distance from the border\n        offset: (middlewareState) => {\n          const anchorAxisSize = getAnchorAxisSize(middlewareState);\n          return anchorAxisSize / 2 + borderArrowDistance;\n        }\n      })\n    }),\n    arrow({\n      element: arrowRef\n    })\n  ]);\n  const floatingPlacement = computed(\n    () => placement.value === \"auto\" ? void 0 : placement.value\n  );\n  const {\n    floatingStyles: popoverStyles,\n    placement: realPlacement,\n    // in the case of `auto` we need the real placement applied.\n    middlewareData\n  } = useFloating(anchorRef, popoverRef, {\n    placement: floatingPlacement,\n    middleware,\n    whileElementsMounted: autoUpdate\n  });\n  const arrowStyles = computed(() => {\n    const { x, y } = middlewareData.value.arrow ?? {};\n    const isLeftPlacement = realPlacement.value.includes(\"left\");\n    const isTopPlacement = realPlacement.value.includes(\"top\");\n    return {\n      left: x ? `${x}px` : isLeftPlacement ? \"100%\" : \"0\",\n      top: y ? `${y}px` : isTopPlacement ? \"100%\" : \"0\"\n    };\n  });\n  return {\n    arrowStyles,\n    popoverStyles\n  };\n}\nfunction getAnchorAxisSize({\n  rects,\n  placement: realPlacement\n}) {\n  return realPlacement.includes(\"left\") || realPlacement.includes(\"right\") ? rects.reference.height : rects.reference.width;\n}\nconst _hoisted_1$f = [\"aria-label\", \"aria-labelledby\", \"onKeydown\"];\nconst _hoisted_2$9 = { class: \"b-popover__close\" };\nconst _sfc_main$l = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-popover\",\n  props: {\n    modelValue: { type: Boolean },\n    anchorRef: {},\n    placement: { default: \"auto\" },\n    ariaLabel: {}\n  },\n  emits: [\"update:modelValue\", \"close\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const popoverAttrs = useSafeAttrs(useAttrs());\n    const popoverRef = ref(null);\n    const arrowRef = ref(null);\n    const ariaLabeledBy = ref(void 0);\n    const { arrowStyles, popoverStyles } = useFloatingPopover({\n      placement: computed(() => props.placement),\n      anchorRef: computed(() => props.anchorRef),\n      popoverRef,\n      arrowRef,\n      anchorPopoverGap: 10,\n      borderArrowDistance: 20,\n      screenBorderPadding: 10\n    });\n    onClickOutside(popoverRef, () => setTimeout(emitClose));\n    watch(\n      () => props.modelValue,\n      async (isOpen) => {\n        if (isOpen) {\n          await nextTick();\n          const [firstElement] = getFocusableElements(\n            popoverRef.value ?? void 0\n          );\n          firstElement == null ? void 0 : firstElement.focus({ preventScroll: true });\n        }\n      }\n    );\n    function emitClose() {\n      emit(\"update:modelValue\", false);\n      emit(\"close\");\n    }\n    provide(POPOVER_LABELLEDBY_KEY, ariaLabeledBy);\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(Teleport, { to: \"body\" }, [\n        createVNode(Transition, {\n          appear: \"\",\n          name: \"b-popover-fade-\"\n        }, {\n          default: withCtx(() => [\n            _ctx.modelValue ? (openBlock(), createElementBlock(\"div\", mergeProps({ key: 0 }, unref(popoverAttrs), {\n              ref_key: \"popoverRef\",\n              ref: popoverRef,\n              class: \"b-popover\",\n              role: \"dialog\",\n              \"aria-modal\": \"true\",\n              \"aria-label\": !!ariaLabeledBy.value ? void 0 : _ctx.ariaLabel,\n              \"aria-labelledby\": ariaLabeledBy.value,\n              style: unref(popoverStyles),\n              onKeydown: withKeys(emitClose, [\"escape\"])\n            }), [\n              renderSlot(_ctx.$slots, \"content\", {}, void 0, true),\n              createElementVNode(\"div\", {\n                ref_key: \"arrowRef\",\n                ref: arrowRef,\n                class: \"b-popover__arrow\",\n                style: normalizeStyle(unref(arrowStyles))\n              }, null, 4),\n              createElementVNode(\"div\", _hoisted_2$9, [\n                createVNode(unref(BIconButton), {\n                  size: \"xs\",\n                  label: \"close\",\n                  onClick: emitClose\n                }, {\n                  icon: withCtx((iconProps) => [\n                    createVNode(unref(CloseIcon), normalizeProps(guardReactiveProps(iconProps)), null, 16)\n                  ]),\n                  _: 1\n                })\n              ])\n            ], 16, _hoisted_1$f)) : createCommentVNode(\"\", true)\n          ]),\n          _: 3\n        })\n      ]);\n    };\n  }\n});\nconst bPopover_vue_vue_type_style_index_0_scoped_841a47dd_lang = \"\";\nconst bPopover = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"__scopeId\", \"data-v-841a47dd\"]]);\nconst bPopoverDescription_vue_vue_type_style_index_0_scoped_54445c79_lang = \"\";\nconst _sfc_main$k = {};\nconst _hoisted_1$e = { class: \"b-popover-description\" };\nfunction _sfc_render(_ctx, _cache) {\n  return openBlock(), createElementBlock(\"p\", _hoisted_1$e, [\n    renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n  ]);\n}\nconst bPopoverDescription = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-54445c79\"]]);\nconst _hoisted_1$d = [\"id\"];\nconst _sfc_main$j = /* @__PURE__ */ defineComponent({\n  __name: \"b-popover-title\",\n  setup(__props) {\n    const id = generateUniqueId();\n    const labelledBy = inject(POPOVER_LABELLEDBY_KEY);\n    if (labelledBy) {\n      labelledBy.value = id;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"h1\", {\n        id: unref(id),\n        class: \"b-popover-title\"\n      }, [\n        renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n      ], 8, _hoisted_1$d);\n    };\n  }\n});\nconst bPopoverTitle_vue_vue_type_style_index_0_scoped_153cfc58_lang = \"\";\nconst bPopoverTitle = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"__scopeId\", \"data-v-153cfc58\"]]);\nconst _sfc_main$i = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-progress-indicator\",\n  props: {\n    percentage: {},\n    colorScheme: { default: \"blue\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const progressBarWidth = computed(() => ({\n      width: `${props.percentage}%`\n    }));\n    const progressBarAttr = useSafeAttrs(useAttrs());\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({ class: \"b-progress-bar\" }, unref(progressBarAttr)), [\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-progress-bar__track\", [`b-progress-bar__track--${_ctx.colorScheme}`]]),\n          style: normalizeStyle(progressBarWidth.value)\n        }, null, 6)\n      ], 16);\n    };\n  }\n});\nconst bProgressIndicator_vue_vue_type_style_index_0_scoped_750f6839_lang = \"\";\nconst bProgressIndicator = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"__scopeId\", \"data-v-750f6839\"]]);\nconst RADIO_GROUP_STATE_KEY = Symbol(\"radioGroupProps\");\nconst _hoisted_1$c = [\"for\"];\nconst _hoisted_2$8 = [\"id\", \"disabled\", \"aria-invalid\", \"aria-checked\", \"aria-readonly\", \"value\", \"name\"];\nconst _sfc_main$h = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-radio\",\n  props: {\n    value: { type: [String, Number, Boolean] },\n    label: {},\n    disabled: { type: Boolean, default: void 0 },\n    name: {},\n    readonly: { type: Boolean, default: void 0 }\n  },\n  setup(__props, { expose: __expose }) {\n    const props = __props;\n    const radioRef = ref(null);\n    __expose({\n      radio: radioRef\n    });\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const radioGroupState = inject(RADIO_GROUP_STATE_KEY);\n    const computedReadOnly = computed(\n      () => (radioGroupState == null ? void 0 : radioGroupState.value.readonly) ?? props.readonly\n    );\n    const computedName = computed(() => props.name || (radioGroupState == null ? void 0 : radioGroupState.value.name));\n    const computedColorScheme = computed(() => radioGroupState == null ? void 0 : radioGroupState.value.colorScheme);\n    const computedInvalid = computed(\n      () => !computedDisabled.value && !!(radioGroupState == null ? void 0 : radioGroupState.value.invalid)\n    );\n    const computedDisabled = computed(\n      () => (radioGroupState == null ? void 0 : radioGroupState.value.disabled) ?? props.disabled\n    );\n    const isChecked = computed(() => (radioGroupState == null ? void 0 : radioGroupState.value.value) === props.value);\n    const proxiedModel = computed({\n      get() {\n        return radioGroupState == null ? void 0 : radioGroupState.value.value;\n      },\n      set(value) {\n        radioGroupState == null ? void 0 : radioGroupState.value.update(value);\n      }\n    });\n    const radioId = generateUniqueId();\n    function preventDisabledOrReadonlyChange(event) {\n      if (computedReadOnly.value || computedDisabled.value) {\n        event.preventDefault();\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"label\", {\n        class: normalizeClass([\"b-radio\", {\n          \"b-radio--disabled\": computedDisabled.value,\n          \"b-radio--readonly\": computedReadOnly.value\n        }]),\n        for: unref(radioId)\n      }, [\n        withDirectives(createElementVNode(\"input\", mergeProps(unref(safeAttrs), {\n          id: unref(radioId),\n          ref_key: \"radioRef\",\n          ref: radioRef,\n          \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => proxiedModel.value = $event),\n          type: \"radio\",\n          disabled: computedDisabled.value,\n          \"aria-invalid\": computedInvalid.value,\n          \"aria-checked\": isChecked.value,\n          \"aria-readonly\": computedReadOnly.value,\n          value: _ctx.value,\n          name: computedName.value,\n          class: [\"b-radio__input\", `b-radio__input--${computedColorScheme.value}`],\n          onClick: preventDisabledOrReadonlyChange\n        }), null, 16, _hoisted_2$8), [\n          [vModelRadio, proxiedModel.value]\n        ]),\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-radio__button\", [\n            `b-radio__button--${computedColorScheme.value}`,\n            {\n              \"b-radio__button--disabled\": computedDisabled.value,\n              \"b-radio__button--readonly\": computedReadOnly.value,\n              \"b-radio__button--checked\": isChecked.value,\n              \"b-radio__button--invalid\": computedInvalid.value\n            }\n          ]])\n        }, null, 2),\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-radio__label\", [\n            `b-radio__label--${computedColorScheme.value}`,\n            {\n              \"b-radio__label--disabled\": computedDisabled.value,\n              \"b-radio__label--readonly\": computedReadOnly.value,\n              \"b-radio__label--checked\": isChecked.value,\n              \"b-radio__label--invalid\": computedInvalid.value\n            }\n          ]])\n        }, [\n          renderSlot(_ctx.$slots, \"custom-label\", {}, () => [\n            createTextVNode(toDisplayString(_ctx.label), 1)\n          ], true)\n        ], 2)\n      ], 10, _hoisted_1$c);\n    };\n  }\n});\nconst bRadio_vue_vue_type_style_index_0_scoped_6d5ba88b_lang = \"\";\nconst bRadio = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"__scopeId\", \"data-v-6d5ba88b\"]]);\nconst _hoisted_1$b = { class: \"b-radio-group__wrapper\" };\nconst _sfc_main$g = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-radio-group\",\n  props: {\n    colorScheme: { default: \"black\" },\n    modelValue: { type: [Boolean, String, Number] },\n    disabled: { type: Boolean, default: void 0 },\n    name: { default: void 0 },\n    invalid: { type: Boolean },\n    errorMessage: { default: null },\n    readonly: { type: Boolean, default: void 0 }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const updateValue = (value) => {\n      emit(\"update:modelValue\", value);\n    };\n    const radioGroupState = computed(() => ({\n      colorScheme: props.colorScheme,\n      disabled: props.disabled,\n      invalid: props.invalid,\n      readonly: props.readonly,\n      value: props.modelValue,\n      name: props.name,\n      update: updateValue\n    }));\n    const showErrorMessage = computed(\n      () => props.invalid && !props.disabled && !props.readonly\n    );\n    provide(RADIO_GROUP_STATE_KEY, radioGroupState);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({ class: \"b-radio-group\" }, { ...unref(safeAttrs), disabled: _ctx.disabled || _ctx.readonly, name: _ctx.name }), [\n        createElementVNode(\"div\", _hoisted_1$b, [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ]),\n        showErrorMessage.value ? (openBlock(), createBlock(unref(BFormError), {\n          key: 0,\n          class: \"b-radio-group__error\",\n          \"color-scheme\": _ctx.colorScheme,\n          \"error-message\": _ctx.errorMessage\n        }, null, 8, [\"color-scheme\", \"error-message\"])) : createCommentVNode(\"\", true)\n      ], 16);\n    };\n  }\n});\nconst bRadioGroup_vue_vue_type_style_index_0_scoped_df453f17_lang = \"\";\nconst bRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"__scopeId\", \"data-v-df453f17\"]]);\nconst _hoisted_1$a = [\"aria-pressed\", \"aria-label\", \"onClick\"];\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-segment\",\n  props: {\n    items: {},\n    activeIndex: {},\n    size: { default: \"lg\" },\n    width: { default: \"full\" },\n    colorScheme: { default: \"black\" }\n  },\n  emits: [\"update:activeIndex\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const segmentAttrs = useSafeAttrs(useAttrs());\n    const { smallerOrEqual } = useBreakpoints();\n    const isMobile = smallerOrEqual(\"sm\");\n    const computedIsMobile = computed(() => isBrowser() ? isMobile.value : false);\n    const internalactiveIndex = ref(0);\n    const slidingPanelRef = ref();\n    const segmentSizeToIconSize = {\n      lg: \"md\",\n      xl: \"lg\"\n    };\n    const iconSize = computed(() => segmentSizeToIconSize[props.size]);\n    const computedWidth = computed(\n      () => computedIsMobile.value ? props.width : \"content\"\n    );\n    watch(\n      () => props.activeIndex,\n      (index) => {\n        if (index !== void 0) {\n          internalactiveIndex.value = index;\n        }\n      },\n      { immediate: true }\n    );\n    watchEffect(() => {\n      if (props.items.length > 5) {\n        console.warn(\n          `Only 5 segment items are allowed. Received ${props.items.length}`\n        );\n      }\n    });\n    function handleItemClick(index) {\n      if (props.activeIndex === void 0) {\n        internalactiveIndex.value = index;\n      }\n      emit(\"update:activeIndex\", index);\n    }\n    function scrollButtonIntoView(event) {\n      var _a;\n      (_a = slidingPanelRef.value) == null ? void 0 : _a.scrollElementIntoView(event.target);\n    }\n    const hasIcons = computed(\n      () => props.items.every((item) => !!item.iconComponent)\n    );\n    const disableScroll = computed(() => !computedIsMobile.value && hasIcons.value);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", mergeProps({\n        class: [\"b-segment\", [`b-segment--${computedWidth.value}`, `b-segment--${_ctx.size}`]]\n      }, unref(segmentAttrs)), [\n        createVNode(unref(BSlidingPanel), {\n          ref_key: \"slidingPanelRef\",\n          ref: slidingPanelRef,\n          \"disable-scroll\": disableScroll.value\n        }, {\n          \"button-left\": withCtx(() => [\n            createElementVNode(\"div\", {\n              class: normalizeClass([\"b-segment__scroll-button b-segment__scroll-button--left\", [`b-segment__scroll-button--${_ctx.size}`]])\n            }, [\n              createVNode(unref(ChevronLeftIcon))\n            ], 2)\n          ]),\n          default: withCtx(() => [\n            createElementVNode(\"ul\", {\n              class: normalizeClass([\"b-segment__list\", [`b-segment__list--${computedWidth.value}`]])\n            }, [\n              (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, ({ label, iconComponent, ...extraAttrs }, index) => {\n                return openBlock(), createElementBlock(\"li\", {\n                  key: index,\n                  class: \"b-segment__item\"\n                }, [\n                  createVNode(unref(BTooltip), { placement: \"top\" }, {\n                    trigger: withCtx((tooltipScope) => [\n                      createElementVNode(\"button\", mergeProps({\n                        class: [\"b-segment__button\", [\n                          `b-segment__button--${_ctx.colorScheme}`,\n                          `b-segment__button--${_ctx.size}`,\n                          {\n                            \"b-segment__button--active\": index === internalactiveIndex.value,\n                            \"b-segment__button--text\": !iconComponent\n                          }\n                        ]]\n                      }, { ...extraAttrs, ...disableScroll.value && tooltipScope }, {\n                        \"aria-pressed\": index === internalactiveIndex.value,\n                        \"aria-label\": label,\n                        onFocus: scrollButtonIntoView,\n                        onClick: ($event) => handleItemClick(index)\n                      }), [\n                        iconComponent ? (openBlock(), createBlock(resolveDynamicComponent(iconComponent), {\n                          key: 0,\n                          size: iconSize.value\n                        }, null, 8, [\"size\"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n                          createTextVNode(toDisplayString(label), 1)\n                        ], 64))\n                      ], 16, _hoisted_1$a)\n                    ]),\n                    content: withCtx(() => [\n                      createTextVNode(toDisplayString(label), 1)\n                    ]),\n                    _: 2\n                  }, 1024)\n                ]);\n              }), 128))\n            ], 2)\n          ]),\n          \"button-right\": withCtx(() => [\n            createElementVNode(\"div\", {\n              class: normalizeClass([\"b-segment__scroll-button b-segment__scroll-button--right\", [`b-segment__scroll-button--${_ctx.size}`]])\n            }, [\n              createVNode(unref(ChevronRightIcon))\n            ], 2)\n          ]),\n          _: 1\n        }, 8, [\"disable-scroll\"])\n      ], 16);\n    };\n  }\n});\nconst bSegment_vue_vue_type_style_index_0_scoped_b8eb55db_lang = \"\";\nconst bSegment = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"__scopeId\", \"data-v-b8eb55db\"]]);\nconst _hoisted_1$9 = [\"onKeydown\"];\nconst _hoisted_2$7 = [\"id\", \"aria-readonly\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"tabindex\", \"onKeydown\"];\nconst _hoisted_3$5 = { class: \"b-select__chevron-icon\" };\nconst _hoisted_4$2 = { class: \"b-listbox__empty-content\" };\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n  __name: \"b-select\",\n  props: {\n    colorScheme: { default: \"black\" },\n    options: {},\n    modelValue: {},\n    label: {},\n    invalid: { type: Boolean },\n    disabled: { type: Boolean },\n    readonly: { type: Boolean },\n    errorMessage: { default: void 0 },\n    hint: { default: void 0 },\n    variant: { default: \"single\" },\n    emptyMessage: { default: \"No options available\" }\n  },\n  emits: [\"update:modelValue\", \"change\"],\n  setup(__props, { expose: __expose, emit: emits }) {\n    const props = __props;\n    const selectRef = ref(null);\n    const triggerRef = ref(null);\n    const listboxRef = ref(null);\n    const formControlRef = ref(null);\n    __expose({\n      select: selectRef,\n      trigger: triggerRef\n    });\n    const formControlDivRef = computed(\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n      () => {\n        var _a;\n        return ((_a = formControlRef.value) == null ? void 0 : _a.formControlRef) ?? null;\n      }\n    );\n    const isExpanded = ref(false);\n    const internalModel = ref(props.modelValue);\n    const { listboxId, triggerId } = createListboxIds();\n    const { floatingStyles } = useListboxFloating({\n      listboxRef,\n      referenceRef: formControlDivRef\n    });\n    const proxiedModel = computed({\n      get: () => internalModel.value,\n      set: (value) => {\n        internalModel.value = value;\n        emits(\"update:modelValue\", value);\n        emits(\"change\", value);\n      }\n    });\n    const isPopulated = computed(\n      () => isExpanded.value || proxiedModel.value.length > 0\n    );\n    const displaySelection = computed(() => {\n      var _a;\n      if (props.variant === \"multiple\" && proxiedModel.value.length === 0) {\n        return \"\";\n      }\n      if (props.variant === \"multiple\" && proxiedModel.value.length > 0) {\n        return `${proxiedModel.value.length} selected`;\n      }\n      if (props.variant !== \"multiple\" && typeof proxiedModel.value === \"string\" && proxiedModel.value.length > 0) {\n        return ((_a = props.options.find((option) => option.value === internalModel.value)) == null ? void 0 : _a.label) ?? \"\";\n      }\n      return \"\";\n    });\n    const {\n      activeDescendantId,\n      getActiveDescendant,\n      getActiveDescendantValue,\n      goToNextDescendant,\n      goToPreviousDescendant,\n      goToLastDescendant,\n      goToFirstDescendant,\n      resetDescendant\n    } = useActiveDescendant({\n      descendants: toRef(props, \"options\")\n    });\n    watch(\n      () => activeDescendantId.value,\n      (value) => {\n        if (value) {\n          const activeDescendant = getActiveDescendant();\n          activeDescendant == null ? void 0 : activeDescendant.scrollIntoView({\n            block: \"nearest\",\n            inline: \"nearest\"\n          });\n        }\n      }\n    );\n    const { focused } = useFocusWithin(selectRef);\n    watch(\n      () => focused.value,\n      (isFocused) => {\n        if (!isFocused) {\n          closeDropdown();\n          return;\n        }\n        if (isFocused && !isExpanded.value) {\n          openDropdown();\n        }\n      }\n    );\n    watch(\n      () => props.modelValue,\n      (value) => {\n        proxiedModel.value = value;\n      }\n    );\n    onClickOutside(selectRef, closeDropdown);\n    function onLetterKeyPress(e) {\n      const key = e.key.toLowerCase();\n      if (key.length > 1 || key <= \"a\" || key >= \"z\") {\n        return;\n      }\n      e.preventDefault();\n      e.stopPropagation();\n      const option = props.options.find(\n        (someOption) => someOption.label.toLowerCase().startsWith(key)\n      );\n      if (!option) {\n        return;\n      }\n      const optionElement = document.querySelector(\n        `[data-option=\"${option.value}\"]`\n      );\n      optionElement == null ? void 0 : optionElement.scrollIntoView({ block: \"nearest\" });\n      optionElement == null ? void 0 : optionElement.focus();\n    }\n    function onSelect(value) {\n      if (isSelected(value)) {\n        return deselect(value);\n      }\n      if (props.variant === \"multiple\") {\n        proxiedModel.value = [...proxiedModel.value, value];\n      } else {\n        proxiedModel.value = value;\n        closeDropdown();\n      }\n    }\n    function onResetModel() {\n      if (props.variant === \"multiple\") {\n        proxiedModel.value = [];\n      } else {\n        proxiedModel.value = \"\";\n      }\n    }\n    function onEnterOrSpaceKey() {\n      if (isExpanded.value) {\n        const value = getActiveDescendantValue();\n        if (value) {\n          onSelect(value);\n        }\n      } else {\n        openDropdown();\n      }\n    }\n    function onTriggerArrowDownKey() {\n      if (isExpanded.value) {\n        goToNextDescendant();\n      } else {\n        openDropdown();\n      }\n    }\n    function onTriggerArrowUpKey() {\n      if (isExpanded.value) {\n        goToPreviousDescendant();\n      } else {\n        openDropdown();\n      }\n    }\n    function isSelected(value) {\n      if (props.variant === \"multiple\") {\n        return proxiedModel.value.includes(value);\n      } else {\n        return proxiedModel.value === value;\n      }\n    }\n    function deselect(value) {\n      if (props.variant === \"multiple\") {\n        proxiedModel.value = proxiedModel.value.filter(\n          (v) => v !== value\n        );\n      } else {\n        closeDropdown();\n      }\n    }\n    function closeDropdown() {\n      isExpanded.value = false;\n      resetDescendant();\n    }\n    function openDropdown() {\n      var _a;\n      if (props.disabled || props.readonly) {\n        return;\n      }\n      (_a = triggerRef.value) == null ? void 0 : _a.focus();\n      isExpanded.value = true;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        ref_key: \"selectRef\",\n        ref: selectRef,\n        class: \"b-select\",\n        onMousedown: _cache[3] || (_cache[3] = withModifiers(() => {\n        }, [\"prevent\"])),\n        onKeydown: [\n          withKeys(withModifiers(closeDropdown, [\"prevent\"]), [\"escape\"]),\n          onLetterKeyPress\n        ]\n      }, [\n        createVNode(unref(BFormControl), {\n          ref_key: \"formControlRef\",\n          ref: formControlRef,\n          \"label-for\": unref(triggerId),\n          label: _ctx.label,\n          invalid: _ctx.invalid,\n          \"color-scheme\": _ctx.colorScheme,\n          disabled: _ctx.disabled,\n          readonly: _ctx.readonly,\n          populated: isPopulated.value,\n          hint: _ctx.hint,\n          \"show-cursor-pointer\": !_ctx.disabled && !_ctx.readonly,\n          onClickFormControl: _cache[2] || (_cache[2] = ($event) => isExpanded.value ? closeDropdown() : openDropdown())\n        }, {\n          control: withCtx(() => [\n            createElementVNode(\"div\", {\n              id: unref(triggerId),\n              ref_key: \"triggerRef\",\n              ref: triggerRef,\n              \"aria-readonly\": _ctx.readonly,\n              \"aria-controls\": unref(listboxId),\n              \"aria-expanded\": isExpanded.value,\n              \"aria-activedescendant\": unref(activeDescendantId),\n              tabindex: _ctx.disabled ? -1 : 0,\n              \"aria-haspopup\": \"listbox\",\n              class: \"b-select__trigger\",\n              role: \"combobox\",\n              onKeydown: [\n                withKeys(withModifiers(onEnterOrSpaceKey, [\"prevent\"]), [\"enter\"]),\n                withKeys(withModifiers(onEnterOrSpaceKey, [\"prevent\"]), [\"space\"]),\n                withKeys(withModifiers(onTriggerArrowUpKey, [\"prevent\"]), [\"up\"]),\n                withKeys(withModifiers(onTriggerArrowDownKey, [\"prevent\"]), [\"down\"]),\n                _cache[0] || (_cache[0] = withKeys(\n                  //@ts-ignore\n                  (...args) => unref(goToFirstDescendant) && unref(goToFirstDescendant)(...args),\n                  [\"home\"]\n                )),\n                _cache[1] || (_cache[1] = withKeys(\n                  //@ts-ignore\n                  (...args) => unref(goToLastDescendant) && unref(goToLastDescendant)(...args),\n                  [\"end\"]\n                ))\n              ]\n            }, toDisplayString(displaySelection.value), 41, _hoisted_2$7)\n          ]),\n          suffix: withCtx(() => [\n            createElementVNode(\"div\", _hoisted_3$5, [\n              isExpanded.value ? (openBlock(), createBlock(unref(ChevronUpIcon), {\n                key: 0,\n                size: \"md\"\n              })) : (openBlock(), createBlock(unref(ChevronDownIcon), {\n                key: 1,\n                size: \"md\"\n              }))\n            ])\n          ]),\n          error: withCtx(() => [\n            _ctx.invalid ? (openBlock(), createBlock(unref(BFormError), {\n              key: 0,\n              \"color-scheme\": _ctx.colorScheme,\n              invalid: _ctx.invalid,\n              \"error-message\": _ctx.errorMessage\n            }, null, 8, [\"color-scheme\", \"invalid\", \"error-message\"])) : createCommentVNode(\"\", true)\n          ]),\n          _: 1\n        }, 8, [\"label-for\", \"label\", \"invalid\", \"color-scheme\", \"disabled\", \"readonly\", \"populated\", \"hint\", \"show-cursor-pointer\"]),\n        isExpanded.value ? (openBlock(), createBlock(unref(BListbox), {\n          key: 0,\n          id: unref(listboxId),\n          ref_key: \"listboxRef\",\n          ref: listboxRef,\n          style: normalizeStyle(unref(floatingStyles)),\n          \"aria-labelledby\": unref(triggerId),\n          options: _ctx.options,\n          variant: props.variant === \"multiple\" ? \"checkbox\" : \"ticks\",\n          \"multi-selectable\": props.variant === \"multiple\",\n          \"model-value\": proxiedModel.value,\n          onClickSelected: onSelect,\n          onClearAll: onResetModel\n        }, createSlots({ _: 2 }, [\n          _ctx.options.length === 0 ? {\n            name: \"empty-content\",\n            fn: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_4$2, toDisplayString(_ctx.emptyMessage), 1)\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1032, [\"id\", \"style\", \"aria-labelledby\", \"options\", \"variant\", \"multi-selectable\", \"model-value\"])) : createCommentVNode(\"\", true)\n      ], 40, _hoisted_1$9);\n    };\n  }\n});\nconst bSelect_vue_vue_type_style_index_0_scoped_77b4f319_lang = \"\";\nconst bSelect = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"__scopeId\", \"data-v-77b4f319\"]]);\nconst COMPACT_TEXT_DELIMITER = 40;\nconst TEXT_LENGTH_DELIMITER = 120;\nconst AUTO_DISMISS_DURATION = {\n  SHORT: 5e3,\n  LONG: 7e3\n};\nconst snackbarStore = ref([]);\nconst clearAllSnackbarNotification = () => {\n  snackbarStore.value = [];\n};\nconst dismissSnackbarNotification = (id) => {\n  snackbarStore.value = snackbarStore.value.filter((item) => item.id !== id);\n};\nconst createSnackbarNotification = (item) => {\n  const id = generateUniqueId();\n  snackbarStore.value = [...snackbarStore.value, { ...item, id }];\n};\nconst _withScopeId$1 = (n) => (pushScopeId(\"data-v-e5fb055c\"), n = n(), popScopeId(), n);\nconst _hoisted_1$8 = [\"aria-live\", \"aria-label\"];\nconst _hoisted_2$6 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-snackbar__left-bar\" }, null, -1));\nconst _hoisted_3$4 = { class: \"b-snackbar__wrapper\" };\nconst _hoisted_4$1 = {\n  key: 0,\n  class: \"b-snackbar__icon\"\n};\nconst _hoisted_5$1 = { class: \"b-snackbar__content\" };\nconst _hoisted_6$1 = {\n  key: 1,\n  class: \"b-snackbar__additionalText\"\n};\nconst _hoisted_7 = {\n  key: 2,\n  class: \"b-snackbar__action\"\n};\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n  __name: \"b-snackbar\",\n  props: {\n    autoDismiss: { type: Boolean, default: true },\n    id: {},\n    type: { default: \"neutral\" },\n    message: {},\n    additionalText: { default: void 0 },\n    showCloseIcon: { type: Boolean, default: false },\n    actionLabel: { default: void 0 },\n    onActionClick: { type: Function, default: void 0 },\n    icon: { default: void 0 },\n    iconPosition: { default: void 0 }\n  },\n  setup(__props) {\n    const props = __props;\n    const breakpoints = useBreakpoints();\n    const greaterThanMd = breakpoints.greaterOrEqual(\"lg\");\n    const isLine = computed(\n      () => !(props.message.length >= COMPACT_TEXT_DELIMITER || props.additionalText)\n    );\n    const isLongMessage = computed(\n      () => props.message.length > TEXT_LENGTH_DELIMITER || props.additionalText\n    );\n    const hasAction = computed(\n      () => !!props.actionLabel && typeof props.onActionClick === \"function\"\n    );\n    const duration = computed(() => {\n      return isLongMessage.value ? AUTO_DISMISS_DURATION.LONG : AUTO_DISMISS_DURATION.SHORT;\n    });\n    const { start, stop } = useTimeoutFn(() => {\n      if (props.autoDismiss) {\n        dismiss();\n      }\n    }, duration);\n    onMounted(() => {\n      if (props.autoDismiss) {\n        start();\n      }\n    });\n    function onPause() {\n      if (props.autoDismiss) {\n        stop();\n      }\n    }\n    function onResume() {\n      if (props.autoDismiss) {\n        start();\n      }\n    }\n    function dismiss() {\n      dismissSnackbarNotification(props.id);\n    }\n    function onClick() {\n      var _a;\n      (_a = props.onActionClick) == null ? void 0 : _a.call(props);\n      dismiss();\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        \"aria-live\": _ctx.autoDismiss ? \"assertive\" : \"polite\",\n        \"aria-label\": `${_ctx.message}. ${_ctx.additionalText ?? \"\"}`,\n        \"data-cy\": \"b-snackbar\",\n        class: normalizeClass([\"b-snackbar\", [\n          _ctx.type ? `b-snackbar--${_ctx.type}` : ``,\n          {\n            \"b-snackbar--line\": isLine.value\n          }\n        ]]),\n        onMouseleave: onResume,\n        onMouseenter: onPause\n      }, [\n        _hoisted_2$6,\n        createElementVNode(\"div\", _hoisted_3$4, [\n          _ctx.type !== \"neutral\" ? (openBlock(), createElementBlock(\"div\", _hoisted_4$1, [\n            createVNode(unref(BFeedbackIcon), {\n              type: _ctx.type,\n              size: unref(greaterThanMd) ? `lg` : `md`\n            }, null, 8, [\"type\", \"size\"])\n          ])) : createCommentVNode(\"\", true),\n          createElementVNode(\"div\", _hoisted_5$1, [\n            createElementVNode(\"p\", {\n              class: normalizeClass([\"b-snackbar__message\", {\n                \"b-snackbar__message--with-max-width\": !isLine.value && _ctx.showCloseIcon,\n                \"b-snackbar__message--with-icon\": _ctx.type\n              }])\n            }, toDisplayString(_ctx.message), 3),\n            _ctx.showCloseIcon ? (openBlock(), createElementBlock(\"button\", {\n              key: 0,\n              \"aria-label\": \"Close\",\n              \"data-cy\": \"b-snackbar-close\",\n              class: \"b-snackbar__close\",\n              onClick: dismiss\n            }, [\n              createVNode(unref(CloseIcon), { size: \"md\" })\n            ])) : createCommentVNode(\"\", true),\n            _ctx.additionalText ? (openBlock(), createElementBlock(\"div\", _hoisted_6$1, toDisplayString(_ctx.additionalText), 1)) : createCommentVNode(\"\", true),\n            hasAction.value ? (openBlock(), createElementBlock(\"div\", _hoisted_7, [\n              createVNode(unref(BButton), {\n                \"data-cy\": \"b-snackbar-action\",\n                \"color-scheme\": \"white\",\n                variant: \"outline\",\n                size: \"md\",\n                \"icon-position\": props.iconPosition,\n                onClick\n              }, {\n                icon: withCtx((iconProps) => [\n                  (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), normalizeProps(guardReactiveProps(iconProps)), null, 16))\n                ]),\n                default: withCtx(() => [\n                  createTextVNode(toDisplayString(_ctx.actionLabel) + \" \", 1)\n                ]),\n                _: 1\n              }, 8, [\"icon-position\"])\n            ])) : createCommentVNode(\"\", true)\n          ])\n        ])\n      ], 42, _hoisted_1$8);\n    };\n  }\n});\nconst bSnackbar_vue_vue_type_style_index_0_scoped_e5fb055c_lang = \"\";\nconst BSnackbar = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"__scopeId\", \"data-v-e5fb055c\"]]);\nconst _hoisted_1$7 = { class: \"b-snackbar-manager\" };\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n  __name: \"b-snackbar-manager\",\n  setup(__props) {\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(Teleport, { to: \"body\" }, [\n        createElementVNode(\"div\", _hoisted_1$7, [\n          createVNode(TransitionGroup, { name: \"b-snackbar\" }, {\n            default: withCtx(() => [\n              (openBlock(true), createElementBlock(Fragment, null, renderList(unref(snackbarStore), (item) => {\n                return openBlock(), createBlock(BSnackbar, mergeProps(item, {\n                  key: item.id\n                }), null, 16);\n              }), 128))\n            ]),\n            _: 1\n          })\n        ])\n      ]);\n    };\n  }\n});\nconst bSnackbarManager_vue_vue_type_style_index_0_scoped_4a2a3640_lang = \"\";\nconst bSnackbarManager = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"__scopeId\", \"data-v-4a2a3640\"]]);\nconst _hoisted_1$6 = { class: \"b-structured-list-modal\" };\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n  __name: \"b-structured-list-modal\",\n  props: {\n    open: { type: Boolean },\n    labelledById: {}\n  },\n  emits: [\"click-outside\"],\n  setup(__props, { emit }) {\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(Fragment, null, [\n        renderSlot(_ctx.$slots, \"default\", { isFullScreenScoped: false }, void 0, true),\n        (openBlock(), createBlock(Teleport, { to: \"body\" }, [\n          _ctx.open ? (openBlock(), createBlock(unref(BModal), {\n            key: 0,\n            \"labelled-by-id\": \"labelledById\",\n            onClickOutside: _cache[0] || (_cache[0] = ($event) => emit(\"click-outside\"))\n          }, {\n            default: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_1$6, [\n                renderSlot(_ctx.$slots, \"default\", { isFullScreenScoped: true }, void 0, true)\n              ])\n            ]),\n            _: 3\n          })) : createCommentVNode(\"\", true)\n        ]))\n      ], 64);\n    };\n  }\n});\nconst bStructuredListModal_vue_vue_type_style_index_0_scoped_7de8d8e8_lang = \"\";\nconst BStructuredListModal = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"__scopeId\", \"data-v-7de8d8e8\"]]);\nconst _hoisted_1$5 = [\"id\"];\nconst _hoisted_2$5 = { class: \"b-structured-list-table__table\" };\nconst _hoisted_3$3 = { class: \"b-structured-list-table__header-row\" };\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n  __name: \"b-structured-list-table\",\n  props: {\n    data: {},\n    columnDefs: {},\n    title: {},\n    size: { default: \"md\" },\n    showDividers: { type: Boolean },\n    align: { default: \"baseline\" },\n    hideHeader: { type: Boolean },\n    isFullScreen: { type: Boolean },\n    titleId: {}\n  },\n  emits: [\"toggle-fullscreen\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const isHorizontalScrolled = ref(false);\n    const columnDefsWithStyles = computed(\n      () => props.columnDefs.map((columnDef) => ({\n        ...columnDef,\n        styles: getColumnStyles(columnDef)\n      }))\n    );\n    function getColumnStyles(columnDef) {\n      let width = typeof columnDef.width === \"number\" ? `${columnDef.width}px` : columnDef.width ?? \"auto\";\n      if (columnDef.sticky) {\n        width = `min(${width}, 50vw)`;\n      }\n      return {\n        width,\n        minWidth: width\n        // needed to shrink less that the content\n      };\n    }\n    function getCellValue(row, columnDef) {\n      const dataCell = row[columnDef.accessorKey];\n      if (typeof dataCell === \"string\") {\n        return dataCell;\n      }\n      if (typeof dataCell === \"number\") {\n        return dataCell.toString();\n      }\n      if (dataCell === null || dataCell === void 0) {\n        return \"\";\n      }\n      return JSON.stringify(dataCell);\n    }\n    function updateStickyDivider(event) {\n      requestAnimationFrame(() => {\n        isHorizontalScrolled.value = event.target.scrollLeft > 0;\n      });\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-structured-list-table\", { \"b-structured-list-table--fullscreen\": _ctx.isFullScreen }])\n      }, [\n        !_ctx.hideHeader ? (openBlock(), createElementBlock(\"div\", {\n          key: 0,\n          class: normalizeClass([\"b-structured-list-table__header\", `b-structured-list-table__header--${_ctx.size}`])\n        }, [\n          createElementVNode(\"h1\", {\n            id: _ctx.titleId,\n            class: \"b-structured-list-table__title\"\n          }, toDisplayString(_ctx.title), 9, _hoisted_1$5),\n          createVNode(unref(BIconButton), {\n            label: _ctx.isFullScreen ? \"exit table full screen\" : \"enter table full screen\",\n            onClick: _cache[0] || (_cache[0] = ($event) => emit(\"toggle-fullscreen\"))\n          }, {\n            icon: withCtx((scope) => [\n              _ctx.isFullScreen ? (openBlock(), createBlock(unref(NoFullScreenIcon), normalizeProps(mergeProps({ key: 0 }, scope)), null, 16)) : (openBlock(), createBlock(unref(FullScreenIcon), normalizeProps(mergeProps({ key: 1 }, scope)), null, 16))\n            ]),\n            _: 1\n          }, 8, [\"label\"])\n        ], 2)) : createCommentVNode(\"\", true),\n        createElementVNode(\"div\", {\n          class: \"b-structured-list-table__scroll-wrapper\",\n          onScroll: updateStickyDivider\n        }, [\n          createElementVNode(\"table\", _hoisted_2$5, [\n            createElementVNode(\"thead\", null, [\n              createElementVNode(\"tr\", _hoisted_3$3, [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(columnDefsWithStyles.value, (columnDef) => {\n                  return openBlock(), createElementBlock(\"th\", {\n                    key: columnDef.label,\n                    class: normalizeClass([\"b-structured-list-table__header-cell\", [\n                      `b-structured-list-table__header-cell--${_ctx.size}`,\n                      `b-structured-list-table__header-cell--${columnDef.align ?? \"left\"}`,\n                      {\n                        \"b-structured-list-table__header-cell--sticky\": columnDef.sticky,\n                        \"b-structured-list-table__header-cell--show-right-divider\": columnDef.sticky && isHorizontalScrolled.value\n                      }\n                    ]]),\n                    style: normalizeStyle(columnDef.styles)\n                  }, toDisplayString(columnDef.label), 7);\n                }), 128))\n              ])\n            ]),\n            createElementVNode(\"tbody\", null, [\n              (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (row) => {\n                return openBlock(), createElementBlock(\"tr\", {\n                  key: JSON.stringify(row),\n                  class: \"b-structured-list-table__row\"\n                }, [\n                  (openBlock(true), createElementBlock(Fragment, null, renderList(columnDefsWithStyles.value, (columnDef) => {\n                    return openBlock(), createElementBlock(\"td\", {\n                      key: columnDef.accessorKey,\n                      class: normalizeClass([\"b-structured-list-table__cell\", [\n                        `b-structured-list-table__cell--${_ctx.size}`,\n                        `b-structured-list-table__cell--${columnDef.align ?? \"left\"}`,\n                        `b-structured-list-table__cell--${_ctx.align}`,\n                        {\n                          \"b-structured-list-table__cell--show-divider\": _ctx.showDividers,\n                          \"b-structured-list-table__cell--sticky\": columnDef.sticky,\n                          \"b-structured-list-table__cell--show-right-divider\": columnDef.sticky && isHorizontalScrolled.value\n                        }\n                      ]]),\n                      style: normalizeStyle(columnDef.styles)\n                    }, [\n                      renderSlot(_ctx.$slots, columnDef.accessorKey, {\n                        row,\n                        columnDef\n                      }, () => [\n                        createTextVNode(toDisplayString(getCellValue(row, columnDef)), 1)\n                      ], true)\n                    ], 6);\n                  }), 128))\n                ]);\n              }), 128))\n            ])\n          ])\n        ], 32)\n      ], 2);\n    };\n  }\n});\nconst bStructuredListTable_vue_vue_type_style_index_0_scoped_73720a96_lang = \"\";\nconst BStructuredListTable = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"__scopeId\", \"data-v-73720a96\"]]);\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-structured-list\",\n  props: {\n    data: {},\n    columnDefs: {},\n    title: {},\n    size: { default: \"md\" },\n    showDividers: { type: Boolean },\n    align: {},\n    hideHeader: { type: Boolean }\n  },\n  setup(__props) {\n    const props = __props;\n    const attrs = useSafeAttrs(useAttrs());\n    const isFullScreen = ref(false);\n    const titleId = generateUniqueId();\n    const slicedData = computed(() => props.data.slice(0, 50));\n    const parsedColumnDefs = computed(() => {\n      const stickyColumn = props.columnDefs.find((c) => c.sticky);\n      if (!stickyColumn) {\n        return props.columnDefs;\n      }\n      if (props.columnDefs.filter((c) => c.sticky).length > 1) {\n        console.warn(\n          \"Only one column can be sticky in a StructuredList component.\"\n        );\n      }\n      return [\n        stickyColumn,\n        ...props.columnDefs.filter((c) => c !== stickyColumn).map((c) => ({ ...c, sticky: false }))\n      ];\n    });\n    watch(\n      () => props.data,\n      (data) => {\n        if (data.length > 50) {\n          console.warn(\"StructuredList only shows the first 50 rows.\");\n        }\n      },\n      {\n        immediate: true\n      }\n    );\n    function toggleFullScreen() {\n      isFullScreen.value = !isFullScreen.value;\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(BStructuredListModal, {\n        open: isFullScreen.value,\n        \"labelled-by-id\": unref(titleId),\n        onClickOutside: toggleFullScreen\n      }, {\n        default: withCtx(({ isFullScreenScoped }) => [\n          createVNode(BStructuredListTable, mergeProps(unref(attrs), {\n            data: slicedData.value,\n            \"column-defs\": parsedColumnDefs.value,\n            size: _ctx.size,\n            title: _ctx.title,\n            \"show-dividers\": _ctx.showDividers,\n            align: _ctx.align,\n            \"title-id\": unref(titleId),\n            \"is-full-screen\": isFullScreenScoped,\n            \"hide-header\": _ctx.hideHeader,\n            onToggleFullscreen: toggleFullScreen\n          }), createSlots({ _: 2 }, [\n            renderList(parsedColumnDefs.value, ({ accessorKey }) => {\n              return {\n                name: accessorKey,\n                fn: withCtx((scope) => [\n                  renderSlot(_ctx.$slots, accessorKey, normalizeProps(guardReactiveProps(scope)))\n                ])\n              };\n            })\n          ]), 1040, [\"data\", \"column-defs\", \"size\", \"title\", \"show-dividers\", \"align\", \"title-id\", \"is-full-screen\", \"hide-header\"])\n        ]),\n        _: 3\n      }, 8, [\"open\", \"labelled-by-id\"]);\n    };\n  }\n});\nconst _hoisted_1$4 = [\"id\", \"aria-checked\", \"aria-labelledby\", \"aria-readonly\", \"disabled\"];\nconst _hoisted_2$4 = [\"id\", \"for\"];\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n  __name: \"b-switch\",\n  props: {\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean, default: false },\n    label: { default: void 0 },\n    modelValue: { type: Boolean },\n    readonly: { type: Boolean, default: false }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const switchRef = ref(null);\n    __expose({\n      switch: switchRef\n    });\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const buttonId = generateUniqueId();\n    const labelId = generateUniqueId();\n    const switchAttrs = computed(() => {\n      const { value: _, ...attrs } = safeAttrs.value;\n      return attrs;\n    });\n    function emitUpdateModelValue() {\n      if (!props.readonly) {\n        emit(\"update:modelValue\", !props.modelValue);\n      }\n    }\n    if (!props.label && !safeAttrs.value[\"aria-label\"] && !slots[\"custom-label\"]) {\n      console.warn(\n        \"Please provide a label, aria-label or use the custom-label slot for a BSwitch\"\n      );\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", {\n        class: normalizeClass([\"b-switch\", [\n          `b-switch--${_ctx.colorScheme}`,\n          _ctx.modelValue ? \"b-switch--on\" : \"b-switch--off\",\n          {\n            \"b-switch--disabled\": _ctx.disabled,\n            \"b-switch--readonly\": _ctx.readonly\n          }\n        ]])\n      }, [\n        createElementVNode(\"button\", mergeProps({\n          id: unref(buttonId),\n          ref_key: \"switchRef\",\n          ref: switchRef,\n          class: [\"b-switch__track\", [\n            `b-switch__track--${_ctx.colorScheme}`,\n            _ctx.modelValue ? \"b-switch__track--on\" : \"b-switch__track--off\",\n            {\n              \"b-switch__track--disabled\": _ctx.disabled,\n              \"b-switch__track--readonly\": _ctx.readonly\n            }\n          ]],\n          \"aria-checked\": _ctx.modelValue,\n          \"aria-labelledby\": unref(labelId),\n          \"aria-readonly\": _ctx.readonly,\n          disabled: _ctx.disabled,\n          role: \"switch\"\n        }, switchAttrs.value, { onClick: emitUpdateModelValue }), [\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-switch__thumb\", [\n              `b-switch__thumb--${_ctx.colorScheme}`,\n              _ctx.modelValue ? \"b-switch__thumb--on\" : \"b-switch__thumb--off\",\n              {\n                \"b-switch__thumb--disabled\": _ctx.disabled,\n                \"b-switch__thumb--readonly\": _ctx.readonly\n              }\n            ]])\n          }, null, 2)\n        ], 16, _hoisted_1$4),\n        _ctx.label || unref(slots)[\"custom-label\"] ? (openBlock(), createElementBlock(\"label\", {\n          key: 0,\n          id: unref(labelId),\n          for: unref(buttonId),\n          class: \"b-switch__label\"\n        }, [\n          renderSlot(_ctx.$slots, \"custom-label\", {}, () => [\n            createTextVNode(toDisplayString(_ctx.label), 1)\n          ], true)\n        ], 8, _hoisted_2$4)) : createCommentVNode(\"\", true)\n      ], 2);\n    };\n  }\n});\nconst bSwitch_vue_vue_type_style_index_0_scoped_5b714814_lang = \"\";\nconst bSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-5b714814\"]]);\nconst _hoisted_1$3 = { class: \"b-tabs\" };\nconst _hoisted_2$3 = [\"id\", \"aria-label\", \"aria-selected\", \"tabindex\", \"disabled\", \"onClick\", \"onKeydown\", \"onFocus\"];\nconst _hoisted_3$2 = {\n  key: 0,\n  class: \"b-tabs__tab-icon\"\n};\nconst extraSpaceForTooltip = \"35px\";\nconst extraSpaceForFocusRing = \"4px\";\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: true\n  },\n  __name: \"b-tabs\",\n  props: {\n    tabs: {},\n    size: { default: \"md\" },\n    iconOnly: { type: Boolean },\n    disabled: { type: Boolean },\n    modelValue: {},\n    hideDivider: { type: Boolean }\n  },\n  emits: [\"update:modelValue\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    useCssVars((_ctx) => ({\n      \"1d4712ca\": extraSpace.value\n    }));\n    const tabsAttrs = useSafeAttrs(useAttrs());\n    const activeTab = ref(props.modelValue);\n    const tabsRef = ref([]);\n    const showButtons = ref(false);\n    const tabsId = generateUniqueId();\n    const visibleTooltip = ref([]);\n    const slidingPanelRef = ref(null);\n    const tabsSizeToIconSizeMap = {\n      sm: \"md\",\n      md: \"md\",\n      lg: \"lg\"\n    };\n    const iconSize = computed(() => tabsSizeToIconSizeMap[props.size]);\n    const computedTabs = computed(() => {\n      return props.tabs.map((tab, index) => {\n        return {\n          ...tab,\n          id: `${tabsId}-${index}`\n        };\n      });\n    });\n    const activeTabId = computed(() => {\n      return computedTabs.value[activeTab.value].id;\n    });\n    const isAnyIconOnly = computed(\n      () => props.iconOnly || props.tabs.some(\n        (tabConfig) => tabConfig.iconOnly && !!tabConfig.iconComponent\n      )\n    );\n    const extraSpace = computed(() => {\n      return isAnyIconOnly.value ? extraSpaceForTooltip : extraSpaceForFocusRing;\n    });\n    const breakpoints = useBreakpoints();\n    const addPadding = breakpoints.smaller(\"lg\");\n    watch(() => props.modelValue, setTab);\n    onMounted(() => showButtons.value = !isTouchableScreen());\n    function setNextTab(direction) {\n      let nextTabIndex = activeTab.value;\n      do {\n        if (direction === \"right\") {\n          nextTabIndex = (nextTabIndex + 1) % props.tabs.length;\n        } else {\n          if (nextTabIndex > 0) {\n            nextTabIndex--;\n          } else {\n            nextTabIndex = props.tabs.length - 1;\n          }\n        }\n      } while (props.tabs[nextTabIndex].disabled || nextTabIndex === activeTab.value);\n      setTab(nextTabIndex);\n    }\n    function setTab(tabIndex) {\n      var _a, _b, _c, _d;\n      if (activeTab.value === tabIndex) {\n        return;\n      }\n      emit(\"update:modelValue\", tabIndex);\n      activeTab.value = tabIndex;\n      const activeTabElement = (_a = tabsRef.value) == null ? void 0 : _a[activeTab.value];\n      activeTabElement == null ? void 0 : activeTabElement.focus();\n      (_b = slidingPanelRef.value) == null ? void 0 : _b.scrollElementIntoView(activeTabElement);\n      (_d = (_c = props.tabs[tabIndex]).onClick) == null ? void 0 : _d.call(_c);\n    }\n    function isIconOnly(index) {\n      return (props.iconOnly || props.tabs[index].iconOnly) && !!props.tabs[index].iconComponent;\n    }\n    function isTouchableScreen() {\n      if (!isBrowser()) {\n        return false;\n      }\n      return \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n    }\n    function showTooltip(index) {\n      hideTooltip();\n      if (isIconOnly(index)) {\n        visibleTooltip.value[index] = true;\n      }\n    }\n    function hideTooltip() {\n      visibleTooltip.value.fill(false, 0);\n    }\n    function tooltipPlacement(index) {\n      if (index === 0) {\n        return \"top-start\";\n      } else if (index === props.tabs.length - 1) {\n        return \"top-end\";\n      } else {\n        return \"top\";\n      }\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"div\", _hoisted_1$3, [\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-tabs__scroll-wrapper\", `b-tabs__scroll-wrapper--${_ctx.size}`])\n        }, [\n          createVNode(unref(BSlidingPanel), {\n            ref_key: \"slidingPanelRef\",\n            ref: slidingPanelRef,\n            class: \"b-tabs__sliding-panel\"\n          }, {\n            \"button-left\": withCtx(() => [\n              showButtons.value ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: normalizeClass([\"b-tabs__button-left\", `b-tabs__button-left--${_ctx.size}`])\n              }, [\n                createVNode(unref(ChevronLeftIcon))\n              ], 2)) : createCommentVNode(\"\", true)\n            ]),\n            \"button-right\": withCtx(() => [\n              showButtons.value ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: normalizeClass([\"b-tabs__button-right\", `b-tabs__button-right--${_ctx.size}`])\n              }, [\n                createVNode(unref(ChevronRightIcon))\n              ], 2)) : createCommentVNode(\"\", true)\n            ]),\n            default: withCtx(() => [\n              createElementVNode(\"div\", mergeProps({\n                ref: \"tablistRef\",\n                role: \"tablist\",\n                class: [\"b-tabs__tablist\", [\n                  `b-tabs__tablist--${_ctx.size}`,\n                  {\n                    \"b-tabs__tablist--add-padding\": unref(addPadding),\n                    \"b-tabs__tablist--add-divider\": !_ctx.hideDivider\n                  }\n                ]]\n              }, unref(tabsAttrs)), [\n                (openBlock(true), createElementBlock(Fragment, null, renderList(computedTabs.value, (tab, index) => {\n                  return openBlock(), createElementBlock(\"div\", {\n                    key: tab.id,\n                    class: \"b-tabs__tooltip-wrapper\"\n                  }, [\n                    createVNode(unref(BTooltip), {\n                      placement: tooltipPlacement(index),\n                      \"force-visible\": visibleTooltip.value[index]\n                    }, {\n                      trigger: withCtx((tooltipProps) => [\n                        createElementVNode(\"button\", mergeProps(isIconOnly(index) ? tooltipProps : {}, {\n                          id: tab.id,\n                          ref_for: true,\n                          ref_key: \"tabsRef\",\n                          ref: tabsRef,\n                          class: [\"b-tabs__tab\", [\n                            `b-tabs__tab--${_ctx.size}`,\n                            { \"b-tabs__tab--active\": activeTab.value === index },\n                            { \"b-tabs__tab--icon-only\": isIconOnly(index) }\n                          ]],\n                          role: \"tab\",\n                          \"aria-label\": tab.label,\n                          \"aria-selected\": activeTab.value === index,\n                          tabindex: activeTab.value === index ? 0 : -1,\n                          disabled: tab.disabled || _ctx.disabled,\n                          onClick: ($event) => setTab(index),\n                          onKeydown: [\n                            _cache[0] || (_cache[0] = withKeys(withModifiers(($event) => setNextTab(\"right\"), [\"prevent\"]), [\"right\"])),\n                            _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => setNextTab(\"left\"), [\"prevent\"]), [\"left\"])),\n                            withKeys(($event) => setTab(index), [\"enter\"])\n                          ],\n                          onFocus: ($event) => showTooltip(index),\n                          onBlur: hideTooltip,\n                          onMouseleave: hideTooltip\n                        }), [\n                          createElementVNode(\"div\", {\n                            class: normalizeClass([\"b-tabs__tab-title\", {\n                              \"b-tabs__tab-title--active\": activeTab.value === index\n                            }])\n                          }, [\n                            !!tab.iconComponent ? (openBlock(), createElementBlock(\"div\", _hoisted_3$2, [\n                              (openBlock(), createBlock(resolveDynamicComponent(tab.iconComponent), {\n                                fill: \"currentColor\",\n                                size: iconSize.value\n                              }, null, 8, [\"size\"]))\n                            ])) : createCommentVNode(\"\", true),\n                            !isIconOnly(index) ? (openBlock(), createElementBlock(\"span\", {\n                              key: 1,\n                              class: normalizeClass([\"b-tabs__tab-label\", [\n                                `b-tabs__tab-label--${_ctx.size}`,\n                                { \"b-tabs__tab-label--active\": activeTab.value === index }\n                              ]])\n                            }, toDisplayString(tab.label), 3)) : createCommentVNode(\"\", true),\n                            tab.counter ? (openBlock(), createElementBlock(\"span\", {\n                              key: 2,\n                              class: normalizeClass([\"b-tabs__tab-counter\", {\n                                \"b-tabs__tab-counter--active\": activeTab.value === index\n                              }])\n                            }, toDisplayString(tab.counter), 3)) : createCommentVNode(\"\", true)\n                          ], 2)\n                        ], 16, _hoisted_2$3)\n                      ]),\n                      content: withCtx(() => [\n                        createTextVNode(toDisplayString(tab.label), 1)\n                      ]),\n                      _: 2\n                    }, 1032, [\"placement\", \"force-visible\"])\n                  ]);\n                }), 128))\n              ], 16)\n            ]),\n            _: 1\n          }, 512)\n        ], 2),\n        renderSlot(_ctx.$slots, \"panel\", {\n          \"aria-Labelledby\": activeTabId.value,\n          role: \"tabpanel\",\n          tabindex: \"0\"\n        }, void 0, true)\n      ]);\n    };\n  }\n});\nconst bTabs_vue_vue_type_style_index_0_scoped_a5ba9401_lang = \"\";\nconst bTabs = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-a5ba9401\"]]);\nconst _hoisted_1$2 = [\"id\", \"disabled\", \"readonly\", \"aria-invalid\"];\nconst _hoisted_2$2 = { class: \"b-textarea__error-messages\" };\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-textarea\",\n  props: {\n    invalid: { type: Boolean },\n    readonly: { type: Boolean },\n    colorScheme: { default: \"black\" },\n    disabled: { type: Boolean },\n    modelValue: {},\n    errorMessage: {},\n    label: {},\n    maxCounter: {},\n    minCounter: {},\n    hint: {},\n    height: {}\n  },\n  emits: [\"update:modelValue\", \"focus\", \"blur\"],\n  setup(__props, { expose: __expose, emit }) {\n    const props = __props;\n    const id = generateUniqueId();\n    const inputAttrs = useSafeAttrs(useAttrs());\n    const proxiedModel = computed({\n      get: () => props.modelValue,\n      set: (value) => emit(\"update:modelValue\", value)\n    });\n    const inputLength = computed(() => props.modelValue.length ?? 0);\n    const textareaRef = ref(null);\n    __expose({\n      /**\n       * Expose the Textarea to clients to have full control over the input\n       * For example, trigger focus programmatically via `componentInstanceRef.value.textarea.focus()`\n       */\n      textarea: textareaRef\n    });\n    const counterText = computed(() => {\n      if (props.disabled || props.readonly) {\n        return null;\n      }\n      if (props.minCounter && props.maxCounter) {\n        return `${inputLength.value}/${props.maxCounter} (Min. ${props.minCounter})`;\n      }\n      if (props.maxCounter) {\n        return `${inputLength.value}/${props.maxCounter}`;\n      }\n      if (props.minCounter) {\n        return `${inputLength.value} (Min. ${props.minCounter})`;\n      }\n      return null;\n    });\n    const handleFocus = (event) => {\n      emit(\"focus\", event);\n    };\n    const handleBlur = (event) => {\n      emit(\"blur\", event);\n    };\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(BFormControl, {\n        \"color-scheme\": _ctx.colorScheme,\n        disabled: _ctx.disabled,\n        invalid: _ctx.invalid,\n        \"label-for\": unref(id),\n        label: _ctx.label,\n        \"no-padding-right\": true,\n        populated: !!proxiedModel.value,\n        readonly: _ctx.readonly,\n        hint: _ctx.hint,\n        height: \"auto\"\n      }, createSlots({\n        control: withCtx(() => [\n          withDirectives(createElementVNode(\"textarea\", mergeProps({\n            id: unref(id),\n            ref_key: \"textareaRef\",\n            ref: textareaRef,\n            \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => proxiedModel.value = $event),\n            disabled: _ctx.disabled,\n            readonly: _ctx.readonly,\n            \"aria-invalid\": _ctx.invalid,\n            rows: \"2\",\n            class: [\"b-textarea\", [\n              `b-textarea--${_ctx.colorScheme}`,\n              {\n                \"b-textarea--disabled\": _ctx.disabled\n              }\n            ]]\n          }, unref(inputAttrs), {\n            style: {\n              \"--custom-height\": _ctx.height ? `${_ctx.height}px` : void 0\n            },\n            onFocus: handleFocus,\n            onBlur: handleBlur\n          }), null, 16, _hoisted_1$2), [\n            [vModelText, proxiedModel.value]\n          ])\n        ]),\n        _: 2\n      }, [\n        _ctx.invalid && _ctx.errorMessage ? {\n          name: \"error\",\n          fn: withCtx(() => [\n            createElementVNode(\"div\", _hoisted_2$2, [\n              createVNode(unref(BFormError), {\n                \"color-scheme\": _ctx.colorScheme,\n                invalid: _ctx.invalid,\n                \"error-message\": _ctx.errorMessage\n              }, null, 8, [\"color-scheme\", \"invalid\", \"error-message\"])\n            ])\n          ]),\n          key: \"0\"\n        } : void 0,\n        counterText.value ? {\n          name: \"details-right\",\n          fn: withCtx(() => [\n            createElementVNode(\"div\", {\n              class: normalizeClass([\"b-textarea__counter\", `b-textarea__counter--${_ctx.colorScheme}`])\n            }, toDisplayString(counterText.value), 3)\n          ]),\n          key: \"1\"\n        } : void 0\n      ]), 1032, [\"color-scheme\", \"disabled\", \"invalid\", \"label-for\", \"label\", \"populated\", \"readonly\", \"hint\"]);\n    };\n  }\n});\nconst bTextarea_vue_vue_type_style_index_0_scoped_97cece94_lang = \"\";\nconst bTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"__scopeId\", \"data-v-97cece94\"]]);\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-timeline\",\n  setup(__props) {\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const childrenAlignments = ref([]);\n    const isCenterLayout = computed(() => {\n      const isLeft = childrenAlignments.value.includes(\"left\");\n      const isRight = childrenAlignments.value.includes(\"right\");\n      return isLeft && isRight;\n    });\n    provide(\"childrenAlignments\", childrenAlignments);\n    provide(\"isCenterLayout\", isCenterLayout);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", mergeProps(unref(safeAttrs), { class: \"b-timeline\" }), [\n        renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n      ], 16);\n    };\n  }\n});\nconst bTimeline_vue_vue_type_style_index_0_scoped_f1b5a0c9_lang = \"\";\nconst bTimeline = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"__scopeId\", \"data-v-f1b5a0c9\"]]);\nconst _withScopeId = (n) => (pushScopeId(\"data-v-3ce19fe8\"), n = n(), popScopeId(), n);\nconst _hoisted_1$1 = { class: \"b-timeline-item__axis\" };\nconst _hoisted_2$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(\"div\", { class: \"b-timeline-item__line\" }, null, -1));\nconst _hoisted_3$1 = {\n  key: 0,\n  class: \"b-timeline-item__dot-text\"\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-timeline-item\",\n  props: {\n    align: { default: \"right\" },\n    type: { default: \"blackNumberDot\" },\n    typeText: {},\n    tagColorScheme: { default: \"blue\" },\n    tagLabel: {},\n    title: {},\n    titleAs: { default: \"h6\" }\n  },\n  setup(__props) {\n    const props = __props;\n    const safeAttrs = useSafeAttrs(useAttrs());\n    const childrenAlignments = inject(\"childrenAlignments\");\n    const isCenterLayout = inject(\"isCenterLayout\");\n    const updateChildrenAlignments = () => {\n      if (childrenAlignments) {\n        childrenAlignments.value.push(props.align);\n      }\n    };\n    updateChildrenAlignments();\n    const isNumberDot = computed(() => props.type === \"blackNumberDot\");\n    const isWhiteDot = computed(() => props.type === \"whiteDot\");\n    const isBodyLeft = computed(() => props.align === \"left\");\n    watch(\n      () => props.align,\n      () => {\n        updateChildrenAlignments();\n      }\n    );\n    onMounted(() => {\n      if (!childrenAlignments) {\n        console.warn(\n          \"BTimelineItem needs to be rendered within a BTimeline component to be displayed correctly.\"\n        );\n      }\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"li\", mergeProps(unref(safeAttrs), {\n        class: [\"b-timeline-item\", [\n          `b-timeline-item--${_ctx.align}`,\n          {\n            \"b-timeline-item--center\": unref(isCenterLayout)\n          }\n        ]]\n      }), [\n        createElementVNode(\"div\", _hoisted_1$1, [\n          _hoisted_2$1,\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-timeline-item__dot\", [\n              {\n                \"b-timeline-item__dot--number\": isNumberDot.value,\n                \"b-timeline-item__dot--white\": isWhiteDot.value\n              }\n            ]])\n          }, [\n            isNumberDot.value ? (openBlock(), createElementBlock(\"p\", _hoisted_3$1, toDisplayString(_ctx.typeText), 1)) : createCommentVNode(\"\", true)\n          ], 2)\n        ]),\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-timeline-item__body\", { \"b-timeline-item__body--left\": isBodyLeft.value }])\n        }, [\n          _ctx.title || _ctx.tagLabel ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.titleAs), {\n            key: 0,\n            class: \"b-timeline-item__title\"\n          }, {\n            default: withCtx(() => [\n              createTextVNode(toDisplayString(_ctx.title) + \" \", 1),\n              _ctx.tagLabel ? (openBlock(), createElementBlock(\"div\", {\n                key: 0,\n                class: normalizeClass([\"b-timeline-item__tag-wrapper\", { \"b-timeline-item__tag-wrapper--gap\": _ctx.title }])\n              }, [\n                createVNode(unref(BTag), {\n                  \"color-scheme\": _ctx.tagColorScheme,\n                  size: \"md\",\n                  variant: \"outline\"\n                }, {\n                  default: withCtx(() => [\n                    createTextVNode(toDisplayString(_ctx.tagLabel), 1)\n                  ]),\n                  _: 1\n                }, 8, [\"color-scheme\"])\n              ], 2)) : createCommentVNode(\"\", true)\n            ]),\n            _: 1\n          })) : createCommentVNode(\"\", true),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-timeline-item__content\", { \"b-timeline-item__content--left\": isBodyLeft.value }])\n          }, [\n            renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n          ], 2)\n        ], 2)\n      ], 16);\n    };\n  }\n});\nconst bTimelineItem_vue_vue_type_style_index_0_scoped_3ce19fe8_lang = \"\";\nconst bTimelineItem = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-3ce19fe8\"]]);\nconst typographyVariants = [\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"body\",\n  \"small\"\n];\nconst __default__ = {};\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n  ...__default__,\n  __name: \"b-typography\",\n  props: {\n    as: { default: \"p\" },\n    variant: { default: void 0 },\n    hasSmallMarginTop: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const computedVariant = computed(() => {\n      return props.variant ?? (typographyVariants.includes(props.as) ? props.as : \"body\");\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.as), {\n        class: normalizeClass([\"b-typography\", [\n          `b-typography--${computedVariant.value}`,\n          { \"b-typography--has-small-margin-top\": _ctx.hasSmallMarginTop }\n        ]])\n      }, {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ]),\n        _: 3\n      }, 8, [\"class\"]);\n    };\n  }\n});\nconst bTypography_vue_vue_type_style_index_0_scoped_659a4070_lang = \"\";\nconst bTypography = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"__scopeId\", \"data-v-659a4070\"]]);\nconst STEPPER_STATE_KEY = Symbol(\"stepperState\");\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: true\n  },\n  __name: \"b-vertical-stepper\",\n  props: {\n    activeStep: {},\n    linear: { type: Boolean, default: true },\n    labelReversed: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false }\n  },\n  setup(__props) {\n    const props = __props;\n    const stepperAttr = useSafeAttrs(useAttrs());\n    const stepperState = computed(() => ({\n      activeStep: props.activeStep,\n      linear: props.linear,\n      labelReversed: props.labelReversed,\n      disabled: props.disabled\n    }));\n    provide(STEPPER_STATE_KEY, stepperState);\n    return (_ctx, _cache) => {\n      return openBlock(), createElementBlock(\"ul\", mergeProps({ class: \"b-vertical-stepper\" }, unref(stepperAttr)), [\n        renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n      ], 16);\n    };\n  }\n});\nconst bVerticalStepper_vue_vue_type_style_index_0_scoped_624f0999_lang = \"\";\nconst bVerticalStepper = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__scopeId\", \"data-v-624f0999\"]]);\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n  __name: \"b-height-animation\",\n  setup(__props) {\n    function expand(el) {\n      const element = el;\n      element.style.height = \"0\";\n      element.getBoundingClientRect();\n      requestAnimationFrame(() => {\n        element.style.height = `${element.scrollHeight}px`;\n      });\n    }\n    function collapse(el) {\n      const element = el;\n      element.style.height = `${element.scrollHeight}px`;\n      element.getBoundingClientRect();\n      requestAnimationFrame(() => {\n        element.style.height = \"0\";\n      });\n    }\n    function cleanUp(el) {\n      const element = el;\n      element.style.height = \"\";\n    }\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(Transition, mergeProps(_ctx.$attrs, {\n        name: \"b-height-animation-\",\n        onEnter: expand,\n        onLeave: collapse,\n        onAfterEnter: cleanUp,\n        onAfterLeave: cleanUp\n      }), {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n        ]),\n        _: 3\n      }, 16);\n    };\n  }\n});\nconst bHeightAnimation_vue_vue_type_style_index_0_scoped_1370a765_lang = \"\";\nconst BHeightAnimation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-1370a765\"]]);\nconst _hoisted_1 = [\"tabindex\", \"aria-label\", \"aria-expanded\", \"disabled\", \"onKeydown\"];\nconst _hoisted_2 = {\n  key: 1,\n  class: \"b-step__number\"\n};\nconst _hoisted_3 = {\n  key: 0,\n  class: \"b-step__label\"\n};\nconst _hoisted_4 = {\n  key: 1,\n  class: \"b-step__sub-label\"\n};\nconst _hoisted_5 = { class: \"b-step__body\" };\nconst _hoisted_6 = { class: \"b-step__content\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  ...{\n    inheritAttrs: false\n  },\n  __name: \"b-vertical-stepper-step\",\n  props: {\n    stepNumber: {},\n    name: {},\n    label: { default: void 0 },\n    subLabel: { default: void 0 },\n    tagLabel: { default: void 0 },\n    completed: { type: Boolean, default: false },\n    disabled: { type: Boolean, default: false }\n  },\n  emits: [\"click\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const stepperState = inject(STEPPER_STATE_KEY);\n    const attrs = useAttrs();\n    const stepAttr = useSafeAttrs(attrs);\n    const contentId = `step-content-${generateUniqueId()}`;\n    const isDisabled = computed(\n      () => (stepperState == null ? void 0 : stepperState.value.disabled) || ((stepperState == null ? void 0 : stepperState.value.linear) ? props.stepNumber > (stepperState == null ? void 0 : stepperState.value.activeStep) : props.disabled)\n    );\n    const isActive = computed(\n      () => props.stepNumber === (stepperState == null ? void 0 : stepperState.value.activeStep)\n    );\n    const isCompleted = computed(\n      () => (stepperState == null ? void 0 : stepperState.value.linear) ? props.stepNumber < (stepperState == null ? void 0 : stepperState.value.activeStep) : props.completed\n    );\n    const isShowingContent = computed(\n      () => !isDisabled.value && isActive.value && !!slots[\"expanded-content\"]\n    );\n    const tagVariant = computed(\n      () => isCompleted.value && !isDisabled.value ? \"green\" : \"blue\"\n    );\n    const hasLabels = computed(\n      () => props.label !== void 0 || props.subLabel !== void 0 || props.tagLabel !== void 0\n    );\n    function onStepClick() {\n      if (!isDisabled.value) {\n        emit(\"click\", props.stepNumber);\n      }\n    }\n    return (_ctx, _cache) => {\n      var _a, _b, _c, _d;\n      return openBlock(), createElementBlock(\"li\", mergeProps({ class: \"b-step\" }, unref(stepAttr)), [\n        createElementVNode(\"div\", {\n          class: normalizeClass([\"b-step__header\", {\n            \"b-step__header--disabled\": isDisabled.value\n          }]),\n          tabindex: isDisabled.value ? -1 : 0,\n          role: \"button\",\n          \"aria-label\": _ctx.name,\n          \"aria-expanded\": isShowingContent.value,\n          \"aria-controls\": contentId,\n          disabled: isDisabled.value,\n          onClick: onStepClick,\n          onKeydown: [\n            withKeys(onStepClick, [\"enter\"]),\n            withKeys(withModifiers(onStepClick, [\"prevent\"]), [\"space\"])\n          ]\n        }, [\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-step__icon-wrapper\", {\n              \"b-step__icon-wrapper--linear\": (_a = unref(stepperState)) == null ? void 0 : _a.linear,\n              \"b-step__icon-wrapper--active\": isActive.value,\n              \"b-step__icon-wrapper--completed\": isCompleted.value\n            }])\n          }, [\n            isCompleted.value && !isDisabled.value ? (openBlock(), createBlock(unref(BFeedbackIcon), {\n              key: 0,\n              size: \"xl\",\n              type: \"success\",\n              class: \"b-step__completed-icon\"\n            })) : (openBlock(), createElementBlock(\"div\", {\n              key: 1,\n              class: normalizeClass([\"b-step__default-icon\", { \"b-step__default-icon--disabled\": isDisabled.value }])\n            }, [\n              isShowingContent.value ? (openBlock(), createBlock(unref(EditIcon), {\n                key: 0,\n                size: \"md\"\n              })) : (openBlock(), createElementBlock(\"span\", _hoisted_2, toDisplayString(_ctx.stepNumber), 1))\n            ], 2))\n          ], 2),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-step__description\", {\n              \"b-step__description--reversed\": (_b = unref(stepperState)) == null ? void 0 : _b.labelReversed\n            }])\n          }, [\n            createElementVNode(\"span\", {\n              class: normalizeClass([\"b-step__name\", { \"b-step__name--disabled\": isDisabled.value }])\n            }, toDisplayString(_ctx.name), 3),\n            hasLabels.value ? (openBlock(), createElementBlock(\"div\", {\n              key: 0,\n              class: normalizeClass([\"b-step__labels\", { \"b-step__labels--disabled\": isDisabled.value }])\n            }, [\n              _ctx.label ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.label), 1)) : createCommentVNode(\"\", true),\n              _ctx.subLabel ? (openBlock(), createElementBlock(\"span\", _hoisted_4, toDisplayString(_ctx.subLabel), 1)) : createCommentVNode(\"\", true),\n              _ctx.tagLabel ? (openBlock(), createElementBlock(\"div\", {\n                key: 2,\n                class: normalizeClass([\"b-step__tag\", { \"b-step__tag--disabled\": isDisabled.value }])\n              }, [\n                createVNode(unref(BTag), {\n                  \"color-scheme\": tagVariant.value,\n                  variant: \"outline\"\n                }, {\n                  default: withCtx(() => [\n                    createTextVNode(toDisplayString(_ctx.tagLabel), 1)\n                  ]),\n                  _: 1\n                }, 8, [\"color-scheme\"])\n              ], 2)) : createCommentVNode(\"\", true)\n            ], 2)) : createCommentVNode(\"\", true)\n          ], 2)\n        ], 42, _hoisted_1),\n        createElementVNode(\"div\", _hoisted_5, [\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-step__body-left\", {\n              \"b-step__body-left--linear\": (_c = unref(stepperState)) == null ? void 0 : _c.linear,\n              \"b-step__body-left--completed\": isCompleted.value\n            }])\n          }, null, 2),\n          createElementVNode(\"div\", {\n            class: normalizeClass([\"b-step__body-right\", { \"b-step__body-right--non-linear\": !((_d = unref(stepperState)) == null ? void 0 : _d.linear) }])\n          }, [\n            createVNode(BHeightAnimation, null, {\n              default: withCtx(() => [\n                isShowingContent.value ? (openBlock(), createElementBlock(\"div\", {\n                  key: 0,\n                  id: contentId\n                }, [\n                  createElementVNode(\"div\", _hoisted_6, [\n                    renderSlot(_ctx.$slots, \"expanded-content\", {}, void 0, true)\n                  ])\n                ])) : createCommentVNode(\"\", true)\n              ]),\n              _: 3\n            })\n          ], 2)\n        ])\n      ], 16);\n    };\n  }\n});\nconst bVerticalStepperStep_vue_vue_type_style_index_0_scoped_1600e092_lang = \"\";\nconst bVerticalStepperStep = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-1600e092\"]]);\nexport {\n  BAccordion,\n  BAccordionItem,\n  bAlert as BAlert,\n  bAutocomplete as BAutocomplete,\n  bAvatar as BAvatar,\n  bBreadcrumbs as BBreadcrumbs,\n  BBreadcrumbsItem,\n  BButton,\n  bCardArticle as BCardArticle,\n  bCardPeople as BCardPeople,\n  bCardRt as BCardRT,\n  BCheckbox,\n  bCheckboxGroup as BCheckboxGroup,\n  bChipFilter as BChipFilter,\n  BChipInput,\n  _sfc_main$12 as BChipSelect,\n  BContextualMenu,\n  BContextualMenuContent,\n  bDateInput as BDateInput,\n  bDialog as BDialog,\n  BFeedbackIcon,\n  bFloatingButton as BFloatingButton,\n  bFooter as BFooter,\n  bHorizontalStepper as BHorizontalStepper,\n  bHorizontalStepperStep as BHorizontalStepperStep,\n  BIconButton,\n  bInput as BInput,\n  BLink,\n  BListbox,\n  BModal,\n  _sfc_main$t as BNavigationBar,\n  BNavigationBarServiceButton,\n  bNumberInput as BNumberInput,\n  bPagination as BPagination,\n  bPopover as BPopover,\n  bPopoverDescription as BPopoverDescription,\n  bPopoverTitle as BPopoverTitle,\n  bProgressIndicator as BProgressIndicator,\n  BREAKPOINTS_MAP,\n  bRadio as BRadio,\n  bRadioGroup as BRadioGroup,\n  bSegment as BSegment,\n  bSelect as BSelect,\n  BSnackbar,\n  bSnackbarManager as BSnackbarManager,\n  BSpinner,\n  _sfc_main$9 as BStructuredList,\n  bSwitch as BSwitch,\n  bTabs as BTabs,\n  BTag,\n  bTextarea as BTextarea,\n  bTimeline as BTimeline,\n  bTimelineItem as BTimelineItem,\n  BTooltip,\n  bVerticalStepper as BVerticalStepper,\n  bVerticalStepperStep as BVerticalStepperStep,\n  BSlidingPanel as __BSlidingPanel,\n  clearAllSnackbarNotification,\n  createSnackbarNotification,\n  bTypography as deprecated_BTypography,\n  useBreakpoints\n};\n//# sourceMappingURL=index.js.map\n"],"names":["n","c","o","r","s","a","l","e","t","_","u","i","d","p","f","m","computedWithControl","source","fn","v","track","trigger","dirty","ref","update","watch","get","set","result","customRef","_track","_trigger","v2","tryOnScopeDispose","getCurrentScope","onScopeDispose","toValue","unref","isClient","toString","isObject","val","noop","isIOS","getIsIOS","_a","increaseWithUnit","target","delta","value","unit","tryOnMounted","sync","getCurrentInstance","onMounted","nextTick","REGEX_PARSE","REGEX_FORMAT","defaultMeridiem","hours","minutes","isLowercase","hasPeriod","acc","curr","formatOrdinal","num","suffixes","formatDate","date","formatStr","options","years","month","days","seconds","milliseconds","day","meridiem","matches","match","$1","_a2","_b","normalizeDate","ms","useDateFormat","computed","useTimeoutFn","cb","interval","immediate","isPending","timer","clear","stop","start","args","readonly","unrefElement","elRef","plain","defaultWindow","useEventListener","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","_iOSWorkaround","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","target2","useActiveElement","deep","document","getDeepActiveElement","element","activeElement","useMounted","isMounted","useSupported","callback","useMediaQuery","query","isSupported","mediaQuery","watchEffect","useBreakpoints","breakpoints","getValue","k","greaterOrEqual","shortcutMethods","shortcuts","b","points","useResizeObserver","observerOptions","observer","targets","els","_el","useElementSize","initialSize","box","isSVG","width","height","stop1","entry","boxSize","$elem","styles","formatBoxSize","inlineSize","blockSize","ele","stop2","useFocusWithin","targetElement","min","max","round","createCoords","oppositeSideMap","oppositeAlignmentMap","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","x","y","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","name","nextX","nextY","data","reset","detectOverflow","state","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","isBasePlacement","fallbackPlacements","placements","overflow","overflows","overflowsData","sides","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$map$so","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","offset","_middlewareData$offse","diffCoords","size","apply","isYAxis","heightSide","widthSide","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","maximumClippingWidth","maximumClippingHeight","xMin","xMax","yMin","yMax","nextDimensions","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentIFrame","iframeScale","iframeRect","left","top","convertOffsetParentRelativeRectToViewportRelativeRect","isOffsetParentAnElement","documentElement","scroll","offsets","offsetRect","getClientRects","getWindowScrollBarX","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","getTrueOffsetParent","polyfill","getOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","isRTL","flip$1","size$1","mergedOptions","platformWithCache","computePosition$1","_$el","getDPR","roundByDPR","dpr","useFloating","whileElementsMountedOption","openOption","_unref","middlewareOption","placementOption","_unref2","strategyOption","_unref3","transformOption","_unref4","referenceElement","floatingElement","shallowRef","isPositioned","floatingStyles","initialStyles","xVal","yVal","whileElementsMountedCleanup","position","attach","shallowReadonly","_export_sfc","sfc","props","key","BREAKPOINTS_MAP","useBreakpoints$1","isBrowser","useSafeAttrs","attrs","__","rest","generateUniqueId","SIZE_MAP","_hoisted_1$1d","_hoisted_2$W","createElementVNode","_hoisted_3$C","_hoisted_4$q","render$6","_ctx","_cache","openBlock","createElementBlock","ErrorIconBlack","_hoisted_1$1c","_hoisted_2$V","_hoisted_3$B","_hoisted_4$p","render$5","ErrorIconWhite","_hoisted_1$1b","_hoisted_2$U","_hoisted_3$A","_hoisted_4$o","render$4","InfoIconBlack","_hoisted_1$1a","_hoisted_2$T","_hoisted_3$z","_hoisted_4$n","render$3","InfoIconWhite","_hoisted_1$19","_hoisted_2$S","_hoisted_3$y","_hoisted_4$m","render$2","SuccessIcon","_hoisted_1$18","_hoisted_2$R","_hoisted_3$x","_hoisted_4$l","render$1","WarningIcon","_sfc_main$1n","defineComponent","__props","feedbackIconMap","iconPixelSize","iconComponent","createBlock","resolveDynamicComponent","createCommentVNode","BFeedbackIcon","_withScopeId$7","pushScopeId","popScopeId","_hoisted_1$17","_hoisted_2$Q","_hoisted_3$w","_hoisted_4$k","_hoisted_5$e","_hoisted_6$e","_hoisted_7$b","_hoisted_8$7","_hoisted_9$6","COMPACT_TEXT_DELIMITER$1","_sfc_main$1m","emit","slots","useSlots","useAttrs","alertAttrs","greaterThanMd","isLine","ariaLabel","feedbackIconSize","linkIconSize","hasCustomAction","mergeProps","createVNode","normalizeClass","toDisplayString","$event","CloseIcon","renderSlot","bAlert","ACTIVE_DESCENDANT_CONTEXT","genDescendantId","descendantPrefixId","index","useActiveDescendantOptions","inject","useActiveDescendant","descendants","activeIndex","activeDescendantId","provide","applyDescendantAttributes","isActiveDescendant","goToPreviousDescendant","goToNextDescendant","goToFirstDescendant","goToLastDescendant","resetDescendant","getActiveDescendant","getActiveDescendantValue","idx","_hoisted_1$15","_sfc_main$1k","CloseCircleFillIcon","BFormError","CHECKBOX_GROUP_STATE_KEY","_hoisted_1$14","_hoisted_2$O","_hoisted_3$v","_sfc_main$1j","__expose","checkboxRef","checkboxGroupState","checkboxAttrs","checkboxId","isControlled","isChecked","proxiedModel","computedColorScheme","computedInvalid","computedDisabled","computedReadonly","ariaChecked","hasCheckmark","onClick","withDirectives","vModelCheckbox","Fragment","LessIcon","CheckIcon","createTextVNode","BCheckbox","_hoisted_1$12","_hoisted_2$N","_hoisted_3$u","_hoisted_4$j","_hoisted_5$d","_hoisted_6$d","_hoisted_7$a","_hoisted_8$6","_hoisted_9$5","_sfc_main$1h","listboxRef","listboxOptionsRef","onSelect","isSelected","withModifiers","renderList","option","withCtx","normalizeStyle","BListbox","LISTBOX_DISTANCE_FROM_VIEWPORT_EDGE","createListboxIds","triggerId","listboxId","useListboxFloating","referenceRef","_hoisted_1$11","_sfc_main$1g","useCssVars","SpinnerIcon","BSpinner","_hoisted_1$$","_hoisted_2$L","_hoisted_3$s","_sfc_main$1e","SIZE_TO_INITIALS_MAP","imageError","handleImageError","sanitizedInitials","showImage","avatarAttrs","bAvatar","isExternalLink","link","externalPrefix","linkHrefParser","as","to","_hoisted_1$X","_sfc_main$1a","iconOrder","buttonRef","btnAttrs","buttonSizeToSpinnerSizeMap","buttonSizeToIconSizeMap","spinnerSize","iconSize","linkAttrs","isLink","vShow","BButton","_hoisted_1$T","_hoisted_2$F","_sfc_main$15","icon_order","iconSizeMap","tagAttrs","BTag","_hoisted_1$M","_hoisted_2$z","_hoisted_3$m","_hoisted_4$e","_hoisted_5$8","_hoisted_6$8","_sfc_main$_","_emits","formControlRef","focused","hasSmallLabel","hasErrorSlotContent","hasDetails","BFormControl","_hoisted_1$H","_hoisted_2$v","_sfc_main$V","linkRef","id","colorClassName","hrefProp","BLink","_hoisted_1$C","SCROLL_FACTOR","_sfc_main$P","leftControlWidth","rightControlWidth","scrollRef","leftControlRef","rightControlRef","scrollPosition","scrollElementIntoView","clientWidth","showLeftControl","showRightControl","scrollVisibleWidth","scrollTotalWidth","scrollTo","scrollValue","directionFactor","updateScrollPosition","elementLeftPosition","elementHalfWidth","scrollHalfWidth","BSlidingPanel","STEPPER_STATE_KEY$1","_hoisted_1$B","_hoisted_2$r","_sfc_main$O","stepperAttr","registeredSteps","completedSteps","stepperState","registerStep","unregisterStep","setCompletedStep","smallerOrEqual","isSingleStep","wrapperComponent","completed","ChevronLeftIcon","ChevronRightIcon","bHorizontalStepper","_withScopeId$5","_hoisted_1$A","_hoisted_2$q","_hoisted_3$i","_hoisted_4$c","_hoisted_5$6","_hoisted_6$6","_hoisted_7$5","_sfc_main$N","computedPercentage","svgId","BPropgressIndicator","_withScopeId$4","_hoisted_1$z","_hoisted_2$p","_hoisted_3$h","_hoisted_4$b","_hoisted_5$5","_hoisted_6$5","_hoisted_7$4","_hoisted_8$3","_hoisted_9$2","_sfc_main$M","stepId","stepAttr","isDisabled","isActive","isCompleted","tagVariant","hasLabels","completedPercentage","progressAltText","showStep","onBeforeUnmount","onStepClick","_c","_d","withKeys","EditIcon","bHorizontalStepperStep","_sfc_main$K","inputRef","inputAttrs","createSlots","vModelDynamic","bInput","_sfc_main$i","progressBarWidth","progressBarAttr","bProgressIndicator","_hoisted_1$9","_hoisted_2$7","_hoisted_3$5","_hoisted_4$2","_sfc_main$e","emits","selectRef","triggerRef","formControlDivRef","isExpanded","internalModel","isPopulated","displaySelection","toRef","activeDescendant","isFocused","closeDropdown","openDropdown","onLetterKeyPress","someOption","optionElement","deselect","onResetModel","onEnterOrSpaceKey","onTriggerArrowDownKey","onTriggerArrowUpKey","ChevronUpIcon","ChevronDownIcon","bSelect","COMPACT_TEXT_DELIMITER","TEXT_LENGTH_DELIMITER","AUTO_DISMISS_DURATION","snackbarStore","clearAllSnackbarNotification","dismissSnackbarNotification","item","createSnackbarNotification","_withScopeId$1","_hoisted_1$8","_hoisted_2$6","_hoisted_3$4","_hoisted_4$1","_hoisted_5$1","_hoisted_6$1","_hoisted_7","_sfc_main$d","isLongMessage","hasAction","duration","dismiss","onPause","onResume","iconProps","normalizeProps","guardReactiveProps","BSnackbar","_hoisted_1$7","_sfc_main$c","Teleport","TransitionGroup","bSnackbarManager"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]}