@knime/product-features 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_plugin-vue_export-helper-BLJdeqtw.js +15264 -0
- package/dist/_plugin-vue_export-helper-BLJdeqtw.js.map +1 -0
- package/dist/_plugin-vue_export-helper.css +4544 -0
- package/dist/ai.css +197 -0
- package/dist/ai.js +195 -0
- package/dist/ai.js.map +1 -0
- package/dist/nodes.css +0 -4529
- package/dist/nodes.js +3 -11252
- package/dist/nodes.js.map +1 -1
- package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts +11 -0
- package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts +22 -0
- package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/enums.d.ts +6 -0
- package/dist/src/ai/KdsPromptInput/enums.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/index.d.ts +4 -0
- package/dist/src/ai/KdsPromptInput/index.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/types.d.ts +59 -0
- package/dist/src/ai/KdsPromptInput/types.d.ts.map +1 -0
- package/dist/src/ai/index.d.ts +3 -0
- package/dist/src/ai/index.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts +16 -0
- package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/index.d.ts +3 -0
- package/dist/src/versions/CreateVersionForm/index.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/types.d.ts +4 -0
- package/dist/src/versions/CreateVersionForm/types.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts +23 -0
- package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts +7 -0
- package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts +8 -0
- package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts +144 -0
- package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts +9 -0
- package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/constants.d.ts +4 -0
- package/dist/src/versions/VersionHistory/constants.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/index.d.ts +4 -0
- package/dist/src/versions/VersionHistory/index.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/index.d.ts +11 -0
- package/dist/src/versions/VersionHistory/mock-data/index.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/savepoints.d.ts +5 -0
- package/dist/src/versions/VersionHistory/mock-data/savepoints.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/versionHistory.d.ts +7 -0
- package/dist/src/versions/VersionHistory/mock-data/versionHistory.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/types.d.ts +63 -0
- package/dist/src/versions/VersionHistory/types.d.ts.map +1 -0
- package/dist/src/versions/index.d.ts +5 -0
- package/dist/src/versions/index.d.ts.map +1 -0
- package/dist/versions.css +114 -0
- package/dist/versions.js +630 -0
- package/dist/versions.js.map +1 -0
- package/package.json +11 -3
package/dist/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sources":["../../components/dist/index.js","../src/nodes/NodeDescriptionTabs/OptionsTab.vue","../src/nodes/PortIcon/enums.ts","../src/nodes/PortIcon/PortIcon.vue","../src/nodes/NodeDescriptionTabs/PortTemplateInfo.vue","../src/nodes/NodeDescriptionTabs/PortGroup.vue","../src/nodes/NodeDescriptionTabs/PortsTab.vue","../src/nodes/NodeDescriptionTabs/ViewsTab.vue","../src/nodes/NodeDescriptionTabs/NodeDescriptionTabs.vue"],"sourcesContent":["import { defineComponent, createPropsRestProxy, ref, watch, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, Fragment, renderList, createBlock, normalizeStyle, createCommentVNode, shallowRef, markRaw, readonly, toRef, unref, resolveDynamicComponent, mergeProps, useTemplateRef, createVNode, withCtx, renderSlot, h as h$1, useSlots, getCurrentInstance, useModel, mergeModels, onMounted, onUnmounted, nextTick, useId, withModifiers, watchEffect, useAttrs, withKeys, isRef, getCurrentScope, onScopeDispose, defineAsyncComponent, toRefs, useCssVars, createSlots, normalizeProps, withDirectives, vShow, onBeforeUpdate, onBeforeUnmount, vModelText, createTextVNode, guardReactiveProps } from 'vue';\nimport { useLocalStorage, useDark, usePreferredDark, useResizeObserver, useMutationObserver, onClickOutside, useElementSize, useMousePressed, useVirtualList, useTemplateRefsList } from '@vueuse/core';\n\nimport './index.css';const kdsAvatarSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\"\n};\nconst kdsAvatarSizes = Object.values(kdsAvatarSize);\n\nconst _hoisted_1$15 = [\"role\", \"title\", \"aria-hidden\", \"aria-label\", \"data-color\"];\nconst _hoisted_2$G = [\"src\"];\nconst _hoisted_3$u = {\n key: 1,\n class: \"kds-avatar-initials\",\n \"aria-hidden\": \"true\"\n};\nconst _sfc_main$1G = /* @__PURE__ */ defineComponent({\n __name: \"KdsAvatar\",\n props: {\n initials: {},\n src: {},\n size: { default: () => kdsAvatarSize.XLARGE },\n title: {}\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"size\"]);\n const imageLoadFailed = ref(false);\n const availableAvatarColors = [\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"purple\",\n \"aquamarine\",\n \"grassgreen\",\n \"brown\"\n ];\n const getAvatarColor = (initials) => {\n if (initials === \"\") {\n return \"empty\";\n }\n const hash = initials.toUpperCase().split(\"\").reduce((acc, char) => acc + (char.codePointAt(0) ?? 0), 0);\n return availableAvatarColors[hash % availableAvatarColors.length];\n };\n watch(\n () => props.src,\n () => {\n imageLoadFailed.value = false;\n }\n );\n const shouldShowImage = computed(\n () => Boolean(props.src) && !imageLoadFailed.value\n );\n const onImageError = () => {\n imageLoadFailed.value = true;\n };\n const accessibleTitle = computed(() => props.title?.trim() ?? \"\");\n const hasTitle = computed(() => accessibleTitle.value.length > 0);\n const displayedInitials = computed(\n () => (props.initials ?? \"\").trim().slice(0, 2).toUpperCase()\n );\n const avatarColor = computed(() => getAvatarColor(displayedInitials.value));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-avatar\", __props.size]),\n role: hasTitle.value ? \"img\" : \"presentation\",\n title: hasTitle.value ? accessibleTitle.value : void 0,\n \"aria-hidden\": !hasTitle.value ? \"true\" : void 0,\n \"aria-label\": hasTitle.value ? accessibleTitle.value : void 0,\n \"data-color\": avatarColor.value\n }, [\n shouldShowImage.value ? (openBlock(), createElementBlock(\"img\", {\n key: 0,\n class: \"kds-avatar-image\",\n src: props.src,\n alt: \"\",\n \"aria-hidden\": \"true\",\n onError: onImageError\n }, null, 40, _hoisted_2$G)) : (openBlock(), createElementBlock(\"div\", _hoisted_3$u, [\n createElementVNode(\"span\", null, toDisplayString(displayedInitials.value), 1)\n ]))\n ], 10, _hoisted_1$15);\n };\n }\n});\n\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};\n\nconst KdsAvatar = /* @__PURE__ */ _export_sfc(_sfc_main$1G, [[\"__scopeId\", \"data-v-9e1a5abe\"]]);\n\nconst _hoisted_1$14 = [\"aria-label\"];\nconst _hoisted_2$F = { class: \"avatars\" };\nconst _hoisted_3$t = {\n key: 0,\n class: \"more-count\",\n \"aria-hidden\": \"true\"\n};\nconst _sfc_main$1F = /* @__PURE__ */ defineComponent({\n __name: \"KdsAvatarCounter\",\n props: {\n moreCount: { default: 0 },\n size: { default: () => kdsAvatarSize.XLARGE },\n avatars: {}\n },\n setup(__props) {\n const ariaLabel = computed(() => {\n const prefix = \"Avatar of \";\n const users = __props.avatars.map((avatar) => avatar.title ?? avatar.initials).join(\", \");\n const moreText = ` and ${__props.moreCount} more.`;\n return [prefix, users, __props.moreCount > 0 ? moreText : \".\"].join(\"\");\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"kds-avatar-counter\",\n role: \"group\",\n \"aria-label\": ariaLabel.value\n }, [\n createElementVNode(\"div\", _hoisted_2$F, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.avatars, (avatar, index) => {\n return openBlock(), createBlock(KdsAvatar, {\n key: index,\n \"aria-hidden\": \"true\",\n style: normalizeStyle({ zIndex: __props.avatars.length - index }),\n class: \"avatar\",\n size: __props.size,\n initials: avatar.initials,\n title: avatar.title,\n src: avatar.src\n }, null, 8, [\"style\", \"size\", \"initials\", \"title\", \"src\"]);\n }), 128))\n ]),\n __props.moreCount > 0 ? (openBlock(), createElementBlock(\"div\", _hoisted_3$t, \" +\" + toDisplayString(__props.moreCount), 1)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$14);\n };\n }\n});\n\nconst KdsAvatarCounter = /* @__PURE__ */ _export_sfc(_sfc_main$1F, [[\"__scopeId\", \"data-v-1aef516d\"]]);\n\nconst __variableDynamicImportRuntimeHelper = (glob$1, path$13, segs) => {\n\tconst v = glob$1[path$13];\n\tif (v) return typeof v === \"function\" ? v() : Promise.resolve(v);\n\treturn new Promise((_, reject) => {\n\t\t(typeof queueMicrotask === \"function\" ? queueMicrotask : setTimeout)(reject.bind(null, /* @__PURE__ */ new Error(\"Unknown variable dynamic import: \" + path$13 + (path$13.split(\"/\").length !== segs ? \". Note that variables only represent file names one level deep.\" : \"\"))));\n\t});\n};\n\nfunction useIcon({\n name,\n folder\n}) {\n const iconCache = /* @__PURE__ */ new Map();\n const iconComponent = shallowRef(null);\n const status = shallowRef(\"loading\");\n watch(\n () => name.value,\n (newName) => {\n if (iconCache.has(newName)) {\n iconComponent.value = iconCache.get(newName);\n status.value = \"loaded\";\n return;\n }\n status.value = \"loading\";\n __variableDynamicImportRuntimeHelper((/* #__PURE__ */ Object.assign({\"../../../node_modules/@knime/kds-styles/dist/img/icons/add-user.svg\": () => import('./add-user-BBT39sTb.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/ai-general.svg\": () => import('./ai-general-xv5Ym88e.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/annotation-mode.svg\": () => import('./annotation-mode-C0YL12XP.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/arrow-down.svg\": () => import('./arrow-down-D8Q9vZG_.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/arrow-up.svg\": () => import('./arrow-up-DJlZjTYZ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/arrows-expand.svg\": () => import('./arrows-expand-eXIczgyQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/arrows-move.svg\": () => import('./arrows-move-CDiEl6Ry.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/arrows-order.svg\": () => import('./arrows-order-DMoJXS-I.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/auto-configure.svg\": () => import('./auto-configure-BU7AIhL7.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/back.svg\": () => import('./back-D1kA9zuH.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/bold.svg\": () => import('./bold-C8dRggXe.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/calendar.svg\": () => import('./calendar-B6v1nLjF.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/case-sensitive.svg\": () => import('./case-sensitive-CHP-__99.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cell-renderer.svg\": () => import('./cell-renderer-DGnkQWTq.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/center-aligned.svg\": () => import('./center-aligned--zRFP8Lf.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/checkmark.svg\": () => import('./checkmark-DOn23D5R.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-down.svg\": () => import('./chevron-down-BsSG_C_8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-left-double.svg\": () => import('./chevron-left-double-D-EEhZoy.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-left.svg\": () => import('./chevron-left-BKFnSetN.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-right-double.svg\": () => import('./chevron-right-double-BgfwXKBg.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-right.svg\": () => import('./chevron-right-CozOeJxa.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/chevron-up.svg\": () => import('./chevron-up-FA-c_L5N.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/circle-error.svg\": () => import('./circle-error-CwUp2gKh.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/circle-info.svg\": () => import('./circle-info-CcCjmOUH.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/circle-question.svg\": () => import('./circle-question-TFLpel6L.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/circle-success.svg\": () => import('./circle-success-CGkhxpZE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/circle-unchecked.svg\": () => import('./circle-unchecked-DOoOn6iz.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-download.svg\": () => import('./cloud-download-CstHUDZv.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-knime.svg\": () => import('./cloud-knime-CpZfWe3J.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-pending-changes.svg\": () => import('./cloud-pending-changes-CWBUkOnb.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-synced.svg\": () => import('./cloud-synced-DlT_4y5Q.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-upload.svg\": () => import('./cloud-upload-DQvu_3cc.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cloud-workflow.svg\": () => import('./cloud-workflow-Bo_4KHLP.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/code-block.svg\": () => import('./code-block-DrOaCM3g.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/collection.svg\": () => import('./collection-BBXRVj4b.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/color-picker.svg\": () => import('./color-picker-k6GkGnF5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/column-width.svg\": () => import('./column-width-Cjb-6nqI.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/comment.svg\": () => import('./comment-DL9ZR-vM.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/component.svg\": () => import('./component-BArrSsoi.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/connection.svg\": () => import('./connection-cIDhN_bU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/copy.svg\": () => import('./copy-D43FaHi-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/cursor.svg\": () => import('./cursor-DSIjd7yc.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/data-app.svg\": () => import('./data-app-BHCZS7qU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/data-value-view.svg\": () => import('./data-value-view-DZAfZGqs.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/date-time.svg\": () => import('./date-time-C3cmSAQm.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-browse.svg\": () => import('./db-browse-BJj19qUq.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-database.svg\": () => import('./db-database-CyCrPzu-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-fetch.svg\": () => import('./db-fetch-CJMHzQp5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-schema.svg\": () => import('./db-schema-C4gtYXvd.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-table-view.svg\": () => import('./db-table-view-CcF1plGQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/db-table.svg\": () => import('./db-table-DifKATf6.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/deploy.svg\": () => import('./deploy-Dr6jEhZU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/detect.svg\": () => import('./detect-DkQik2ep.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/divider.svg\": () => import('./divider-Bhqt1kvt.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/duplicate.svg\": () => import('./duplicate-Mtq886XD.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/duration.svg\": () => import('./duration-Dfp9ox2I.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/edit.svg\": () => import('./edit-Bg040TR4.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/education.svg\": () => import('./education-CsB0t7AG.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/error-panel.svg\": () => import('./error-panel-BCvYjM5m.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/execute-all.svg\": () => import('./execute-all-JZlJ6VtK.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/execute.svg\": () => import('./execute-CDtz4PKy.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/expand-panel.svg\": () => import('./expand-panel-C0-YqxWN.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/extension-community.svg\": () => import('./extension-community-BL7uY2lh.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/extension.svg\": () => import('./extension-DV2OG2b-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/external-link.svg\": () => import('./external-link-D6c_uzZp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/eye.svg\": () => import('./eye-DIQBS75n.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/file-export.svg\": () => import('./file-export-Cm5xiHIP.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/file-text.svg\": () => import('./file-text-DCIkmzWQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/file.svg\": () => import('./file-D-fzxVWf.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/filter.svg\": () => import('./filter-BCzsHR5o.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/flow-variable-default.svg\": () => import('./flow-variable-default-D8YRzPWl.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/flow-variable-in-out.svg\": () => import('./flow-variable-in-out-v434yDUG.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/flow-variable-in.svg\": () => import('./flow-variable-in-BiO5ppkU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/flow-variable-out.svg\": () => import('./flow-variable-out-BuATVHTL.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/folder-move.svg\": () => import('./folder-move-6L5NfoIs.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/folder-plus.svg\": () => import('./folder-plus-0Z-aPAxX.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/folder-search.svg\": () => import('./folder-search-DDOYg0f6.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/folder-workflow.svg\": () => import('./folder-workflow-hjaE8p-i.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/folder.svg\": () => import('./folder-xz8Bw1k6.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/forum.svg\": () => import('./forum-CunE8Bpo.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/function-catalog.svg\": () => import('./function-catalog-CRXmv7AG.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/hide-eye.svg\": () => import('./hide-eye-BrIKmBWt.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/home.svg\": () => import('./home-CW06ROg3.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/import-table.svg\": () => import('./import-table-BaqmTPnF.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/import.svg\": () => import('./import-Bjz9KZM-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/info.svg\": () => import('./info-C8GezBIf.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/interval.svg\": () => import('./interval-CzQaVMPH.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/italic.svg\": () => import('./italic-B6SY7x6N.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/key.svg\": () => import('./key-9hybjORk.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/layout-editor.svg\": () => import('./layout-editor-At6vQ3aU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/left-aligned.svg\": () => import('./left-aligned-C90MrNJd.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/like.svg\": () => import('./like-BwC1fMTh.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/limit.svg\": () => import('./limit-D84DMtQW.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/link.svg\": () => import('./link-DH0XmQMp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/linked-component.svg\": () => import('./linked-component-BOb5aj87.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/linked-metanode.svg\": () => import('./linked-metanode-ojS3JQJp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/list-bulletpoint.svg\": () => import('./list-bulletpoint-BLPnukaY.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/list-number.svg\": () => import('./list-number-C47JfmdB.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/list-thumbs.svg\": () => import('./list-thumbs-F5ICnK4Z.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/list.svg\": () => import('./list-CQmzxqnp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/local-filesystem.svg\": () => import('./local-filesystem-fyrwOsG5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/lock.svg\": () => import('./lock-B9qCq8wW.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/login.svg\": () => import('./login-DGaxAy8E.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/menu.svg\": () => import('./menu-BSS_QnZi.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/metanode.svg\": () => import('./metanode-BOoscDpe.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/mini-map.svg\": () => import('./mini-map-DKez_1T0.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/minimize-dialog.svg\": () => import('./minimize-dialog-CsKInFjQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/minimize-side-panel.svg\": () => import('./minimize-side-panel-DOe27uOi.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/minus.svg\": () => import('./minus-CUOnFK-_.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/more-actions.svg\": () => import('./more-actions-r1Ai1cv8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/node-stack.svg\": () => import('./node-stack-B2-NOdn1.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/nodes-align-horiz.svg\": () => import('./nodes-align-horiz-BNN1SQyE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/nodes-align-vert.svg\": () => import('./nodes-align-vert-JG8gmWk5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/open-in-new-window.svg\": () => import('./open-in-new-window-BAU_-IMl.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/pan-mode.svg\": () => import('./pan-mode-CGVZU5HB.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/parameter.svg\": () => import('./parameter-D3NI1oyc.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/path-separator.svg\": () => import('./path-separator-DRnUilGA.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/pending-changes.svg\": () => import('./pending-changes-BvFdyKn8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/pin.svg\": () => import('./pin-B6vKBZDp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/placeholder.svg\": () => import('./placeholder-CIq-OFkj.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/plus.svg\": () => import('./plus-BGcbvgG4.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/python.svg\": () => import('./python-Bn3ET_9Z.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/quote.svg\": () => import('./quote-BhPMewQl.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/random-seed.svg\": () => import('./random-seed-BmLMj_2x.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/re-execution.svg\": () => import('./re-execution-CPa8UUdU.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/redo.svg\": () => import('./redo-BjctXrq6.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/regex.svg\": () => import('./regex-CErlWJQW.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/reload.svg\": () => import('./reload-CDm_DDdP.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/rename.svg\": () => import('./rename-Cyk_xng4.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/replace.svg\": () => import('./replace-9aOLtKuD.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/reset-all.svg\": () => import('./reset-all-Buf5y-HV.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/resume-execution.svg\": () => import('./resume-execution-CRqaKZqz.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/right-aligned.svg\": () => import('./right-aligned-2BkZ58o-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/rocket.svg\": () => import('./rocket-Bs46VoUh.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/save-as.svg\": () => import('./save-as-CTnCvHfQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/save.svg\": () => import('./save-B7DzWjxS.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/schedule.svg\": () => import('./schedule-DuSqromp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/search.svg\": () => import('./search-gykfARpE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/secret-store.svg\": () => import('./secret-store-_ZlpQRjr.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/selected-cancel.svg\": () => import('./selected-cancel-CS3Gep56.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/selected-execution.svg\": () => import('./selected-execution-BJxjtKXq.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/selected-reset.svg\": () => import('./selected-reset-SMx6XDk5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/send.svg\": () => import('./send-G2BlBsxu.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/server-rack-workflow.svg\": () => import('./server-rack-workflow-CBhKbyGY.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/service.svg\": () => import('./service-9hAt2V0T.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/settings.svg\": () => import('./settings-BLMTAq-1.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/share.svg\": () => import('./share-BIrWLTtn.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/shortcuts.svg\": () => import('./shortcuts-fbNZWoSf.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/sort-ascending.svg\": () => import('./sort-ascending-DNyV4Drg.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/sort-descending.svg\": () => import('./sort-descending-BdIGPn-9.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/space-local.svg\": () => import('./space-local-D4kTqwrB.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/space-private.svg\": () => import('./space-private-D06CTwvE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/space.svg\": () => import('./space-fMpb-o4-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/stepwise-execution.svg\": () => import('./stepwise-execution-C1mAO3z_.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/stop.svg\": () => import('./stop-Cgmy2iPY.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/strikethrough.svg\": () => import('./strikethrough-DG4Ejxqk.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/table-statistics.svg\": () => import('./table-statistics-y-P6EXGX.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/table.svg\": () => import('./table-Pffb9Oig.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/tag.svg\": () => import('./tag-_fZiuJaC.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/team.svg\": () => import('./team-CtZLwOou.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/template-gallery.svg\": () => import('./template-gallery-BtXi4GHd.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/text.svg\": () => import('./text-DFu-L62Z.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/textstyles.svg\": () => import('./textstyles-j0GQtKYE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/thumbs-down.svg\": () => import('./thumbs-down-CiozrdIW.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/thumbs-up.svg\": () => import('./thumbs-up-E4uRtjhi.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/time.svg\": () => import('./time-DU80J5X8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/to-bottom.svg\": () => import('./to-bottom-B8wat1Dk.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/to-top.svg\": () => import('./to-top-CCAfU4xz.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/trash.svg\": () => import('./trash-Dq5FHwNO.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/trigger.svg\": () => import('./trigger-Qns9VYQG.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/underline.svg\": () => import('./underline-CDZcVZHB.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/undo.svg\": () => import('./undo-CnghWcXK.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/unlink.svg\": () => import('./unlink-CL0kTZX2.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/update-file.svg\": () => import('./update-file-5lTfm97G.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/usage.svg\": () => import('./usage-827uIQyn.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/user.svg\": () => import('./user-DTq28OjK.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/validate.svg\": () => import('./validate-CD0_eO0m.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/version.svg\": () => import('./version-CSTTEeam.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/view-cards.svg\": () => import('./view-cards-DS0Cpf95.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/warning.svg\": () => import('./warning-CJC1Oij-.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/workflow.svg\": () => import('./workflow-n50o8jCH.js'),\"../../../node_modules/@knime/kds-styles/dist/img/icons/x-close.svg\": () => import('./x-close-D-oEO9N9.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/audio-datatype.svg\": () => import('./audio-datatype-DyzJTMxb.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/binary-object-datatype.svg\": () => import('./binary-object-datatype-DHZPEEoV.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/bit-byte-vector-datatype.svg\": () => import('./bit-byte-vector-datatype-XJ0yjm_4.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/boolean-datatype.svg\": () => import('./boolean-datatype-B0SBV35e.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/collection-list-datatype.svg\": () => import('./collection-list-datatype-DDLoFog9.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/collection-set-datatype.svg\": () => import('./collection-set-datatype-QGQHiErr.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/date-datatype.svg\": () => import('./date-datatype-DX2o-Qoi.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/date-time-local-datatype.svg\": () => import('./date-time-local-datatype-BRveWl93.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/date-time-zoned-datatype.svg\": () => import('./date-time-zoned-datatype-CvUpjzJk.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/default-extension-datatype.svg\": () => import('./default-extension-datatype-C7jbGM5d.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/document-datatype.svg\": () => import('./document-datatype-CmWsp5e8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/duration-date-based-datatype.svg\": () => import('./duration-date-based-datatype-ZMMDq_rT.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/duration-time-based-datatype.svg\": () => import('./duration-time-based-datatype-DWj4ALsB.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/geo-datatype.svg\": () => import('./geo-datatype-CTQgQTql.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/helm-datatype.svg\": () => import('./helm-datatype-XIlHXQBP.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/image-png-datatype.svg\": () => import('./image-png-datatype-CtnGTQlX.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/image-svg-datatype.svg\": () => import('./image-svg-datatype-DgySAOGM.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/json-datatype.svg\": () => import('./json-datatype-DgHr_Q8U.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/labeling-datatype.svg\": () => import('./labeling-datatype-CGG_DguN.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/linear-notation-molecule.svg\": () => import('./linear-notation-molecule-CepA_vEp.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/message-datatype.svg\": () => import('./message-datatype-Ds55YGMQ.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/microscope.svg\": () => import('./microscope-CPwlykKH.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/model-pmml-datatype.svg\": () => import('./model-pmml-datatype-kXlL8AWg.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/molecule.svg\": () => import('./molecule-CT71Yhf1.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/number-double-datatype.svg\": () => import('./number-double-datatype-B6nc4th6.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/number-double-vector-datatype.svg\": () => import('./number-double-vector-datatype-D3rzzxjM.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/number-integer-datatype.svg\": () => import('./number-integer-datatype-BWoQkZ03.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/path-datatype.svg\": () => import('./path-datatype-BD3D-7dL.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/string-datatype.svg\": () => import('./string-datatype-CHI_qvxE.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/string-vector-datatype.svg\": () => import('./string-vector-datatype-DhgtZI8f.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/subgraph-datatype.svg\": () => import('./subgraph-datatype-BHBSS1-Z.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/term-datatype.svg\": () => import('./term-datatype-CRrmVXQx.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/test-tube.svg\": () => import('./test-tube-BsB8mbus.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/time-datatype.svg\": () => import('./time-datatype-CBnmuYLa.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/tool-datatype.svg\": () => import('./tool-datatype-l6cMJHHd.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/unknown-datatype.svg\": () => import('./unknown-datatype-BEY7muOy.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/uri-datatype.svg\": () => import('./uri-datatype-CJhmCZiq.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-boolean.svg\": () => import('./variable-boolean-BzyG4BGV.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-collection-boolean.svg\": () => import('./variable-collection-boolean-nWAd6a7R.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-collection-double.svg\": () => import('./variable-collection-double-h0sMrPKC.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-collection-integer.svg\": () => import('./variable-collection-integer-BZEs4wch.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-collection-string.svg\": () => import('./variable-collection-string-BPIuxyHK.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-conda-environment.svg\": () => import('./variable-conda-environment-DZ5kqmc5.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-credential.svg\": () => import('./variable-credential-D32ztDmY.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-integer.svg\": () => import('./variable-integer-CtoE3pq3.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-number-double.svg\": () => import('./variable-number-double-D5CGjCM8.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-path.svg\": () => import('./variable-path-Dyuv7RmO.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-string.svg\": () => import('./variable-string-JWu8Gafe.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/variable-unknown.svg\": () => import('./variable-unknown-DYSdcnPs.js'),\"../../../node_modules/@knime/kds-styles/dist/img/type-icons/xml-datatype.svg\": () => import('./xml-datatype-BlUTXDpw.js')})), `../../../node_modules/@knime/kds-styles/dist/img/${folder}/${newName}.svg`, 10).then((module) => {\n const component = markRaw(module.default);\n iconCache.set(newName, component);\n if (name.value !== newName) {\n return;\n }\n iconComponent.value = component;\n status.value = \"loaded\";\n }).catch((error) => {\n if (error.name === \"AbortError\") {\n return;\n }\n if (name.value !== newName) {\n return;\n }\n console.error(\n `Failed to load icon \"${newName}\" from folder \"${folder}\":`,\n error\n );\n iconComponent.value = null;\n status.value = \"error\";\n });\n },\n { immediate: true }\n );\n return {\n iconComponent: readonly(iconComponent),\n status: readonly(status)\n };\n}\n\nconst _sfc_main$1E = /* @__PURE__ */ defineComponent({\n __name: \"KdsIcon\",\n props: {\n name: {},\n size: { default: \"medium\" },\n disabled: { type: Boolean, default: false }\n },\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"size\", \"disabled\"]);\n const { iconComponent, status } = useIcon({\n name: toRef(() => props.name),\n folder: \"icons\"\n });\n __expose({ status });\n return (_ctx, _cache) => {\n return unref(iconComponent) ? (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent)), {\n key: 0,\n class: normalizeClass([\"kds-icon\", __props.size, { disabled: __props.disabled }]),\n \"aria-hidden\": \"true\",\n focusable: \"false\"\n }, null, 8, [\"class\"])) : (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass([\"kds-icon\", __props.size, { disabled: __props.disabled }]),\n \"aria-hidden\": \"true\",\n focusable: \"false\"\n }, null, 2));\n };\n }\n});\n\nconst KdsIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [[\"__scopeId\", \"data-v-bff4f419\"]]);\n\nconst ID_TO_ICON_MAP = {\n // Flow Variables\n STRING: \"variable-string\",\n LONG: \"variable-integer\",\n DOUBLE: \"variable-number-double\",\n BOOLEAN: \"variable-boolean\",\n INTEGER: \"variable-integer\",\n FSLocation: \"variable-path\",\n FSLocationSpec: \"variable-path\",\n STRINGARRAY: \"variable-collection-string\",\n LONGARRAY: \"variable-collection-integer\",\n DOUBLEARRAY: \"variable-collection-double\",\n BOOLEANARRAY: \"variable-collection-boolean\",\n INTARRAY: \"variable-collection-integer\",\n CREDENTIALS: \"variable-credential\",\n CONDAENVIRONMENT: \"variable-conda-environment\",\n UNKNOWN: \"variable-unknown\",\n // General\n \"org.knime.core.data.BooleanValue\": \"boolean-datatype\",\n \"org.knime.core.data.DataValue\": \"unknown-datatype\",\n \"org.knime.core.data.DoubleValue\": \"number-double-datatype\",\n \"org.knime.core.data.IntValue\": \"number-integer-datatype\",\n \"org.knime.core.data.LongValue\": \"number-integer-datatype\",\n \"org.knime.core.data.MissingValue\": \"unknown-datatype\",\n \"org.knime.core.data.StringValue\": \"string-datatype\",\n \"org.knime.core.data.collection.ListDataValue\": \"collection-list-datatype\",\n \"org.knime.core.data.collection.SetDataValue\": \"collection-set-datatype\",\n \"org.knime.core.data.vector.doublevector.DoubleVectorValue\": \"number-double-vector-datatype\",\n \"org.knime.core.data.vector.stringvector.StringVectorValue\": \"string-vector-datatype\",\n \"org.knime.filehandling.core.data.location.FSLocationValue\": \"path-datatype\",\n // Image, Audio & Video\n \"org.knime.audio.data.cell.AudioValue\": \"audio-datatype\",\n \"org.knime.base.data.xml.SvgValue\": \"image-svg-datatype\",\n \"org.knime.core.data.image.png.PNGImageValue\": \"image-png-datatype\",\n // Date & Time\n \"org.knime.core.data.time.localdate.LocalDateValue\": \"date-datatype\",\n \"org.knime.core.data.time.localdatetime.LocalDateTimeValue\": \"date-time-local-datatype\",\n \"org.knime.core.data.time.localtime.LocalTimeValue\": \"time-datatype\",\n \"org.knime.core.data.time.zoneddatetime.ZonedDateTimeValue\": \"date-time-zoned-datatype\",\n \"org.knime.core.data.time.duration.DurationValue\": \"duration-time-based-datatype\",\n \"org.knime.core.data.time.period.PeriodValue\": \"duration-date-based-datatype\",\n // Geospatial\n \"org.knime.geospatial.core.data.GeoValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPolygonValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoCollectionValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPolygonValue\": \"geo-datatype\",\n // Code\n \"org.knime.core.data.blob.BinaryObjectDataValue\": \"binary-object-datatype\",\n \"org.knime.core.data.html.HTMLValue\": \"xml-datatype\",\n \"org.knime.core.data.json.JSONValue\": \"json-datatype\",\n \"org.knime.core.data.uri.URIDataValue\": \"uri-datatype\",\n \"org.knime.core.data.vector.bitvector.BitVectorValue\": \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bitvector.SparseBitVectorValue\": \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bytevector.ByteVectorValue\": \"bit-byte-vector-datatype\",\n \"org.knime.core.data.xml.PMMLValue\": \"model-pmml-datatype\",\n \"org.knime.core.data.xml.XMLValue\": \"xml-datatype\",\n \"org.knime.knip.base.data.labeling.LabelingValue\": \"labeling-datatype\",\n // Agentic AI\n \"org.knime.ai.core.data.message.MessageValue\": \"message-datatype\",\n \"org.knime.core.node.agentic.tool.WorkflowToolValue\": \"tool-datatype\",\n // Textprocessing\n \"org.knime.ext.textprocessing.data.DocumentValue\": \"document-datatype\",\n \"org.knime.ext.textprocessing.data.TermValue\": \"term-datatype\",\n // Network\n \"org.knime.network.core.knime.cell.GraphValue\": \"subgraph-datatype\",\n // Linear Notations\n \"org.knime.chem.types.InchiValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SlnValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmartsValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmilesValue\": \"linear-notation-molecule\",\n // Molecular file formats\n \"org.knime.chem.types.CtabValue\": \"molecule\",\n \"org.knime.chem.types.MolValue\": \"molecule\",\n \"org.knime.chem.types.Mol2Value\": \"molecule\",\n \"org.knime.chem.types.SdfValue\": \"molecule\",\n // Biopolymer & sequence representations\n \"org.knime.chem.types.helm.HELMValue\": \"helm-datatype\",\n // Relation & Process representations\n \"org.knime.chem.types.CMLValue\": \"test-tube\",\n \"org.knime.chem.types.RxnValue\": \"test-tube\",\n // Visualization & specialized software formats\n \"org.knime.bio.types.PdbValue\": \"microscope\",\n \"org.knime.chem.types.cdx.CDXMLValue\": \"microscope\",\n \"org.rdkit.knime.types.RDKitMolValue\": \"microscope\",\n \"jp.co.infocom.cheminfo.marvin.type.MrvValue\": \"microscope\"\n};\n\nconst iconNames = [\n \"add-user\",\n \"ai-general\",\n \"annotation-mode\",\n \"arrow-down\",\n \"arrow-up\",\n \"arrows-expand\",\n \"arrows-move\",\n \"arrows-order\",\n \"auto-configure\",\n \"back\",\n \"bold\",\n \"calendar\",\n \"case-sensitive\",\n \"cell-renderer\",\n \"center-aligned\",\n \"checkmark\",\n \"chevron-down\",\n \"chevron-left-double\",\n \"chevron-left\",\n \"chevron-right-double\",\n \"chevron-right\",\n \"chevron-up\",\n \"circle-error\",\n \"circle-info\",\n \"circle-question\",\n \"circle-success\",\n \"circle-unchecked\",\n \"cloud-download\",\n \"cloud-knime\",\n \"cloud-pending-changes\",\n \"cloud-synced\",\n \"cloud-upload\",\n \"cloud-workflow\",\n \"code-block\",\n \"collection\",\n \"color-picker\",\n \"column-width\",\n \"comment\",\n \"component\",\n \"connection\",\n \"copy\",\n \"cursor\",\n \"data-app\",\n \"data-value-view\",\n \"date-time\",\n \"db-browse\",\n \"db-database\",\n \"db-fetch\",\n \"db-schema\",\n \"db-table-view\",\n \"db-table\",\n \"deploy\",\n \"detect\",\n \"divider\",\n \"duplicate\",\n \"duration\",\n \"edit\",\n \"education\",\n \"error-panel\",\n \"execute-all\",\n \"execute\",\n \"expand-panel\",\n \"extension-community\",\n \"extension\",\n \"external-link\",\n \"eye\",\n \"file-export\",\n \"file-text\",\n \"file\",\n \"filter\",\n \"flow-variable-default\",\n \"flow-variable-in-out\",\n \"flow-variable-in\",\n \"flow-variable-out\",\n \"folder-move\",\n \"folder-plus\",\n \"folder-search\",\n \"folder-workflow\",\n \"folder\",\n \"forum\",\n \"function-catalog\",\n \"hide-eye\",\n \"home\",\n \"import-table\",\n \"import\",\n \"info\",\n \"interval\",\n \"italic\",\n \"key\",\n \"layout-editor\",\n \"left-aligned\",\n \"like\",\n \"limit\",\n \"link\",\n \"linked-component\",\n \"linked-metanode\",\n \"list-bulletpoint\",\n \"list-number\",\n \"list-thumbs\",\n \"list\",\n \"local-filesystem\",\n \"lock\",\n \"login\",\n \"menu\",\n \"metanode\",\n \"mini-map\",\n \"minimize-dialog\",\n \"minimize-side-panel\",\n \"minus\",\n \"more-actions\",\n \"node-stack\",\n \"nodes-align-horiz\",\n \"nodes-align-vert\",\n \"open-in-new-window\",\n \"pan-mode\",\n \"parameter\",\n \"path-separator\",\n \"pending-changes\",\n \"pin\",\n \"placeholder\",\n \"plus\",\n \"python\",\n \"quote\",\n \"random-seed\",\n \"re-execution\",\n \"redo\",\n \"regex\",\n \"reload\",\n \"rename\",\n \"replace\",\n \"reset-all\",\n \"resume-execution\",\n \"right-aligned\",\n \"rocket\",\n \"save-as\",\n \"save\",\n \"schedule\",\n \"search\",\n \"secret-store\",\n \"selected-cancel\",\n \"selected-execution\",\n \"selected-reset\",\n \"send\",\n \"server-rack-workflow\",\n \"service\",\n \"settings\",\n \"share\",\n \"shortcuts\",\n \"sort-ascending\",\n \"sort-descending\",\n \"space-local\",\n \"space-private\",\n \"space\",\n \"stepwise-execution\",\n \"stop\",\n \"strikethrough\",\n \"table-statistics\",\n \"table\",\n \"tag\",\n \"team\",\n \"template-gallery\",\n \"text\",\n \"textstyles\",\n \"thumbs-down\",\n \"thumbs-up\",\n \"time\",\n \"to-bottom\",\n \"to-top\",\n \"trash\",\n \"trigger\",\n \"underline\",\n \"undo\",\n \"unlink\",\n \"update-file\",\n \"usage\",\n \"user\",\n \"validate\",\n \"version\",\n \"view-cards\",\n \"warning\",\n \"workflow\",\n \"x-close\"\n];\n\nconst typeIconNames = [\n \"audio-datatype\",\n \"binary-object-datatype\",\n \"bit-byte-vector-datatype\",\n \"boolean-datatype\",\n \"collection-list-datatype\",\n \"collection-set-datatype\",\n \"date-datatype\",\n \"date-time-local-datatype\",\n \"date-time-zoned-datatype\",\n \"default-extension-datatype\",\n \"document-datatype\",\n \"duration-date-based-datatype\",\n \"duration-time-based-datatype\",\n \"geo-datatype\",\n \"helm-datatype\",\n \"image-png-datatype\",\n \"image-svg-datatype\",\n \"json-datatype\",\n \"labeling-datatype\",\n \"linear-notation-molecule\",\n \"message-datatype\",\n \"microscope\",\n \"model-pmml-datatype\",\n \"molecule\",\n \"number-double-datatype\",\n \"number-double-vector-datatype\",\n \"number-integer-datatype\",\n \"path-datatype\",\n \"string-datatype\",\n \"string-vector-datatype\",\n \"subgraph-datatype\",\n \"term-datatype\",\n \"test-tube\",\n \"time-datatype\",\n \"tool-datatype\",\n \"unknown-datatype\",\n \"uri-datatype\",\n \"variable-boolean\",\n \"variable-collection-boolean\",\n \"variable-collection-double\",\n \"variable-collection-integer\",\n \"variable-collection-string\",\n \"variable-conda-environment\",\n \"variable-credential\",\n \"variable-integer\",\n \"variable-number-double\",\n \"variable-path\",\n \"variable-string\",\n \"variable-unknown\",\n \"xml-datatype\"\n];\n\nconst toEnumKey = (name) => name.toUpperCase().replaceAll(\"-\", \"_\");\nconst kdsIconName = Object.fromEntries(\n iconNames.map((name) => [toEnumKey(name), name])\n);\nconst kdsTypeIconName = Object.fromEntries(\n typeIconNames.map((name) => [toEnumKey(name), name])\n);\nconst kdsIconSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\"\n};\nconst kdsIconSizes = Object.values(kdsIconSize);\nconst kdsDataTypeSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\"\n};\nconst kdsDataTypeSizes = Object.values(kdsDataTypeSize);\n\nconst _hoisted_1$13 = [\"title\"];\nconst _sfc_main$1D = /* @__PURE__ */ defineComponent({\n __name: \"KdsDataType\",\n props: {\n iconName: { default: \"unknown-datatype\" },\n iconTitle: { default: \"Unknown Data Type\" },\n size: { default: \"medium\" },\n disabled: { type: Boolean, default: false }\n },\n setup(__props, { expose: __expose }) {\n const DATA_TYPE_SIZE_TO_ICON_SIZE = {\n large: \"medium\",\n medium: \"small\",\n small: \"xsmall\"\n };\n const iconSize = computed(() => DATA_TYPE_SIZE_TO_ICON_SIZE[__props.size]);\n const isIconName = (value) => typeIconNames.includes(value);\n const isTypeId = (value) => Object.keys(ID_TO_ICON_MAP).includes(value);\n const iconName = computed(() => {\n if (isIconName(__props.iconName)) {\n return __props.iconName;\n }\n if (isTypeId(__props.iconName)) {\n return ID_TO_ICON_MAP[__props.iconName];\n }\n return __props.iconName.startsWith(\"org.knime\") ? \"default-extension-datatype\" : \"unknown-datatype\";\n });\n const { iconComponent, status } = useIcon({\n name: iconName,\n folder: \"type-icons\"\n });\n __expose({ status });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-data-type-icon-container\", __props.size, { disabled: __props.disabled }]),\n title: __props.iconTitle\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent)), {\n class: normalizeClass([\"kds-icon\", \"kds-data-type-icon\", iconSize.value]),\n \"aria-hidden\": \"true\",\n focusable: \"false\"\n }, null, 8, [\"class\"]))\n ], 10, _hoisted_1$13);\n };\n }\n});\n\nconst KdsDataType = /* @__PURE__ */ _export_sfc(_sfc_main$1D, [[\"__scopeId\", \"data-v-38e9537f\"]]);\n\nconst kdsBadgeVariant = {\n NEUTRAL: \"neutral\",\n INFO: \"info\",\n WARNING: \"warning\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n GHOST: \"ghost\"\n};\nconst kdsBadgeVariants = Object.values(kdsBadgeVariant);\nconst kdsBadgeSize = {\n XXSMALL: \"xxsmall\",\n XSMALL: \"xsmall\"\n};\nconst kdsBadgeSizes = Object.values(kdsBadgeSize);\n\nconst _hoisted_1$12 = { class: \"label-wrapper\" };\nconst _sfc_main$1C = /* @__PURE__ */ defineComponent({\n __name: \"KdsBadge\",\n props: {\n label: {},\n variant: { default: () => kdsBadgeVariant.NEUTRAL },\n size: { default: () => kdsBadgeSize.XSMALL },\n leadingIcon: {}\n },\n setup(__props) {\n const sizeToIconSize = {\n xxsmall: \"xsmall\",\n xsmall: \"small\"\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"kds-badge\", __props.size, __props.variant])\n }, [\n __props.leadingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.leadingIcon,\n size: sizeToIconSize[__props.size]\n }, null, 8, [\"name\", \"size\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_1$12, toDisplayString(__props.label), 1)\n ], 2);\n };\n }\n});\n\nconst KdsBadge = /* @__PURE__ */ _export_sfc(_sfc_main$1C, [[\"__scopeId\", \"data-v-df64f7cf\"]]);\n\nconst kdsProgressBarSize = {\n MEDIUM: \"medium\",\n LARGE: \"large\"\n};\nconst kdsProgressBarSizes = Object.values(kdsProgressBarSize);\n\nconst _hoisted_1$11 = [\"title\", \"aria-label\"];\nconst _hoisted_2$E = {\n key: 0,\n class: \"indeterminate-bar\",\n \"aria-hidden\": \"true\"\n};\nconst _sfc_main$1B = /* @__PURE__ */ defineComponent({\n __name: \"KdsProgressBar\",\n props: {\n size: { default: () => kdsProgressBarSize.MEDIUM },\n title: { default: \"\" },\n percentage: { default: 0 },\n indeterminate: { type: Boolean, default: false }\n },\n setup(__props) {\n const progressValue = computed(() => {\n if (Number.isNaN(__props.percentage)) {\n return 0;\n }\n return Math.min(Math.max(__props.percentage, 0), 100);\n });\n const title = computed(() => {\n const customTitle = (__props.title ?? \"\").trim();\n if (customTitle) {\n return customTitle;\n }\n return __props.indeterminate ? \"Loading\" : `Progress: ${progressValue.value}%`;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n \"kds-progress-bar\",\n {\n \"kds-progress-bar-large\": __props.size === unref(kdsProgressBarSize).LARGE,\n \"kds-progress-bar-medium\": __props.size !== unref(kdsProgressBarSize).LARGE\n }\n ])\n }, [\n createElementVNode(\"progress\", mergeProps({\n title: title.value,\n \"aria-label\": title.value,\n class: \"progress\"\n }, __props.indeterminate ? {} : { value: progressValue.value, max: 100 }), null, 16, _hoisted_1$11),\n __props.indeterminate ? (openBlock(), createElementBlock(\"span\", _hoisted_2$E)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\n\nconst KdsProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main$1B, [[\"__scopeId\", \"data-v-5fdfbce2\"]]);\n\nconst kdsColorSwatchType = {\n LEARNER: \"learner\",\n MANIPULATOR: \"manipulator\",\n PREDICTOR: \"predictor\",\n SINK: \"sink\",\n SOURCE: \"source\",\n VISUALIZER: \"visualizer\",\n OTHER: \"other\"\n};\nconst kdsColorSwatchTypes = Object.values(kdsColorSwatchType);\nconst kdsColorSwatchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\"\n};\nconst kdsColorSwatchSizes = Object.values(kdsColorSwatchSize);\n\nconst _hoisted_1$10 = [\"role\", \"title\", \"aria-hidden\", \"aria-label\"];\nconst RGBA_SHORT_HEX_LENGTH = 4;\nconst RGBA_LONG_HEX_LENGTH = 8;\nconst ALPHA_NIBBLE_INDEX = 3;\nconst ALPHA_BYTE_START = 6;\nconst RGB_SHORT_HEX_LENGTH = 3;\nconst RGB_LONG_HEX_LENGTH = 6;\nconst _sfc_main$1A = /* @__PURE__ */ defineComponent({\n __name: \"KdsColorSwatch\",\n props: {\n color: {},\n size: { default: () => kdsColorSwatchSize.SMALL },\n title: {}\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"size\"]);\n const typeToTokenColor = {\n learner: \"var(--kds-color-nodes-and-variables-learner)\",\n manipulator: \"var(--kds-color-nodes-and-variables-manipulator)\",\n predictor: \"var(--kds-color-nodes-and-variables-predictor)\",\n sink: \"var(--kds-color-nodes-and-variables-sink)\",\n source: \"var(--kds-color-nodes-and-variables-source)\",\n visualizer: \"var(--kds-color-nodes-and-variables-visualizer)\",\n other: \"var(--kds-color-nodes-and-variables-other)\"\n };\n const isKdsColorSwatchType = (value) => Object.hasOwn(typeToTokenColor, value);\n const isTransparentAlphaHexColor = (value) => {\n const withoutHash = value.startsWith(\"#\") ? value.slice(1) : value;\n if (withoutHash.length === RGBA_SHORT_HEX_LENGTH) {\n return withoutHash[ALPHA_NIBBLE_INDEX].toLowerCase() !== \"f\";\n }\n if (withoutHash.length === RGBA_LONG_HEX_LENGTH) {\n return withoutHash.slice(ALPHA_BYTE_START).toLowerCase() !== \"ff\";\n }\n return false;\n };\n const toOpaqueHexColor = (value) => {\n const withoutHash = value.startsWith(\"#\") ? value.slice(1) : value;\n if (withoutHash.length === RGBA_SHORT_HEX_LENGTH) {\n return `#${withoutHash.slice(0, RGB_SHORT_HEX_LENGTH)}`;\n }\n if (withoutHash.length === RGBA_LONG_HEX_LENGTH) {\n return `#${withoutHash.slice(0, RGB_LONG_HEX_LENGTH)}`;\n }\n return value;\n };\n const backgroundColor = computed(() => {\n if (isKdsColorSwatchType(props.color)) {\n return typeToTokenColor[props.color];\n }\n return props.color;\n });\n const showAlphaPreview = computed(\n () => !isKdsColorSwatchType(props.color) && isTransparentAlphaHexColor(props.color)\n );\n const swatchStyle = computed(() => {\n if (!showAlphaPreview.value) {\n return { backgroundColor: backgroundColor.value };\n }\n const opaqueColor = toOpaqueHexColor(props.color);\n return {\n backgroundImage: `\n linear-gradient(to right, ${backgroundColor.value} 0 50%, ${opaqueColor} 50% 100%),\n repeating-conic-gradient(\n var(--kds-color-background-neutral-active) 0 25%,\n var(--kds-color-surface-default) 0 50%\n )\n `,\n backgroundSize: \"100% 100%, var(--kds-color-swatch-checker-size) var(--kds-color-swatch-checker-size)\",\n backgroundPosition: \"0 0, 0 0\"\n };\n });\n const accessibleTitle = computed(() => props.title?.trim() ?? \"\");\n const hasTitle = computed(() => accessibleTitle.value.length > 0);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n role: hasTitle.value ? \"img\" : \"presentation\",\n class: normalizeClass([\"kds-color-swatch\", __props.size]),\n title: hasTitle.value ? accessibleTitle.value : void 0,\n style: normalizeStyle(swatchStyle.value),\n \"aria-hidden\": hasTitle.value ? void 0 : \"true\",\n \"aria-label\": hasTitle.value ? accessibleTitle.value : void 0\n }, null, 14, _hoisted_1$10);\n };\n }\n});\n\nconst KdsColorSwatch = /* @__PURE__ */ _export_sfc(_sfc_main$1A, [[\"__scopeId\", \"data-v-91e0130d\"]]);\n\nconst kdsDarkModeType = {\n LIGHT: \"light\",\n DARK: \"dark\",\n SYSTEM: \"system\"\n};\nconst kdsDarkModeTypes = Object.values(kdsDarkModeType);\n\nconst KDS_DARK_MODE_STORAGE_KEY = \"KNIME_DARK_MODE\";\nconst defaultMode = kdsDarkModeType.LIGHT;\nconst useKdsDarkMode = () => {\n const userPreference = useLocalStorage(\n KDS_DARK_MODE_STORAGE_KEY,\n defaultMode\n );\n const isDark = useDark({\n storageKey: `${KDS_DARK_MODE_STORAGE_KEY}_EFFECTIVE`,\n initialValue: defaultMode,\n onChanged: (isDarkValue) => {\n let cssMode, themeValue;\n if (userPreference.value === kdsDarkModeType.SYSTEM) {\n cssMode = \"light dark\";\n themeValue = kdsDarkModeType.SYSTEM;\n } else {\n cssMode = themeValue = isDarkValue ? kdsDarkModeType.DARK : kdsDarkModeType.LIGHT;\n }\n document.documentElement.style.setProperty(\"color-scheme\", cssMode);\n document.documentElement.dataset.theme = themeValue;\n }\n });\n const systemPrefersDark = usePreferredDark();\n watch(\n [userPreference, systemPrefersDark],\n ([preference, systemDark]) => {\n if (preference === kdsDarkModeType.SYSTEM) {\n isDark.value = systemDark;\n } else {\n isDark.value = preference === kdsDarkModeType.DARK;\n }\n },\n { immediate: true }\n );\n const currentMode = computed({\n get() {\n return userPreference.value;\n },\n set(value) {\n userPreference.value = value;\n }\n });\n const isDarkMode = computed(() => {\n return userPreference.value === kdsDarkModeType.DARK;\n });\n const isLightMode = computed(() => {\n return userPreference.value === kdsDarkModeType.LIGHT;\n });\n const isSystemMode = computed(\n () => userPreference.value === kdsDarkModeType.SYSTEM\n );\n return {\n /** Exposes a writable computed ref to get the current dark mode but also use it in e.g. a v-model to set it */\n currentMode,\n /** Whether or not the current user preference is dark. Note, if the preference is set to 'system' it will return false. */\n isDarkMode,\n /** Whether or not the current user preference is light. Note, if the preference is set to 'system' it will return false. */\n isLightMode,\n /** Whether or not the current user preference is set to 'system'. */\n isSystemMode\n };\n};\n\nconst legacyMode = ref(false);\nconst useKdsLegacyMode = (initialValue = false) => {\n if (legacyMode.value !== initialValue) {\n legacyMode.value = initialValue;\n }\n watch(\n () => legacyMode.value,\n (newValue) => {\n document.documentElement.classList.toggle(\"kds-legacy\", newValue);\n },\n { immediate: true }\n );\n return {\n /** Writable ref to get and/or set the legacy mode; can also be used with v-model */\n legacyMode\n };\n};\n\nfunction elementOverflowsHorizontally(element) {\n if (!element) {\n return false;\n }\n return element.scrollWidth > element.clientWidth;\n}\nfunction elementOverflowsVertically(element) {\n if (!element) {\n return false;\n }\n return element.scrollHeight > element.clientHeight;\n}\nfunction useKdsIsTruncated(elementRef) {\n const isTruncated = ref(false);\n const checkTruncation = () => {\n isTruncated.value = elementOverflowsHorizontally(elementRef.value) || elementOverflowsVertically(elementRef.value);\n };\n useResizeObserver(elementRef, checkTruncation);\n useMutationObserver(elementRef, checkTruncation, {\n childList: true,\n characterData: true,\n subtree: true,\n // Also observe attribute changes (especially class/style) that can affect\n // truncation without necessarily triggering a resize event.\n attributes: true,\n attributeFilter: [\"class\", \"style\"]\n });\n return { isTruncated };\n}\n\nconst _hoisted_1$$ = [\"title\", \"aria-label\"];\nconst _hoisted_2$D = [\"title\"];\nconst _sfc_main$1z = /* @__PURE__ */ defineComponent({\n __name: \"KdsLiveStatus\",\n props: {\n status: { default: \"red\" },\n size: { default: \"medium\" },\n label: { default: \"\" },\n title: {}\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"status\", \"size\", \"label\"]);\n const accessibleTitle = computed(\n () => props.title?.trim() || `Status is ${__props.status}`\n );\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated } = useKdsIsTruncated(labelEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"kds-live-status\", __props.status, `size-${__props.size}`]),\n role: \"img\",\n title: accessibleTitle.value,\n \"aria-label\": accessibleTitle.value\n }, [\n _cache[0] || (_cache[0] = createElementVNode(\"span\", { class: \"dot\" }, null, -1)),\n __props.label ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n ref_key: \"labelEl\",\n ref: labelEl,\n class: \"label\",\n title: unref(isTruncated) ? __props.label : void 0\n }, toDisplayString(__props.label), 9, _hoisted_2$D)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$$);\n };\n }\n});\n\nconst KdsLiveStatus = /* @__PURE__ */ _export_sfc(_sfc_main$1z, [[\"__scopeId\", \"data-v-01555495\"]]);\n\nconst kdsLiveStatusStatus = {\n RED: \"red\",\n ORANGE: \"orange\",\n GREEN: \"green\",\n DISABLED: \"disabled\"\n};\nconst kdsLiveStatusStatuses = Object.values(kdsLiveStatusStatus);\nconst kdsLiveStatusSize = {\n LARGE: \"large\",\n MEDIUM: \"medium\",\n SMALL: \"small\"\n};\nconst kdsLiveStatusSizes = Object.values(kdsLiveStatusSize);\n\nconst _hoisted_1$_ = [\"data-style\"];\nconst _sfc_main$1y = /* @__PURE__ */ defineComponent({\n __name: \"KdsLoadingSpinner\",\n props: {\n size: { default: \"medium\" },\n variant: { default: \"onSurface\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", {\n class: normalizeClass([\"kds-loading-spinner\", __props.size]),\n \"data-style\": __props.variant,\n viewBox: \"0 0 120 120\"\n }, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"circle\", {\n class: \"track\",\n cx: \"60\",\n cy: \"60\",\n r: \"50\"\n }, null, -1),\n createElementVNode(\"circle\", {\n class: \"loader\",\n cx: \"60\",\n cy: \"60\",\n r: \"50\"\n }, null, -1)\n ])], 10, _hoisted_1$_);\n };\n }\n});\n\nconst KdsLoadingSpinner = /* @__PURE__ */ _export_sfc(_sfc_main$1y, [[\"__scopeId\", \"data-v-54835dc0\"]]);\n\nconst kdsLoadingSpinnerVariant = {\n ON_PRIMARY: \"onPrimary\",\n ON_SURFACE: \"onSurface\"\n};\nconst kdsLoadingSpinnerVariants = Object.values(\n kdsLoadingSpinnerVariant\n);\n\nconst _hoisted_1$Z = [\"role\"];\nconst _hoisted_2$C = { class: \"header\" };\nconst _hoisted_3$s = { class: \"headline\" };\nconst _hoisted_4$o = {\n key: 0,\n class: \"body\"\n};\nconst _sfc_main$1x = /* @__PURE__ */ defineComponent({\n __name: \"KdsInlineMessage\",\n props: {\n headline: {},\n description: {},\n variant: { default: \"info\" }\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"variant\"]);\n const classes = computed(() => [\"kds-inline-message\", __props.variant]);\n const iconName = computed(() => {\n switch (__props.variant) {\n case \"success\":\n return \"circle-success\";\n case \"error\":\n return \"circle-error\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n default:\n return \"circle-info\";\n }\n });\n const role = computed(\n () => __props.variant === \"warning\" || __props.variant === \"error\" ? \"alert\" : \"status\"\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(classes.value),\n role: role.value\n }, [\n createElementVNode(\"div\", _hoisted_2$C, [\n createVNode(KdsIcon, {\n class: \"icon\",\n name: iconName.value,\n size: \"small\"\n }, null, 8, [\"name\"]),\n createElementVNode(\"div\", _hoisted_3$s, toDisplayString(props.headline), 1)\n ]),\n props.description ? (openBlock(), createElementBlock(\"div\", _hoisted_4$o, toDisplayString(props.description), 1)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$Z);\n };\n }\n});\n\nconst KdsInlineMessage = /* @__PURE__ */ _export_sfc(_sfc_main$1x, [[\"__scopeId\", \"data-v-af14056f\"]]);\n\nconst kdsInlineMessageVariant = {\n ERROR: \"error\",\n INFO: \"info\",\n SUCCESS: \"success\",\n WARNING: \"warning\"\n};\nconst kdsInlineMessageVariants = Object.values(kdsInlineMessageVariant);\n\nconst _sfc_main$1w = /* @__PURE__ */ defineComponent({\n __name: \"KdsMissingValueIcon\",\n props: {\n size: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(KdsIcon, {\n name: \"circle-question\",\n size: __props.size,\n class: \"kds-missing-value-icon\"\n }, null, 8, [\"size\"]);\n };\n }\n});\n\nconst KdsMissingValueIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1w, [[\"__scopeId\", \"data-v-df682150\"]]);\n\nconst _hoisted_1$Y = { class: \"donut-container\" };\nconst _hoisted_2$B = [\"height\", \"width\", \"viewBox\"];\nconst _hoisted_3$r = [\"r\", \"stroke-width\"];\nconst _hoisted_4$n = [\"r\", \"stroke-width\", \"stroke-dasharray\", \"stroke-dashoffset\", \"transform\"];\nconst _hoisted_5$d = [\"r\", \"stroke-width\", \"stroke-dasharray\", \"stroke-dashoffset\", \"transform\"];\nconst _hoisted_6$b = {\n key: 0,\n class: \"donut-text\"\n};\nconst _hoisted_7$4 = { class: \"title\" };\nconst _hoisted_8$3 = {\n key: 0,\n class: \"sub-text\"\n};\nconst radius = 22;\nconst innerRadius = 10;\nconst _sfc_main$1v = /* @__PURE__ */ defineComponent({\n __name: \"KdsDonutChart\",\n props: {\n value: {},\n secondaryValue: { default: 0 },\n maxValue: {},\n acceptValuesLargerThanMax: { type: Boolean, default: false },\n animate: { type: Boolean, default: true },\n title: {},\n subText: {}\n },\n setup(__props) {\n const clippedValue = computed(() => {\n const clipValue = Math.max(0, __props.value);\n return __props.acceptValuesLargerThanMax ? clipValue : Math.min(clipValue, __props.maxValue);\n });\n const secondaryClippedValue = computed(() => {\n const clipValue = Math.max(0, __props.secondaryValue + clippedValue.value);\n return __props.acceptValuesLargerThanMax ? clipValue : Math.min(clipValue, __props.maxValue);\n });\n const strokeWidth = computed(() => radius - innerRadius);\n const r = computed(() => radius - strokeWidth.value / 2);\n const diameter = computed(() => 2 * radius);\n const viewBox = computed(() => `0 0 ${diameter.value} ${diameter.value}`);\n const circumference = computed(() => 2 * Math.PI * r.value);\n const calcStrokeDashOffset = (value) => {\n if (__props.maxValue <= 0 || !Number.isFinite(__props.maxValue)) {\n return circumference.value;\n }\n const strokeDiff = Math.min(\n value / __props.maxValue * circumference.value,\n circumference.value\n );\n return Math.max(circumference.value - strokeDiff, 0);\n };\n const strokeDashOffset = computed(\n () => calcStrokeDashOffset(clippedValue.value)\n );\n const secondaryStrokeDashOffset = computed(\n () => calcStrokeDashOffset(secondaryClippedValue.value)\n );\n const transformWedge = computed(() => `rotate(-90, ${radius}, ${radius})`);\n const disabled = computed(() => !Number.isFinite(__props.maxValue));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$Y, [\n (openBlock(), createElementBlock(\"svg\", {\n height: diameter.value,\n width: diameter.value,\n viewBox: viewBox.value,\n class: \"donut-chart\"\n }, [\n createElementVNode(\"circle\", {\n class: \"background-circle\",\n cx: radius,\n cy: radius,\n r: r.value,\n \"stroke-width\": strokeWidth.value,\n fill: \"transparent\"\n }, null, 8, _hoisted_3$r),\n __props.secondaryValue && !disabled.value ? (openBlock(), createElementBlock(\"circle\", {\n key: 0,\n class: normalizeClass([\"value-wedge\", \"secondary-circle\", { animate: __props.animate }]),\n cx: radius,\n cy: radius,\n r: r.value,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": circumference.value,\n \"stroke-dashoffset\": secondaryStrokeDashOffset.value,\n fill: \"transparent\",\n transform: transformWedge.value\n }, null, 10, _hoisted_4$n)) : createCommentVNode(\"\", true),\n !disabled.value ? (openBlock(), createElementBlock(\"circle\", {\n key: 1,\n class: normalizeClass([\"value-wedge\", \"primary-circle\", { animate: __props.animate }]),\n cx: radius,\n cy: radius,\n r: r.value,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": circumference.value,\n \"stroke-dashoffset\": strokeDashOffset.value,\n fill: \"transparent\",\n transform: transformWedge.value\n }, null, 10, _hoisted_5$d)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_2$B)),\n __props.title ? (openBlock(), createElementBlock(\"div\", _hoisted_6$b, [\n createElementVNode(\"div\", _hoisted_7$4, toDisplayString(__props.title), 1),\n __props.subText ? (openBlock(), createElementBlock(\"div\", _hoisted_8$3, toDisplayString(__props.subText), 1)) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst KdsDonutChart = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [[\"__scopeId\", \"data-v-f5faf61c\"]]);\n\nconst _sfc_main$1u = { };\n\nconst _hoisted_1$X = { class: \"kds-divider\" };\n\nfunction _sfc_render$1(_ctx, _cache) {\n return (openBlock(), createElementBlock(\"hr\", _hoisted_1$X))\n}\nconst KdsDivider = /*#__PURE__*/_export_sfc(_sfc_main$1u, [['render',_sfc_render$1],['__scopeId',\"data-v-4d059bd3\"]]);\n\nconst _hoisted_1$W = {\n key: 0,\n class: \"label\"\n};\nconst _sfc_main$1t = /* @__PURE__ */ defineComponent({\n __name: \"BaseButton\",\n props: {\n dataTestId: {},\n size: { default: \"medium\" },\n disabled: { type: Boolean, default: false },\n title: {},\n variant: {},\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {},\n destructive: { type: Boolean, default: false },\n success: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n toggled: { type: Boolean, default: false },\n removeBorderRadius: { default: () => void 0 },\n component: { default: \"button\" }\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"component\", \"size\", \"destructive\", \"success\", \"error\", \"disabled\", \"toggled\", \"removeBorderRadius\"]);\n const emit = __emit;\n const classes = computed(() => [\n \"button\",\n __props.size,\n props.variant,\n { destructive: __props.destructive },\n { disabled: __props.disabled },\n { toggled: __props.toggled },\n { success: __props.success },\n { error: __props.error },\n __props.removeBorderRadius ? `remove-border-radius-${__props.removeBorderRadius}` : void 0\n ]);\n const iconSize = computed(() => {\n if (__props.size === \"xsmall\") {\n return \"small\";\n } else {\n return __props.size;\n }\n });\n function onClick(e) {\n if (!__props.disabled) {\n emit(\"click\", e);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(__props.component), {\n type: __props.component === \"button\" ? \"button\" : void 0,\n class: normalizeClass(classes.value),\n disabled: __props.disabled,\n title: props.title,\n \"aria-label\": props.ariaLabel,\n \"data-test-id\": props.dataTestId,\n onClick: _cache[0] || (_cache[0] = ($event) => onClick($event))\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"leading\", {}, () => [\n props.leadingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: props.leadingIcon,\n size: iconSize.value\n }, null, 8, [\"name\", \"size\"])) : createCommentVNode(\"\", true)\n ], true),\n props.label ? (openBlock(), createElementBlock(\"span\", _hoisted_1$W, toDisplayString(props.label), 1)) : createCommentVNode(\"\", true),\n props.trailingIcon && props.label ? (openBlock(), createBlock(KdsIcon, {\n key: 1,\n name: props.trailingIcon,\n size: iconSize.value\n }, null, 8, [\"name\", \"size\"])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"type\", \"class\", \"disabled\", \"title\", \"aria-label\", \"data-test-id\"]);\n };\n }\n});\n\nconst BaseButton = /* @__PURE__ */ _export_sfc(_sfc_main$1t, [[\"__scopeId\", \"data-v-190ac311\"]]);\n\nconst _sfc_main$1s = /* @__PURE__ */ defineComponent({\n __name: \"KdsButton\",\n props: {\n dataTestId: {},\n size: {},\n disabled: { type: Boolean },\n title: {},\n variant: { default: \"filled\" },\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {},\n destructive: { type: Boolean }\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\"]);\n const emit = __emit;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseButton, mergeProps(props, {\n variant: __props.variant,\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), null, 16, [\"variant\"]);\n };\n }\n});\n\nconst getAppInstance = () => {\n const currentInstance = getCurrentInstance();\n return currentInstance?.appContext.app;\n};\nconst resolveNuxtLinkComponent = () => {\n const app = getAppInstance();\n const nuxtLinkComponent = app?.component(\"NuxtLink\");\n if (nuxtLinkComponent) {\n return nuxtLinkComponent;\n }\n const routerLinkComponent = app?.component(\"RouterLink\");\n if (routerLinkComponent) {\n return routerLinkComponent;\n }\n const fallbackComponent = defineComponent({\n props: {\n to: {\n type: String,\n default: \"\"\n }\n },\n render() {\n return h$1(\"a\", { href: this.to }, [useSlots().default?.()]);\n }\n });\n return fallbackComponent;\n};\n\nfunction isExternalUrl(url) {\n const normalized = url.trim();\n if (!normalized) {\n return false;\n }\n if (normalized.startsWith(\"#\") || normalized.startsWith(\"/\") && !normalized.startsWith(\"//\") || normalized.startsWith(\"./\") || normalized.startsWith(\"../\") || normalized.startsWith(\"?\")) {\n return false;\n }\n return true;\n}\n\nconst _sfc_main$1r = /* @__PURE__ */ defineComponent({\n __name: \"KdsLinkButton\",\n props: {\n dataTestId: {},\n size: {},\n disabled: { type: Boolean, default: false },\n title: {},\n variant: { default: \"filled\" },\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {},\n destructive: { type: Boolean },\n to: {},\n download: { type: Boolean, default: () => void 0 },\n target: { default: null },\n rel: { default: null }\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const rawProps = createPropsRestProxy(__props, [\"variant\", \"disabled\", \"download\", \"rel\", \"target\"]);\n const props = computed(() => {\n if (isExternalUrl(rawProps.to)) {\n return {\n ...rawProps,\n trailingIcon: \"external-link\"\n };\n }\n return rawProps;\n });\n const component = computed(() => {\n if (__props.disabled) {\n return \"button\";\n }\n return resolveNuxtLinkComponent();\n });\n const emit = __emit;\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseButton, mergeProps(props.value, {\n variant: __props.variant,\n disabled: __props.disabled,\n download: __props.download,\n rel: __props.rel,\n target: __props.target,\n component: component.value,\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), null, 16, [\"variant\", \"disabled\", \"download\", \"rel\", \"target\", \"component\"]);\n };\n }\n});\n\nconst BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nconst log10 = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log10(numberOrBigInt);\n\t}\n\n\tconst string = numberOrBigInt.toString(10);\n\n\treturn string.length + Math.log10(`0.${string.slice(0, 15)}`);\n};\n\nconst log = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log(numberOrBigInt);\n\t}\n\n\treturn log10(numberOrBigInt) * Math.log(10);\n};\n\nconst divide = (numberOrBigInt, divisor) => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn numberOrBigInt / divisor;\n\t}\n\n\tconst integerPart = numberOrBigInt / BigInt(divisor);\n\tconst remainder = numberOrBigInt % BigInt(divisor);\n\treturn Number(integerPart) + (Number(remainder) / divisor);\n};\n\nconst applyFixedWidth = (result, fixedWidth) => {\n\tif (fixedWidth === undefined) {\n\t\treturn result;\n\t}\n\n\tif (typeof fixedWidth !== 'number' || !Number.isSafeInteger(fixedWidth) || fixedWidth < 0) {\n\t\tthrow new TypeError(`Expected fixedWidth to be a non-negative integer, got ${typeof fixedWidth}: ${fixedWidth}`);\n\t}\n\n\tif (fixedWidth === 0) {\n\t\treturn result;\n\t}\n\n\treturn result.length < fixedWidth ? result.padStart(fixedWidth, ' ') : result;\n};\n\nconst buildLocaleOptions = options => {\n\tconst {minimumFractionDigits, maximumFractionDigits} = options;\n\n\tif (minimumFractionDigits === undefined && maximumFractionDigits === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\t...(minimumFractionDigits !== undefined && {minimumFractionDigits}),\n\t\t...(maximumFractionDigits !== undefined && {maximumFractionDigits}),\n\t\troundingMode: 'trunc',\n\t};\n};\n\nfunction prettyBytes(number, options) {\n\tif (typeof number !== 'bigint' && !Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\tnonBreakingSpace: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? (options.nonBreakingSpace ? '\\u00A0' : ' ') : '';\n\n\t// Handle signed zero case\n\tconst isZero = typeof number === 'number' ? number === 0 : number === 0n;\n\tif (options.signed && isZero) {\n\t\tconst result = ` 0${separator}${UNITS[0]}`;\n\t\treturn applyFixedWidth(result, options.fixedWidth);\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tconst localeOptions = buildLocaleOptions(options);\n\tlet result;\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\tresult = prefix + numberString + separator + UNITS[0];\n\t} else {\n\t\tconst exponent = Math.min(Math.floor(options.binary ? log(number) / Math.log(1024) : log10(number) / 3), UNITS.length - 1);\n\t\tnumber = divide(number, (options.binary ? 1024 : 1000) ** exponent);\n\n\t\tif (!localeOptions) {\n\t\t\tconst minPrecision = Math.max(3, Math.floor(number).toString().length);\n\t\t\tnumber = number.toPrecision(minPrecision);\n\t\t}\n\n\t\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\t\tconst unit = UNITS[exponent];\n\t\tresult = prefix + numberString + separator + unit;\n\t}\n\n\treturn applyFixedWidth(result, options.fixedWidth);\n}\n\nconst _hoisted_1$V = { class: \"label\" };\nconst _hoisted_2$A = {\n key: 1,\n class: \"file-size\"\n};\nconst _sfc_main$1q = /* @__PURE__ */ defineComponent({\n __name: \"KdsLink\",\n props: {\n to: {},\n label: {},\n title: {},\n disabled: { type: Boolean, default: false },\n download: { type: Boolean, default: false },\n target: {},\n rel: {},\n fileSize: {}\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const linkComponent = resolveNuxtLinkComponent();\n const variant = computed(() => {\n if (__props.download || __props.fileSize !== void 0) {\n return \"document\";\n }\n return isExternalUrl(__props.to) ? \"external\" : \"internal\";\n });\n const effectiveTarget = computed(\n () => __props.target ?? (variant.value === \"external\" ? \"_blank\" : void 0)\n );\n const effectiveTitle = computed(() => {\n const baseTitle = (__props.title ?? __props.label).trim();\n if (!baseTitle) {\n return void 0;\n }\n if (variant.value === \"external\") {\n return effectiveTarget.value === \"_blank\" ? `${baseTitle} (opens in a new tab)` : baseTitle;\n }\n if (__props.download === true) {\n return `Download ${baseTitle}`;\n }\n return `Open ${baseTitle}`;\n });\n const component = computed(() => {\n if (__props.disabled) {\n return \"span\";\n }\n return linkComponent;\n });\n const effectiveTo = computed(() => __props.disabled ? void 0 : __props.to);\n const effectiveRel = computed(() => {\n if (__props.target !== \"_blank\") {\n return __props.rel ?? void 0;\n }\n if (!__props.rel) {\n return \"noopener noreferrer\";\n }\n const relTokens = __props.rel.split(/\\s+/).filter(Boolean);\n if (!relTokens.includes(\"noopener\")) {\n relTokens.push(\"noopener\");\n }\n if (!relTokens.includes(\"noreferrer\")) {\n relTokens.push(\"noreferrer\");\n }\n return relTokens.join(\" \");\n });\n const normalizedFileSize = computed(() => {\n if (typeof __props.fileSize !== \"number\" || !Number.isFinite(__props.fileSize) || __props.fileSize < 0) {\n return \"\";\n }\n const formattedFileSize = prettyBytes(__props.fileSize);\n if (!formattedFileSize) {\n return \"\";\n }\n return ` (${formattedFileSize})`;\n });\n function onClick(event) {\n if (__props.disabled) {\n event.preventDefault();\n return;\n }\n emit(\"click\", event);\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(component.value), {\n class: normalizeClass([\"kds-link\", `variant-${variant.value}`, { disabled: __props.disabled }]),\n to: effectiveTo.value,\n download: __props.disabled ? void 0 : __props.download,\n target: effectiveTarget.value,\n rel: effectiveRel.value,\n title: effectiveTitle.value,\n \"aria-disabled\": __props.disabled ? \"true\" : void 0,\n onClick\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", _hoisted_1$V, toDisplayString(__props.label), 1),\n variant.value === \"external\" ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: \"external-link\",\n size: \"xsmall\"\n })) : createCommentVNode(\"\", true),\n normalizedFileSize.value ? (openBlock(), createElementBlock(\"span\", _hoisted_2$A, toDisplayString(normalizedFileSize.value), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"class\", \"to\", \"download\", \"target\", \"rel\", \"title\", \"aria-disabled\"]);\n };\n }\n});\n\nconst KdsLink = /* @__PURE__ */ _export_sfc(_sfc_main$1q, [[\"__scopeId\", \"data-v-56e748a8\"]]);\n\nconst _sfc_main$1p = /* @__PURE__ */ defineComponent({\n __name: \"KdsToggleButton\",\n props: /* @__PURE__ */ mergeModels({\n dataTestId: {},\n size: {},\n disabled: { type: Boolean },\n title: {},\n variant: { default: \"outlined\" },\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {}\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"variant\"]);\n const modelValue = useModel(__props, \"modelValue\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseButton, mergeProps(props, {\n variant: __props.variant,\n toggled: modelValue.value,\n \"aria-pressed\": modelValue.value,\n onClick: _cache[0] || (_cache[0] = ($event) => modelValue.value = !modelValue.value)\n }), null, 16, [\"variant\", \"toggled\", \"aria-pressed\"]);\n };\n }\n});\n\nconst kdsToggleButtonVariant = {\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\"\n};\nconst kdsToggleButtonVariants = Object.values(kdsToggleButtonVariant);\n\nconst _hoisted_1$U = [\"data-visible\"];\nconst _hoisted_2$z = [\"data-visible\"];\nconst _sfc_main$1o = /* @__PURE__ */ defineComponent({\n __name: \"KdsProgressButton\",\n props: /* @__PURE__ */ mergeModels({\n dataTestId: {},\n size: { default: \"medium\" },\n disabled: { type: Boolean, default: false },\n title: {},\n variant: { default: \"filled\" },\n label: {},\n leadingIcon: {},\n ariaLabel: {}\n }, {\n \"state\": {\n default: \"default\"\n },\n \"stateModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:state\"]),\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"size\", \"disabled\"]);\n const emit = __emit;\n const state = useModel(__props, \"state\");\n const iconSize = computed(() => {\n if (__props.size === \"xsmall\") {\n return \"small\";\n }\n return __props.size;\n });\n function onClick(event) {\n event.preventDefault();\n if (state.value !== \"default\") {\n return;\n }\n emit(\"click\", event);\n }\n const baseButtonProps = computed(() => ({\n ...props,\n variant: __props.variant,\n size: __props.size,\n disabled: __props.disabled,\n success: state.value === \"success\",\n error: state.value === \"error\",\n title: props.ariaLabel\n }));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseButton, mergeProps(baseButtonProps.value, {\n class: \"kds-progress-button\",\n \"data-kds-progress-state\": state.value,\n onClick\n }), {\n leading: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass([\"leading\", iconSize.value])\n }, [\n createElementVNode(\"span\", {\n class: \"leading-icon\",\n \"data-visible\": state.value !== \"progress\"\n }, [\n createVNode(KdsIcon, {\n name: props.leadingIcon,\n size: iconSize.value\n }, null, 8, [\"name\", \"size\"])\n ], 8, _hoisted_1$U),\n createElementVNode(\"span\", {\n class: \"spinner\",\n \"data-visible\": state.value === \"progress\"\n }, [\n createVNode(KdsLoadingSpinner, {\n size: iconSize.value,\n variant: __props.variant === \"filled\" ? \"onPrimary\" : \"onSurface\"\n }, null, 8, [\"size\", \"variant\"])\n ], 8, _hoisted_2$z)\n ], 2)\n ]),\n _: 1\n }, 16, [\"data-kds-progress-state\"]);\n };\n }\n});\n\nconst KdsProgressButton = /* @__PURE__ */ _export_sfc(_sfc_main$1o, [[\"__scopeId\", \"data-v-d38d7ade\"]]);\n\nconst kdsProgressButtonState = {\n DEFAULT: \"default\",\n PROGRESS: \"progress\",\n SUCCESS: \"success\",\n ERROR: \"error\"\n};\nconst kdsProgressButtonStates = Object.values(kdsProgressButtonState);\n\nconst kdsListItemVariant = {\n SMALL: \"small\",\n LARGE: \"large\"\n};\n\nconst isTextInput = (target) => target instanceof HTMLElement && [\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName);\nconst diffIds = (a, b) => a.length !== b.length || a.some((id, i) => id !== b[i]);\nconst useListItemKeyboardNav = (options) => {\n const {\n containerEl,\n selectableItems,\n enabledItems,\n itemFocusStrategy = \"persistent\"\n } = options;\n const activeId = ref(void 0);\n function scrollToView() {\n if (!activeId.value || !containerEl.value) {\n return;\n }\n containerEl.value?.querySelector(`#${CSS.escape(activeId.value)}`)?.scrollIntoView({ block: \"nearest\" });\n }\n const findEnabledIndex = (id) => id === void 0 ? -1 : enabledItems.value.findIndex((o) => o.id === id);\n const moveDown = (currentIndex) => {\n if (currentIndex < 0) {\n return enabledItems.value[0].id;\n }\n if (currentIndex >= enabledItems.value.length - 1) {\n return options.allowNoSelection ? void 0 : enabledItems.value[0].id;\n }\n return enabledItems.value[currentIndex + 1].id;\n };\n const moveUp = (currentIndex) => {\n if (options.allowNoSelection && currentIndex === 0) {\n return void 0;\n }\n if (currentIndex <= 0) {\n return enabledItems.value[enabledItems.value.length - 1].id;\n }\n return enabledItems.value[currentIndex - 1].id;\n };\n const handleKeydown = (event) => {\n if (enabledItems.value.length === 0) {\n activeId.value = selectableItems.value.length === 0 ? options.emptyOptionId : void 0;\n return;\n }\n const currentIndex = findEnabledIndex(activeId.value);\n const targetItem = enabledItems.value.find(\n (item) => item.id === activeId.value\n );\n switch (event.key) {\n case \"ArrowDown\":\n activeId.value = moveDown(currentIndex);\n scrollToView();\n event.preventDefault();\n break;\n case \"ArrowUp\":\n activeId.value = moveUp(currentIndex);\n scrollToView();\n event.preventDefault();\n break;\n case \"Enter\":\n options.triggers?.onEnter?.(activeId.value, targetItem, event);\n event.preventDefault();\n break;\n case \" \":\n if (isTextInput(event.target)) {\n break;\n }\n options.triggers?.onSpace?.(activeId.value, targetItem, event);\n event.preventDefault();\n break;\n case \"Home\":\n activeId.value = enabledItems.value[0].id;\n scrollToView();\n event.preventDefault();\n break;\n case \"End\":\n activeId.value = enabledItems.value[enabledItems.value.length - 1].id;\n scrollToView();\n event.preventDefault();\n break;\n }\n };\n const isFocused = ref(false);\n const lastActiveId = ref(void 0);\n const updateActiveItemId = (didIdsChange = false) => {\n function assertUnreachable(_) {\n throw new Error(\"Exhaustive check not met\");\n }\n isFocused.value = true;\n switch (itemFocusStrategy) {\n case \"always-first\": {\n activeId.value = enabledItems.value.at(0)?.id;\n return;\n }\n case \"persistent\": {\n const hasActiveId = activeId.value !== void 0;\n if (!didIdsChange && hasActiveId) {\n return;\n }\n const isStillAvailable = enabledItems.value.find(\n ({ id }) => lastActiveId.value === id\n );\n activeId.value = isStillAvailable ? lastActiveId.value : enabledItems.value.at(0)?.id;\n lastActiveId.value = activeId.value;\n return;\n }\n case \"noop\": {\n activeId.value = void 0;\n lastActiveId.value = void 0;\n return;\n }\n default:\n assertUnreachable();\n }\n };\n watch(\n [enabledItems, () => options.loading],\n ([currentValues, isLoading], [prevValues]) => {\n if (!isFocused.value) {\n return;\n }\n if (isLoading && options.emptyOptionId) {\n activeId.value = options.emptyOptionId;\n return;\n }\n const didIdsChange = diffIds(\n currentValues.map(({ id }) => id),\n prevValues.map(({ id }) => id)\n );\n updateActiveItemId(didIdsChange);\n }\n );\n const blur = () => {\n lastActiveId.value = activeId.value;\n activeId.value = void 0;\n isFocused.value = false;\n };\n const setActiveId = (id) => {\n activeId.value = id;\n };\n const focus = () => updateActiveItemId();\n onMounted(() => {\n containerEl.value?.addEventListener(\"keydown\", handleKeydown);\n containerEl.value?.addEventListener(\"focus\", focus);\n containerEl.value?.addEventListener(\"blur\", blur);\n });\n onUnmounted(() => {\n containerEl.value?.removeEventListener(\"keydown\", handleKeydown);\n containerEl.value?.removeEventListener(\"focus\", focus);\n containerEl.value?.removeEventListener(\"blur\", blur);\n });\n function scrollSelectedIntoView() {\n nextTick(() => {\n const selected = containerEl.value?.querySelector(\n '[aria-selected=\"true\"]'\n );\n selected?.scrollIntoView({ block: \"center\" });\n });\n }\n return {\n handleKeydown,\n activeId: readonly(activeId),\n focus: updateActiveItemId,\n blur,\n setActiveId,\n scrollSelectedIntoView\n };\n};\n\nconst useStableItemIds = (options) => {\n const { items } = options;\n const idPrefix = useId();\n const warnedDuplicateIds = /* @__PURE__ */ new Set();\n const deduplicationResult = computed(() => {\n const seen = /* @__PURE__ */ new Set();\n const duplicateIds = [];\n const deduplicated = items.value.filter((item) => {\n if (seen.has(item.id)) {\n duplicateIds.push(item.id);\n return false;\n }\n seen.add(item.id);\n return true;\n });\n return { items: deduplicated, duplicateIds };\n });\n const deduplicatedItems = computed(() => deduplicationResult.value.items);\n watch(\n () => deduplicationResult.value.duplicateIds,\n (duplicateIds) => {\n for (const id of duplicateIds) {\n if (!warnedDuplicateIds.has(id)) {\n console.warn(\n `[Item id validation] Duplicate option id \"${id}\" detected. Only the first occurrence will be used.`\n );\n warnedDuplicateIds.add(id);\n }\n }\n },\n { immediate: true }\n );\n const itemsWithPrefix = computed(\n () => deduplicatedItems.value.map((value) => ({\n ...value,\n id: `${idPrefix}-${value.id}`\n }))\n );\n const toUnprefixedId = (elementId) => {\n return elementId?.slice(idPrefix.length + 1);\n };\n return { itemsWithPrefix, idPrefix, toUnprefixedId };\n};\n\nconst _sfc_main$1n = /* @__PURE__ */ defineComponent({\n __name: \"ListItemAccessory\",\n props: {\n accessory: {},\n size: {},\n disabled: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\"]);\n return (_ctx, _cache) => {\n return props.accessory.type === \"avatar\" ? (openBlock(), createBlock(KdsAvatar, {\n key: 0,\n title: props.accessory.title,\n src: props.accessory.src,\n initials: props.accessory.initials,\n size: props.size\n }, null, 8, [\"title\", \"src\", \"initials\", \"size\"])) : props.accessory.type === \"colorSwatch\" ? (openBlock(), createBlock(KdsColorSwatch, {\n key: 1,\n color: props.accessory.color,\n title: props.accessory.title,\n size: props.size\n }, null, 8, [\"color\", \"title\", \"size\"])) : props.accessory.type === \"icon\" ? (openBlock(), createBlock(KdsIcon, {\n key: 2,\n name: props.accessory.name,\n size: props.size,\n disabled: __props.disabled\n }, null, 8, [\"name\", \"size\", \"disabled\"])) : props.accessory.type === \"dataType\" ? (openBlock(), createBlock(KdsDataType, {\n key: 3,\n \"icon-name\": props.accessory.name,\n size: props.size,\n disabled: __props.disabled\n }, null, 8, [\"icon-name\", \"size\", \"disabled\"])) : props.accessory.type === \"liveStatus\" ? (openBlock(), createBlock(unref(KdsLiveStatus), {\n key: 4,\n status: props.accessory.status,\n title: props.accessory.title,\n size: props.size\n }, null, 8, [\"status\", \"title\", \"size\"])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nconst kdsListItemAccessorySize = {\n SMALL: \"small\",\n LARGE: \"large\"\n};\n\nconst _hoisted_1$T = [\"id\", \"role\", \"aria-selected\", \"aria-disabled\"];\nconst _hoisted_2$y = {\n key: 0,\n class: \"accessory\"\n};\nconst _hoisted_3$q = { class: \"content\" };\nconst _hoisted_4$m = [\"title\"];\nconst _hoisted_5$c = {\n key: 0,\n class: \"prefix\"\n};\nconst _hoisted_6$a = [\"title\"];\nconst _hoisted_7$3 = { class: \"trailing-item\" };\nconst _hoisted_8$2 = {\n key: 0,\n class: \"shortcut\"\n};\nconst _hoisted_9$2 = {\n key: 3,\n class: \"trailing-item-reserve-space\"\n};\nconst _sfc_main$1m = /* @__PURE__ */ defineComponent({\n __name: \"KdsListItem\",\n props: {\n id: {},\n text: {},\n accessory: {},\n subText: {},\n variant: { default: () => kdsListItemVariant.SMALL },\n shortcut: {},\n trailingIcon: {},\n badge: {},\n special: { type: Boolean, default: false },\n selected: { type: Boolean, default: false },\n active: { type: Boolean, default: false },\n missing: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n role: { default: \"option\" }\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"special\", \"selected\", \"active\", \"missing\", \"disabled\", \"role\"]);\n const emit = __emit;\n const accessorySize = computed(\n () => __props.variant === kdsListItemVariant.LARGE ? kdsListItemAccessorySize.LARGE : kdsListItemAccessorySize.SMALL\n );\n const onClick = (event) => {\n if (__props.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n emit(\"click\", event);\n };\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated: isLabelTruncated } = useKdsIsTruncated(labelEl);\n const subtextEl = useTemplateRef(\"subtextEl\");\n const { isTruncated: isSubtextTruncated } = useKdsIsTruncated(subtextEl);\n const badgeSize = computed(\n () => __props.variant === kdsListItemVariant.SMALL ? \"xxsmall\" : \"xsmall\"\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: props.id,\n role: __props.role,\n \"aria-selected\": __props.role === \"option\" ? __props.selected : void 0,\n \"aria-disabled\": __props.role === \"presentation\" ? void 0 : __props.disabled,\n class: normalizeClass([\n \"kds-list-item\",\n __props.variant,\n {\n selected: __props.selected,\n active: __props.active,\n missing: __props.missing,\n disabled: __props.disabled\n }\n ]),\n onClick\n }, [\n props.accessory ? (openBlock(), createElementBlock(\"span\", _hoisted_2$y, [\n createVNode(_sfc_main$1n, {\n accessory: props.accessory,\n size: accessorySize.value,\n disabled: __props.disabled\n }, null, 8, [\"accessory\", \"size\", \"disabled\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_3$q, [\n createElementVNode(\"span\", {\n ref_key: \"labelEl\",\n ref: labelEl,\n class: \"label\",\n title: unref(isLabelTruncated) ? props.text : void 0\n }, [\n __props.missing ? (openBlock(), createElementBlock(\"span\", _hoisted_5$c, \"(Missing) \")) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", {\n class: normalizeClass({ special: __props.special })\n }, toDisplayString(props.text), 3)\n ], 8, _hoisted_4$m),\n props.subText ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n ref_key: \"subtextEl\",\n ref: subtextEl,\n class: \"subtext\",\n title: unref(isSubtextTruncated) ? props.subText : void 0\n }, toDisplayString(props.subText), 9, _hoisted_6$a)) : createCommentVNode(\"\", true)\n ]),\n createElementVNode(\"span\", _hoisted_7$3, [\n props.shortcut ? (openBlock(), createElementBlock(\"kbd\", _hoisted_8$2, toDisplayString(props.shortcut), 1)) : props.badge ? (openBlock(), createBlock(KdsBadge, {\n key: 1,\n size: badgeSize.value,\n label: props.badge.label,\n variant: props.badge.variant\n }, null, 8, [\"size\", \"label\", \"variant\"])) : createCommentVNode(\"\", true),\n props.trailingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 2,\n size: \"small\",\n name: props.trailingIcon\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n !props.shortcut && !props.trailingIcon && !props.badge ? (openBlock(), createElementBlock(\"span\", _hoisted_9$2)) : createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1$T);\n };\n }\n});\n\nconst KdsListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1m, [[\"__scopeId\", \"data-v-a3d6c86f\"]]);\n\nconst _hoisted_1$S = { class: \"kds-list-item-section-title\" };\nconst _hoisted_2$x = {\n key: 0,\n class: \"icon\"\n};\nconst _hoisted_3$p = [\"title\"];\nconst _sfc_main$1l = /* @__PURE__ */ defineComponent({\n __name: \"ListItemSectionTitle\",\n props: {\n label: {},\n leadingIcon: {}\n },\n setup(__props) {\n const props = __props;\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated } = useKdsIsTruncated(labelEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$S, [\n props.leadingIcon ? (openBlock(), createElementBlock(\"span\", _hoisted_2$x, [\n createVNode(KdsIcon, {\n name: props.leadingIcon,\n size: \"small\"\n }, null, 8, [\"name\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", {\n ref_key: \"labelEl\",\n ref: labelEl,\n class: \"label\",\n title: unref(isTruncated) ? props.label : void 0\n }, toDisplayString(props.label), 9, _hoisted_3$p)\n ]);\n };\n }\n});\n\nconst ListItemSectionTitle = /* @__PURE__ */ _export_sfc(_sfc_main$1l, [[\"__scopeId\", \"data-v-5eeb1226\"]]);\n\nconst _sfc_main$1k = /* @__PURE__ */ defineComponent({\n __name: \"KdsMenuItem\",\n props: {\n item: {},\n activeId: {},\n isLast: { type: Boolean },\n variant: {}\n },\n emits: [\"click\"],\n setup(__props, { expose: __expose }) {\n const props = __props;\n const linkEl = useTemplateRef(\n \"linkEl\"\n );\n __expose({\n clickLink: () => {\n if (typeof props.item.to !== \"string\" || props.item.disabled) {\n return;\n }\n const ref = linkEl.value;\n if (!ref) {\n return;\n }\n const el = ref instanceof HTMLElement ? ref : ref.$el;\n el?.click();\n }\n });\n const isLink = computed(() => typeof props.item.to === \"string\");\n const isExternal = computed(\n () => typeof props.item.to === \"string\" && isExternalUrl(props.item.to)\n );\n const linkComponent = computed(() => {\n if (props.item.disabled) {\n return \"span\";\n }\n return resolveNuxtLinkComponent();\n });\n const effectiveTarget = computed(() => {\n if (!isLink.value) {\n return void 0;\n }\n const target = props.item.target;\n return target ?? (isExternal.value ? \"_blank\" : void 0);\n });\n const effectiveRel = computed(() => {\n if (!isLink.value) {\n return void 0;\n }\n const rel = props.item.rel;\n if (effectiveTarget.value !== \"_blank\") {\n return rel ?? void 0;\n }\n if (!rel) {\n return \"noopener noreferrer\";\n }\n const relTokens = rel.split(/\\s+/).filter(Boolean);\n if (!relTokens.includes(\"noopener\")) {\n relTokens.push(\"noopener\");\n }\n if (!relTokens.includes(\"noreferrer\")) {\n relTokens.push(\"noreferrer\");\n }\n return relTokens.join(\" \");\n });\n const effectiveTrailingIcon = computed(() => {\n if (isExternal.value && !props.item.shortcut && !props.item.badge) {\n return \"external-link\";\n }\n return void 0;\n });\n const effectiveTo = computed(\n () => props.item.disabled ? void 0 : props.item.to\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n __props.item.sectionHeadline ? (openBlock(), createBlock(unref(ListItemSectionTitle), mergeProps({\n key: 0,\n label: __props.item.text,\n \"leading-icon\": __props.item.sectionHeadlineIcon,\n role: \"presentation\",\n \"aria-hidden\": \"true\"\n }, _ctx.$attrs), null, 16, [\"label\", \"leading-icon\"])) : isLink.value ? (openBlock(), createBlock(resolveDynamicComponent(linkComponent.value), {\n key: 1,\n id: __props.item.id,\n ref_key: \"linkEl\",\n ref: linkEl,\n to: effectiveTo.value,\n download: __props.item.disabled ? void 0 : __props.item.download,\n target: effectiveTarget.value,\n rel: effectiveRel.value,\n \"aria-disabled\": __props.item.disabled ? \"true\" : void 0,\n tabindex: \"-1\",\n role: \"menuitem\",\n class: \"kds-menu-item-link\",\n onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"])),\n onClick: _cache[1] || (_cache[1] = ($event) => !__props.item.disabled && _ctx.$emit(\"click\", $event))\n }, {\n default: withCtx(() => [\n createVNode(unref(KdsListItem), mergeProps({\n id: `${__props.item.id}-content`,\n accessory: __props.item.accessory,\n text: __props.item.text,\n \"sub-text\": __props.item.subText,\n disabled: __props.item.disabled,\n active: __props.activeId === __props.item.id,\n variant: __props.variant,\n badge: __props.item.badge,\n shortcut: __props.item.shortcut,\n \"trailing-icon\": effectiveTrailingIcon.value,\n role: \"presentation\"\n }, _ctx.$attrs), null, 16, [\"id\", \"accessory\", \"text\", \"sub-text\", \"disabled\", \"active\", \"variant\", \"badge\", \"shortcut\", \"trailing-icon\"])\n ]),\n _: 1\n }, 40, [\"id\", \"to\", \"download\", \"target\", \"rel\", \"aria-disabled\"])) : (openBlock(), createBlock(unref(KdsListItem), mergeProps({\n key: 2,\n id: __props.item.id,\n accessory: __props.item.accessory,\n text: __props.item.text,\n \"sub-text\": __props.item.subText,\n disabled: __props.item.disabled,\n active: __props.activeId === __props.item.id,\n variant: __props.variant,\n badge: __props.item.badge,\n \"trailing-icon\": __props.item.trailingIcon,\n shortcut: __props.item.shortcut,\n role: \"menuitem\"\n }, _ctx.$attrs, {\n onClick: _cache[2] || (_cache[2] = ($event) => !__props.item.disabled && _ctx.$emit(\"click\", $event))\n }), null, 16, [\"id\", \"accessory\", \"text\", \"sub-text\", \"disabled\", \"active\", \"variant\", \"badge\", \"trailing-icon\", \"shortcut\"])),\n __props.item.separator && !__props.isLast ? (openBlock(), createBlock(unref(KdsDivider), {\n key: 3,\n class: \"kds-list-item-divider\",\n role: \"presentation\",\n \"aria-hidden\": \"true\"\n })) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\n\nconst KdsMenuItem = /* @__PURE__ */ _export_sfc(_sfc_main$1k, [[\"__scopeId\", \"data-v-677d6ca6\"]]);\n\nconst _hoisted_1$R = [\"id\", \"aria-label\", \"aria-activedescendant\"];\nconst _sfc_main$1j = /* @__PURE__ */ defineComponent({\n __name: \"KdsMenuContainer\",\n props: {\n id: {},\n ariaLabel: { default: \"Menu\" },\n items: {},\n menuMaxHeight: {},\n variant: { default: () => kdsListItemVariant.SMALL },\n itemFocusStrategy: { default: \"noop\" }\n },\n emits: [\"itemClick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"ariaLabel\", \"menuMaxHeight\", \"variant\", \"itemFocusStrategy\"]);\n const emit = __emit;\n const { itemsWithPrefix, toUnprefixedId } = useStableItemIds({\n items: computed(() => props.items)\n });\n const selectableItems = computed(\n () => itemsWithPrefix.value.filter((item) => !item.sectionHeadline)\n );\n const enabledItems = computed(\n () => selectableItems.value.filter((item) => !item.disabled)\n );\n const containerEl = useTemplateRef(\"containerEl\");\n const itemRefs = ref([]);\n const setItemRef = (el, index) => {\n if (el) {\n itemRefs.value[index] = el;\n }\n };\n const handleItemInteraction = (item, event) => {\n const id = toUnprefixedId(item?.id);\n if (!id) {\n return;\n }\n const originalItem = props.items.find((i) => i.id === id);\n try {\n originalItem?.handler?.(originalItem, event);\n } catch (error) {\n console.error(\"Failed while calling item handler\", { item, error });\n }\n emit(\"itemClick\", id);\n };\n const onKeyboardActivate = (item, event) => {\n const id = toUnprefixedId(item?.id);\n if (!id) {\n return;\n }\n const originalItem = props.items.find((i) => i.id === id);\n if (originalItem?.to && !originalItem.disabled) {\n const idx = itemsWithPrefix.value.findIndex((i) => i.id === item?.id);\n itemRefs.value?.[idx]?.clickLink();\n return;\n }\n handleItemInteraction(item, event);\n };\n const { activeId } = useListItemKeyboardNav({\n containerEl,\n enabledItems,\n selectableItems,\n itemFocusStrategy: __props.itemFocusStrategy,\n triggers: {\n onEnter: (_activeId, item, event) => {\n onKeyboardActivate(item, event);\n },\n onSpace: (_activeId, item, event) => {\n onKeyboardActivate(item, event);\n }\n }\n });\n __expose({\n /**\n * Function to focus the outer container of the menu.\n * It will follow the behavior defined by the `itemFocusStrategy` prop.\n */\n focus: () => {\n containerEl.value?.focus();\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: props.id,\n ref_key: \"containerEl\",\n ref: containerEl,\n role: \"menu\",\n class: \"kds-menu-container\",\n \"aria-label\": __props.ariaLabel,\n tabindex: 0,\n style: normalizeStyle({ maxHeight: __props.menuMaxHeight }),\n \"aria-activedescendant\": unref(activeId)\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(itemsWithPrefix), (item, index) => {\n return openBlock(), createBlock(KdsMenuItem, {\n key: item.id,\n ref_for: true,\n ref: (el) => setItemRef(el, index),\n item,\n \"is-last\": index === unref(itemsWithPrefix).length - 1,\n \"active-id\": unref(activeId),\n variant: __props.variant,\n onClick: ($event) => handleItemInteraction(item, $event)\n }, null, 8, [\"item\", \"is-last\", \"active-id\", \"variant\", \"onClick\"]);\n }), 128))\n ], 12, _hoisted_1$R);\n };\n }\n});\n\nconst KdsMenuContainer = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [[\"__scopeId\", \"data-v-cce3fc40\"]]);\n\nconst kdsPopoverPlacement = {\n TOP_LEFT: \"top-left\",\n TOP_RIGHT: \"top-right\",\n BOTTOM_LEFT: \"bottom-left\",\n BOTTOM_RIGHT: \"bottom-right\",\n CUSTOM: \"custom\"\n};\nconst kdsPopoverPlacements = Object.values(kdsPopoverPlacement);\nconst kdsPopoverRole = {\n DIALOG: \"dialog\",\n MENU: \"menu\",\n LISTBOX: \"listbox\"\n};\nconst kdsPopoverRoles = Object.values(kdsPopoverRole);\nconst kdsPopoverType = {\n AUTO: \"auto\",\n MANUAL: \"manual\"\n};\nconst kdsPopoverTypes = Object.values(kdsPopoverType);\n\nconst _hoisted_1$Q = [\"id\", \"popover\", \"role\"];\nconst _hoisted_2$w = {\n key: 0,\n class: \"kds-popover-default-content\"\n};\nconst _sfc_main$1i = /* @__PURE__ */ defineComponent({\n __name: \"KdsPopover\",\n props: /* @__PURE__ */ mergeModels({\n role: {},\n popoverType: { default: \"auto\" },\n fullWidth: { type: Boolean, default: false },\n maxInlineSize: { default: () => void 0 },\n content: {},\n placement: { default: \"bottom-left\" },\n customPlacementPosition: {}\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"placement\", \"popoverType\", \"fullWidth\", \"maxInlineSize\"]);\n const open = useModel(__props, \"modelValue\");\n const popoverEl = useTemplateRef(\"popoverEl\");\n const popoverId = useId();\n const anchorName = `--anchor-${popoverId}`;\n watchEffect(() => {\n if (open.value) {\n popoverEl.value?.showPopover?.();\n } else {\n popoverEl.value?.hidePopover?.();\n }\n });\n const anchorStyle = __props.placement === kdsPopoverPlacement.CUSTOM ? {} : { \"anchor-name\": anchorName };\n const onToggle = (event) => {\n open.value = event.newState === \"open\";\n };\n __expose({ anchorStyle, popoverId });\n const wrapperStyles = computed(() => {\n if (__props.placement === kdsPopoverPlacement.CUSTOM && props.customPlacementPosition) {\n return {\n \"max-inline-size\": __props.maxInlineSize,\n left: `${props.customPlacementPosition.x}px`,\n top: `${props.customPlacementPosition.y}px`\n };\n }\n return {\n \"position-anchor\": anchorName,\n \"max-inline-size\": __props.maxInlineSize\n };\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: unref(popoverId),\n ref_key: \"popoverEl\",\n ref: popoverEl,\n class: normalizeClass([\"kds-popover\", [\"floating\", __props.placement, { \"full-width\": __props.fullWidth }]]),\n popover: __props.popoverType,\n style: normalizeStyle(wrapperStyles.value),\n role: props.role,\n onToggle\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n props.content?.trim().length ? (openBlock(), createElementBlock(\"div\", _hoisted_2$w, toDisplayString(props.content), 1)) : createCommentVNode(\"\", true)\n ], true)\n ], 46, _hoisted_1$Q);\n };\n }\n});\n\nconst KdsPopover = /* @__PURE__ */ _export_sfc(_sfc_main$1i, [[\"__scopeId\", \"data-v-1e5f9d24\"]]);\n\nconst KdsPopover$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({\n __proto__: null,\n default: KdsPopover\n}, Symbol.toStringTag, { value: 'Module' }));\n\nconst _sfc_main$1h = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"KdsMenuButton\",\n props: /* @__PURE__ */ mergeModels({\n dataTestId: {},\n size: {},\n disabled: { type: Boolean },\n title: {},\n variant: { default: \"outlined\" },\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {},\n items: {},\n menuMaxHeight: {}\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"itemClick\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"menuMaxHeight\"]);\n const attrs = useAttrs();\n const emit = __emit;\n const toggleButtonProps = computed(() => {\n const { items: _items, ...rest } = props;\n const {\n modelValue: _modelValue,\n \"onUpdate:modelValue\": _onUpdateModelValue,\n ...safeAttrs\n } = attrs;\n return { ...safeAttrs, ...rest, variant: __props.variant };\n });\n const isMenuOpen = useModel(__props, \"modelValue\");\n const popoverEl = useTemplateRef(\"popover\");\n const menuContainerEl = useTemplateRef(\"menuContainer\");\n const menuButtonEl = useTemplateRef(\"menuButton\");\n const menuId = useId();\n watch(isMenuOpen, async (menuOpen) => {\n if (!menuOpen) {\n return;\n }\n await nextTick();\n menuContainerEl.value?.focus();\n });\n const onItemClick = (itemId) => {\n isMenuOpen.value = false;\n emit(\"itemClick\", itemId);\n };\n __expose({ menuButtonEl });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(_sfc_main$1p, mergeProps({ ref: \"menuButton\" }, toggleButtonProps.value, {\n modelValue: isMenuOpen.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isMenuOpen.value = $event),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isMenuOpen.value,\n \"aria-controls\": unref(menuId),\n style: popoverEl.value?.anchorStyle\n }), null, 16, [\"modelValue\", \"aria-expanded\", \"aria-controls\", \"style\"]),\n createVNode(KdsPopover, {\n ref: \"popover\",\n modelValue: isMenuOpen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => isMenuOpen.value = $event),\n placement: \"bottom-left\",\n \"aria-label\": \"Menu\"\n }, {\n default: withCtx(() => [\n createVNode(KdsMenuContainer, {\n id: unref(menuId),\n ref: \"menuContainer\",\n items: props.items,\n \"menu-max-height\": __props.menuMaxHeight,\n onItemClick\n }, null, 8, [\"id\", \"items\", \"menu-max-height\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 64);\n };\n }\n});\n\nconst _sfc_main$1g = /* @__PURE__ */ defineComponent({\n __name: \"KdsSplitButton\",\n props: {\n dataTestId: {},\n size: { default: \"medium\" },\n disabled: { type: Boolean },\n title: {},\n variant: { default: \"filled\" },\n label: {},\n leadingIcon: {},\n trailingIcon: {},\n ariaLabel: {},\n items: {},\n menuMaxHeight: {}\n },\n emits: [\"click\", \"itemClick\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"size\", \"items\", \"menuMaxHeight\"]);\n const emit = __emit;\n const isMenuOpen = ref(false);\n const popoverEl = useTemplateRef(\"popoverEl\");\n const menuContainer = useTemplateRef(\"menuContainer\");\n const menuId = useId();\n function onItemClick(itemId) {\n isMenuOpen.value = false;\n emit(\"itemClick\", itemId);\n }\n watch(isMenuOpen, (open) => {\n if (open) {\n nextTick(() => menuContainer.value?.focus());\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass({\n \"kds-split-button\": true,\n [__props.variant]: true,\n [__props.size]: true,\n disabled: props.disabled\n })\n }, [\n createVNode(BaseButton, mergeProps(props, {\n class: [\"kds-split-button-primary\", __props.variant],\n size: __props.size,\n variant: __props.variant,\n \"remove-border-radius\": \"right\",\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), null, 16, [\"class\", \"size\", \"variant\"]),\n createVNode(BaseButton, {\n class: \"kds-split-button-secondary\",\n \"remove-border-radius\": \"left\",\n size: __props.size,\n variant: __props.variant,\n \"leading-icon\": \"chevron-down\",\n disabled: props.disabled,\n ariaLabel: \"More options\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isMenuOpen.value,\n \"aria-controls\": unref(menuId),\n style: normalizeStyle(popoverEl.value?.anchorStyle),\n onClick: _cache[1] || (_cache[1] = ($event) => isMenuOpen.value = !isMenuOpen.value)\n }, null, 8, [\"size\", \"variant\", \"disabled\", \"aria-expanded\", \"aria-controls\", \"style\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: isMenuOpen.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => isMenuOpen.value = $event),\n placement: \"bottom-left\"\n }, {\n default: withCtx(() => [\n createVNode(KdsMenuContainer, {\n id: unref(menuId),\n ref_key: \"menuContainer\",\n ref: menuContainer,\n items: __props.items,\n \"menu-max-height\": __props.menuMaxHeight,\n \"aria-label\": \"Actions\",\n onItemClick,\n onKeydown: _cache[2] || (_cache[2] = withKeys(($event) => isMenuOpen.value = false, [\"escape\"]))\n }, null, 8, [\"id\", \"items\", \"menu-max-height\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 2);\n };\n }\n});\n\nconst KdsSplitButton = /* @__PURE__ */ _export_sfc(_sfc_main$1g, [[\"__scopeId\", \"data-v-8f48b87a\"]]);\n\nconst kdsButtonSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\"\n};\nconst kdsButtonSizes = Object.values(kdsButtonSize);\nconst kdsButtonVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\"\n};\nconst kdsButtonVariants = Object.values(kdsButtonVariant);\n\nconst _hoisted_1$P = [\"aria-disabled\"];\nconst _hoisted_2$v = { class: \"kds-empty-state-headline\" };\nconst _hoisted_3$o = {\n key: 1,\n class: \"kds-empty-state-description\"\n};\nconst _hoisted_4$l = {\n key: 2,\n class: \"kds-empty-state-action\"\n};\nconst _sfc_main$1f = /* @__PURE__ */ defineComponent({\n __name: \"KdsEmptyState\",\n props: {\n headline: {},\n description: {},\n loadingSpinner: { type: Boolean },\n disabled: { type: Boolean, default: false },\n button: {},\n secondaryButton: {}\n },\n emits: [\"buttonClick\", \"secondaryButtonClick\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"disabled\"]);\n const emit = __emit;\n const isLinkButton = computed(\n () => props.button && \"to\" in props.button && props.button.to !== void 0\n );\n const buttonComponent = computed(\n () => isLinkButton.value ? _sfc_main$1r : _sfc_main$1s\n );\n const isSecondaryLinkButton = computed(\n () => props.secondaryButton && \"to\" in props.secondaryButton && props.secondaryButton.to !== void 0\n );\n const secondaryButtonComponent = computed(\n () => isSecondaryLinkButton.value ? _sfc_main$1r : _sfc_main$1s\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-empty-state\", { disabled: __props.disabled }]),\n \"aria-disabled\": __props.disabled || void 0\n }, [\n props.loadingSpinner ? (openBlock(), createBlock(KdsLoadingSpinner, {\n key: 0,\n \"data-testid\": \"loading-spinner\",\n size: \"large\",\n variant: \"onSurface\",\n \"aria-hidden\": \"true\"\n })) : createCommentVNode(\"\", true),\n createElementVNode(\"p\", _hoisted_2$v, toDisplayString(props.headline), 1),\n props.description ? (openBlock(), createElementBlock(\"p\", _hoisted_3$o, toDisplayString(props.description), 1)) : createCommentVNode(\"\", true),\n props.button ? (openBlock(), createElementBlock(\"div\", _hoisted_4$l, [\n (openBlock(), createBlock(resolveDynamicComponent(buttonComponent.value), mergeProps(props.button, {\n disabled: props.button?.disabled || __props.disabled,\n onClick: _cache[0] || (_cache[0] = ($event) => !__props.disabled && emit(\"buttonClick\", $event))\n }), null, 16, [\"disabled\"])),\n props.secondaryButton ? (openBlock(), createBlock(resolveDynamicComponent(secondaryButtonComponent.value), mergeProps({ key: 0 }, props.secondaryButton, {\n disabled: props.secondaryButton?.disabled || __props.disabled,\n onClick: _cache[1] || (_cache[1] = ($event) => !__props.disabled && emit(\"secondaryButtonClick\", $event))\n }), null, 16, [\"disabled\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$P);\n };\n }\n});\n\nconst KdsEmptyState = /* @__PURE__ */ _export_sfc(_sfc_main$1f, [[\"__scopeId\", \"data-v-e913660a\"]]);\n\nconst _hoisted_1$O = [\"aria-busy\", \"aria-label\", \"aria-activedescendant\", \"tabindex\"];\nconst loadingStateText = \"Loading entries\";\nconst _sfc_main$1e = /* @__PURE__ */ defineComponent({\n __name: \"KdsListContainer\",\n props: {\n possibleValues: {},\n variant: { default: () => kdsListItemVariant.SMALL },\n emptyText: { default: \"\" },\n loading: { type: Boolean, default: false },\n ariaLabel: {},\n controlledExternally: { type: Boolean },\n allowNoSelection: { type: Boolean, default: false },\n itemFocusStrategy: { default: \"persistent\" }\n },\n emits: [\"itemClick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"emptyText\", \"variant\", \"loading\", \"allowNoSelection\", \"itemFocusStrategy\"]);\n const emit = __emit;\n const { itemsWithPrefix, idPrefix, toUnprefixedId } = useStableItemIds({\n items: computed(() => __props.loading ? [] : props.possibleValues)\n });\n const emptyOptionId = `${idPrefix}-empty`;\n function toOptionId(elementId) {\n if (elementId === emptyOptionId) {\n return void 0;\n }\n return toUnprefixedId(elementId);\n }\n const selectableValues = computed(\n () => itemsWithPrefix.value.filter((item) => !item.sectionHeadline)\n );\n const containerEl = useTemplateRef(\"containerEl\");\n const enabledValues = computed(\n () => selectableValues.value.filter((o) => !o.disabled)\n );\n const { activeId, handleKeydown, focus, blur, scrollSelectedIntoView } = useListItemKeyboardNav({\n containerEl,\n enabledItems: enabledValues,\n selectableItems: selectableValues,\n allowNoSelection: __props.allowNoSelection,\n emptyOptionId,\n loading: __props.loading,\n itemFocusStrategy: __props.itemFocusStrategy,\n triggers: {\n onEnter: () => {\n emit(\"itemClick\", toOptionId(activeId.value));\n },\n onSpace: () => {\n emit(\"itemClick\", toOptionId(activeId.value));\n }\n }\n });\n __expose({\n /** Forward a keydown event to the list for keyboard navigation */\n handleKeydown,\n /** Notify the list that its controlling element received focus */\n handleFocus: focus,\n /** Notify the list that its controlling element lost focus */\n handleBlur: blur,\n activeDescendant: activeId,\n /** Moves focus to the list container element */\n focus: () => {\n containerEl.value?.focus();\n },\n scrollSelectedIntoView\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", mergeProps(_ctx.$attrs, {\n ref_key: \"containerEl\",\n ref: containerEl,\n role: \"listbox\",\n \"aria-busy\": __props.loading,\n \"aria-label\": props.ariaLabel,\n \"aria-activedescendant\": !props.controlledExternally && unref(activeId) ? unref(activeId) : void 0,\n class: [\"kds-list-container\", { standalone: !props.controlledExternally }],\n tabindex: props.controlledExternally ? void 0 : 0\n }), [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(itemsWithPrefix), (item, index) => {\n return openBlock(), createElementBlock(Fragment, {\n key: item.id\n }, [\n item.sectionHeadline ? (openBlock(), createBlock(ListItemSectionTitle, {\n key: 0,\n label: item.text,\n \"leading-icon\": item.sectionHeadlineIcon,\n role: \"presentation\",\n \"aria-hidden\": \"true\"\n }, null, 8, [\"label\", \"leading-icon\"])) : (openBlock(), createBlock(unref(KdsListItem), {\n key: 1,\n id: item.id,\n accessory: item.accessory,\n text: item.text,\n \"sub-text\": item.subText,\n selected: item.selected,\n disabled: item.disabled,\n active: unref(activeId) === item.id,\n special: item.special,\n missing: item.missing,\n variant: __props.variant,\n \"trailing-icon\": item.missing && !item.disabled ? \"trash\" : item.selected ? \"checkmark\" : void 0,\n role: \"option\",\n onMousedown: _cache[0] || (_cache[0] = ($event) => props.controlledExternally && $event.preventDefault()),\n onClick: ($event) => !item.disabled && emit(\"itemClick\", toOptionId(item.id))\n }, null, 8, [\"id\", \"accessory\", \"text\", \"sub-text\", \"selected\", \"disabled\", \"active\", \"special\", \"missing\", \"variant\", \"trailing-icon\", \"onClick\"])),\n item.separator && index < unref(itemsWithPrefix).length - 1 ? (openBlock(), createBlock(unref(KdsDivider), {\n key: 2,\n class: \"kds-list-item-divider\",\n role: \"presentation\",\n \"aria-hidden\": \"true\"\n })) : createCommentVNode(\"\", true)\n ], 64);\n }), 128)),\n selectableValues.value.length === 0 ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: emptyOptionId,\n role: \"option\",\n \"aria-disabled\": \"true\",\n \"aria-selected\": \"false\",\n class: \"kds-list-container-empty\"\n }, [\n createVNode(KdsEmptyState, {\n headline: __props.loading ? loadingStateText : __props.emptyText,\n \"loading-spinner\": __props.loading\n }, null, 8, [\"headline\", \"loading-spinner\"])\n ])) : createCommentVNode(\"\", true)\n ], 16, _hoisted_1$O);\n };\n }\n});\n\nconst KdsListContainer = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [[\"__scopeId\", \"data-v-118706ad\"]]);\n\nconst KdsListContainer$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({\n __proto__: null,\n default: KdsListContainer\n}, Symbol.toStringTag, { value: 'Module' }));\n\nconst _sfc_main$1d = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"KdsMenu\",\n props: {\n items: {},\n menuMaxHeight: {},\n variant: { default: () => kdsListItemVariant.SMALL },\n ariaLabel: {}\n },\n emits: [\"itemClick\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"menuMaxHeight\"]);\n const emit = __emit;\n const isMenuOpen = ref(false);\n const popoverEl = useTemplateRef(\"popover\");\n const menuContainerEl = useTemplateRef(\"menuContainer\");\n const menuId = useId();\n watch(isMenuOpen, async () => {\n if (!isMenuOpen.value) {\n return;\n }\n await nextTick();\n menuContainerEl.value?.focus();\n });\n const onItemClick = (itemId) => {\n isMenuOpen.value = false;\n emit(\"itemClick\", itemId);\n };\n const isMenuOpenReadonly = computed(() => isMenuOpen.value);\n const open = () => {\n isMenuOpen.value = true;\n };\n const close = () => {\n isMenuOpen.value = false;\n };\n const toggle = () => {\n isMenuOpen.value = !isMenuOpen.value;\n };\n const attrs = computed(() => {\n const ariaAttrs = {\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isMenuOpen.value,\n \"aria-controls\": menuId\n };\n if (!popoverEl.value) {\n return ariaAttrs;\n }\n return {\n ...ariaAttrs,\n style: popoverEl.value.anchorStyle\n };\n });\n const slots = useSlots();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n renderSlot(_ctx.$slots, \"default\", {\n open,\n close,\n toggle,\n isOpen: isMenuOpenReadonly.value,\n attrs: attrs.value\n }),\n Boolean(slots.default) ? (openBlock(), createBlock(KdsPopover, {\n key: 0,\n ref: \"popover\",\n modelValue: isMenuOpen.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isMenuOpen.value = $event),\n placement: \"bottom-left\",\n \"popover-type\": \"auto\",\n \"aria-label\": \"Menu\"\n }, {\n default: withCtx(() => [\n createVNode(KdsMenuContainer, {\n id: unref(menuId),\n ref: \"menuContainer\",\n items: props.items,\n \"menu-max-height\": __props.menuMaxHeight,\n variant: __props.variant,\n \"aria-label\": props.ariaLabel,\n onItemClick\n }, null, 8, [\"id\", \"items\", \"menu-max-height\", \"variant\", \"aria-label\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\n\nconst _sfc_main$1c = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"KdsContextMenu\",\n props: /* @__PURE__ */ mergeModels({\n id: {},\n items: {},\n menuMaxHeight: {},\n variant: { default: () => kdsListItemVariant.SMALL },\n ariaLabel: {},\n position: {},\n popoverMode: { default: () => kdsPopoverType.AUTO }\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"itemClick\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"variant\", \"menuMaxHeight\", \"position\", \"popoverMode\"]);\n const emit = __emit;\n const open = useModel(__props, \"modelValue\");\n const onItemClick = (itemId) => {\n open.value = false;\n emit(\"itemClick\", itemId);\n };\n const menuContainerEl = useTemplateRef(\"menuContainer\");\n watch(open, async (isOpen) => {\n if (!isOpen) {\n return;\n }\n await nextTick();\n menuContainerEl.value?.focus();\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(KdsPopover, {\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => open.value = $event),\n placement: \"custom\",\n \"custom-placement-position\": __props.position,\n \"popover-type\": __props.popoverMode,\n \"aria-label\": \"Menu\"\n }, {\n default: withCtx(() => [\n createVNode(KdsMenuContainer, {\n id: props.id,\n ref: \"menuContainer\",\n \"aria-label\": props.ariaLabel,\n items: props.items,\n \"menu-max-height\": __props.menuMaxHeight,\n variant: __props.variant,\n onItemClick,\n onContextmenu: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"]))\n }, null, 8, [\"id\", \"aria-label\", \"items\", \"menu-max-height\", \"variant\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"custom-placement-position\", \"popover-type\"]);\n };\n }\n});\n\nfunction debounce(func, debounceMs, { signal, edges } = {}) {\n let pendingThis = undefined;\n let pendingArgs = null;\n const leading = edges != null && edges.includes('leading');\n const trailing = edges == null || edges.includes('trailing');\n const invoke = () => {\n if (pendingArgs !== null) {\n func.apply(pendingThis, pendingArgs);\n pendingThis = undefined;\n pendingArgs = null;\n }\n };\n const onTimerEnd = () => {\n if (trailing) {\n invoke();\n }\n cancel();\n };\n let timeoutId = null;\n const schedule = () => {\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = null;\n onTimerEnd();\n }, debounceMs);\n };\n const cancelTimer = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n const cancel = () => {\n cancelTimer();\n pendingThis = undefined;\n pendingArgs = null;\n };\n const flush = () => {\n invoke();\n };\n const debounced = function (...args) {\n if (signal?.aborted) {\n return;\n }\n pendingThis = this;\n pendingArgs = args;\n const isFirstCall = timeoutId == null;\n schedule();\n if (leading && isFirstCall) {\n invoke();\n }\n };\n debounced.schedule = schedule;\n debounced.cancel = cancel;\n debounced.flush = flush;\n signal?.addEventListener('abort', cancel, { once: true });\n return debounced;\n}\n\nconst isMac = () => navigator?.userAgent?.toLowerCase()?.includes(\"mac\");\n\nconst createUnwrappedPromise = () => {\n let resolve = () => {\n };\n let reject = () => {\n };\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { resolve, reject, promise };\n};\n\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nconst getMetaOrCtrlKey = () => {\n return isMac() ? \"metaKey\" : \"ctrlKey\";\n};\n\nvar B$1 = Object.defineProperty;\nvar b$1 = (t, e, r) => e in t ? B$1(t, e, { enumerable: true, configurable: true, writable: true, value: r }) : t[e] = r;\nvar u$1 = (t, e, r) => b$1(t, typeof e != \"symbol\" ? e + \"\" : e, r);\nfunction N$1(t) {\n return getCurrentScope() ? (onScopeDispose(t), true) : false;\n}\nfunction P$1(t) {\n return typeof t == \"function\" ? t() : unref(t);\n}\nconst R$1 = typeof window < \"u\" && typeof document < \"u\";\ntypeof WorkerGlobalScope < \"u\" && globalThis instanceof WorkerGlobalScope;\nfunction O$1(t) {\n var e;\n const r = P$1(t);\n return (e = r == null ? void 0 : r.$el) != null ? e : r;\n}\nconst $$1 = R$1 ? window : void 0;\nfunction C$1() {\n const t = ref(false);\n return getCurrentInstance() && onMounted(() => {\n t.value = true;\n }), t;\n}\nfunction V$1(t) {\n const e = C$1();\n return computed(() => (e.value, !!t()));\n}\nfunction x$1(t, e, r = {}) {\n const { window: n = $$1, ...a } = r;\n let o;\n const l = V$1(() => n && \"ResizeObserver\" in n), i = () => {\n o && (o.disconnect(), o = void 0);\n }, f = computed(() => Array.isArray(t) ? t.map((p) => O$1(p)) : [O$1(t)]), c = watch(\n f,\n (p) => {\n if (i(), l.value && n) {\n o = new ResizeObserver(e);\n for (const d of p)\n d && o.observe(d, a);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n ), m = () => {\n i(), c();\n };\n return N$1(m), {\n isSupported: l,\n stop: m\n };\n}\nfunction F$1(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar G$1 = function(e) {\n var r = null, n, a = function(i) {\n return function() {\n r = null, e.apply(i, n);\n };\n }, o = function() {\n for (var i = arguments.length, f = new Array(i), c = 0; c < i; c++)\n f[c] = arguments[c];\n n = f, r === null && (r = requestAnimationFrame(a(this)));\n };\n return o.cancel = function() {\n cancelAnimationFrame(r), r = null;\n }, o;\n}, j$1 = G$1;\nconst q$1 = /* @__PURE__ */ F$1(j$1), _$1 = 500, w$1 = ({\n sizeManager: t,\n buffer: e = _$1\n}, r = \"vertical\", n = null) => {\n const o = ref({ scrollStart: 0, scrollEnd: 0 }), l = r === \"vertical\", i = n ?? ref(null), f = q$1(() => {\n if (!i.value)\n return;\n const { scrollTop: d, scrollLeft: S, offsetHeight: y, offsetWidth: A } = i.value, g = l ? d : S, L = l ? y : A;\n o.value = { scrollStart: g, scrollEnd: g + L };\n });\n t.onUpdate(f), n || x$1(i, f);\n const c = computed(() => {\n const d = t.toIndex(o.value.scrollStart - e), S = Math.min(\n t.toIndex(o.value.scrollEnd + e) + 1,\n t.getNumItems()\n );\n return { startIndex: d, endIndex: S, toArray: () => Array.from({ length: S - d }, (A, g) => d + g) };\n }), m = computed(() => t.toOffset(c.value.startIndex)), p = computed(() => ({\n [`padding${l ? \"Top\" : \"Left\"}`]: `${m.value}px`,\n [l ? \"height\" : \"width\"]: `${t.getTotalSize()}px`,\n /**\n * Since the height of the element should not be influenced by its padding.\n * An alternative without box-sizing: \"border-box\" would be to use margins instead\n * paddings, but then it is no longer easily possible to absolutely position\n * other elements (e.g. a cell selection overlay) inside this element.\n */\n boxSizing: \"border-box\"\n }));\n return {\n containerProps: {\n ref: i,\n onScroll: f\n },\n indices: c,\n scrolledAreaStyles: p\n };\n}, v$1 = (t, e) => isRef(t) && watch(() => t.value, e), H$1 = (t, e) => Math.floor(t / e);\nlet Y$1 = class Y {\n constructor(e, r) {\n u$1(this, \"numItems\");\n u$1(this, \"size\");\n this.numItems = e, this.size = r;\n }\n getNumItems() {\n return unref(this.numItems);\n }\n onUpdate(e) {\n v$1(this.numItems, e), v$1(this.size, e);\n }\n toOffset(e) {\n return e * unref(this.size);\n }\n getTotalSize() {\n return unref(this.numItems) * unref(this.size);\n }\n toIndex(e) {\n return Math.max(\n Math.min(\n H$1(e, unref(this.size)),\n unref(this.numItems) - 1\n ),\n 0\n );\n }\n};\n\nconst kdsDimensionComponentHeight12p5x = 200;\nconst kdsDimensionComponentHeight1p5x = 24;\nconst kdsDimensionComponentHeight20x = 320;\nconst kdsDimensionComponentHeight2p25x = 36;\nconst kdsSpacingContainer0p10x = 1;\nconst kdsSpacingContainer0p25x = 4;\n\nconst _hoisted_1$N = { class: \"kds-label-wrapper\" };\nconst _hoisted_2$u = [\"id\", \"for\", \"title\"];\nconst _sfc_main$1b = /* @__PURE__ */ defineComponent({\n __name: \"KdsLabel\",\n props: {\n label: {},\n id: {},\n for: {},\n description: {},\n showDescriptionButton: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"showDescriptionButton\"]);\n const KdsInfoToggleButton = defineAsyncComponent(\n () => Promise.resolve().then(() => KdsInfoToggleButton$1)\n );\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated } = useKdsIsTruncated(labelEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$N, [\n createElementVNode(\"label\", {\n id: props.id,\n ref_key: \"labelEl\",\n ref: labelEl,\n for: props.for,\n class: \"label\",\n title: unref(isTruncated) ? props.label : void 0\n }, toDisplayString(props.label), 9, _hoisted_2$u),\n props.description ? (openBlock(), createBlock(unref(KdsInfoToggleButton), {\n key: 0,\n content: props.description,\n hidden: !__props.showDescriptionButton\n }, null, 8, [\"content\", \"hidden\"])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst KdsLabel = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [[\"__scopeId\", \"data-v-efe3313e\"]]);\n\nconst _hoisted_1$M = [\"id\"];\nconst _hoisted_2$t = { class: \"subtext-text\" };\nconst _sfc_main$1a = /* @__PURE__ */ defineComponent({\n __name: \"KdsSubText\",\n props: {\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"error\", \"validating\", \"preserveSubTextSpace\"]);\n return (_ctx, _cache) => {\n return props.subText || __props.preserveSubTextSpace ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: props.id,\n class: normalizeClass({\n subtext: true,\n error: __props.error\n })\n }, [\n __props.error && props.subText ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: \"circle-error\",\n size: \"small\",\n \"aria-label\": \"Error\"\n })) : __props.validating && props.subText ? (openBlock(), createBlock(KdsLoadingSpinner, {\n key: 1,\n size: \"small\",\n variant: \"onSurface\",\n \"aria-hidden\": \"true\"\n })) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_2$t, toDisplayString(props.subText), 1)\n ], 10, _hoisted_1$M)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nconst KdsSubText = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [[\"__scopeId\", \"data-v-2e6ba10c\"]]);\n\nconst _sfc_main$19 = /* @__PURE__ */ defineComponent({\n __name: \"BaseFormFieldWrapper\",\n props: {\n id: {},\n label: {},\n ariaLabel: {},\n description: {},\n subText: {},\n error: { type: Boolean },\n validating: { type: Boolean },\n preserveSubTextSpace: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fallbackId = useId();\n const inputId = computed(() => props.id?.trim() || fallbackId);\n const labelId = computed(() => `${inputId.value}-label`);\n const subTextId = computed(() => `${inputId.value}-subtext`);\n const isHovered = ref(false);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"kds-form-field\",\n onMouseenter: _cache[0] || (_cache[0] = ($event) => isHovered.value = true),\n onMouseleave: _cache[1] || (_cache[1] = ($event) => isHovered.value = false)\n }, [\n props.label ? (openBlock(), createBlock(KdsLabel, {\n key: 0,\n id: labelId.value,\n for: inputId.value,\n label: props.label,\n description: props.description,\n \"show-description-button\": isHovered.value\n }, null, 8, [\"id\", \"for\", \"label\", \"description\", \"show-description-button\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {\n id: inputId.value,\n ariaLabelledby: props.label ? labelId.value : void 0,\n ariaDescribedby: props.subText ? subTextId.value : void 0,\n ariaLabel: props.label ? void 0 : props.ariaLabel,\n ariaInvalid: props.error\n }, void 0, true),\n createVNode(KdsSubText, {\n id: subTextId.value,\n \"sub-text\": props.subText,\n error: props.error,\n validating: props.validating,\n \"preserve-sub-text-space\": props.preserveSubTextSpace\n }, null, 8, [\"id\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"])\n ], 32);\n };\n }\n});\n\nconst BaseFormFieldWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$19, [[\"__scopeId\", \"data-v-5d99c134\"]]);\n\nconst MIN_SEGMENT_INDEX = 0;\nconst LARGE_STEP = 10;\nconst DECIMAL_RADIX = 10;\nconst TRAILING_CLICK_TOLERANCE_PX = 2;\nconst isDigitChar = (char) => char !== void 0 && char >= \"0\" && char <= \"9\";\nlet sharedMeasureCanvas = null;\nconst isClickPastText = (input, event) => {\n if (typeof document === \"undefined\" || typeof globalThis === \"undefined\") {\n return false;\n }\n if (event.clientX === 0 && event.clientY === 0) {\n return false;\n }\n if (typeof input.getBoundingClientRect !== \"function\") {\n return false;\n }\n const rect = input.getBoundingClientRect();\n const getComputedStyle = input.ownerDocument?.defaultView?.getComputedStyle ?? (typeof globalThis.getComputedStyle === \"function\" ? globalThis.getComputedStyle : null);\n if (!getComputedStyle) {\n return false;\n }\n const style = getComputedStyle(input);\n const paddingLeft = Number.parseFloat(style.paddingLeft) || 0;\n const borderLeft = Number.parseFloat(style.borderLeftWidth) || 0;\n const clickX = event.clientX - rect.left - borderLeft - paddingLeft;\n sharedMeasureCanvas ??= document.createElement(\"canvas\");\n const ctx = sharedMeasureCanvas.getContext(\"2d\");\n if (!ctx) {\n return false;\n }\n ctx.font = style.font;\n const textWidth = ctx.measureText(input.value).width;\n return clickX > textWidth + TRAILING_CLICK_TOLERANCE_PX;\n};\nconst getSteppingDelta = (event) => {\n if (event.key === \"ArrowUp\") {\n return event.shiftKey ? LARGE_STEP : 1;\n }\n if (event.key === \"ArrowDown\") {\n return event.shiftKey ? -LARGE_STEP : -1;\n }\n if (event.key === \"PageUp\") {\n return LARGE_STEP;\n }\n if (event.key === \"PageDown\") {\n return -LARGE_STEP;\n }\n return null;\n};\nconst getSegmentLength = (segment) => segment.end - segment.start + 1;\nconst clampSegmentBuffer = (segment, buffer) => {\n const segmentLength = getSegmentLength(segment);\n if (buffer.length !== segmentLength) {\n return;\n }\n const value = Number(buffer.join(\"\"));\n if (!Number.isFinite(value)) {\n return;\n }\n let clamped = null;\n if (value > segment.max) {\n clamped = segment.max;\n } else if (value < segment.min) {\n clamped = segment.min;\n }\n if (clamped === null) {\n return;\n }\n const padded = String(clamped).padStart(segmentLength, \"0\");\n buffer.length = 0;\n for (const char of padded) {\n buffer.push(char);\n }\n};\nconst getMaxFirstDigit = (segment) => Math.floor(segment.max / DECIMAL_RADIX ** (getSegmentLength(segment) - 1));\nconst stepSegment = (segment, currentValue, delta) => {\n if (currentValue === void 0) {\n return delta >= 0 ? segment.min : segment.max;\n }\n const range = segment.max - segment.min + 1;\n const offset = currentValue - segment.min + delta;\n return (offset % range + range) % range + segment.min;\n};\nconst getSegmentAtPosition = (segments, position) => {\n for (let index = 0; index < segments.length; index++) {\n if (position >= segments[index].start && position <= segments[index].end) {\n return index;\n }\n }\n for (let index = 0; index < segments.length - 1; index++) {\n if (position > segments[index].end && position < segments[index + 1].start) {\n return index + 1;\n }\n }\n return position <= 0 ? MIN_SEGMENT_INDEX : segments.length - 1;\n};\nconst resolveClickedSegment = (segments, position) => {\n for (let index = 0; index < segments.length; index++) {\n if (position >= segments[index].start && position <= segments[index].end) {\n return index;\n }\n }\n for (let index = segments.length - 1; index >= 0; index--) {\n if (position > segments[index].end) {\n return index;\n }\n }\n return MIN_SEGMENT_INDEX;\n};\nconst spansMultipleSegments = (segments, start, end) => getSegmentAtPosition(segments, start) !== getSegmentAtPosition(segments, end);\nconst getInputSegmentDigitIndices = (segments) => segments.flatMap(\n (segment) => Array.from(\n { length: getSegmentLength(segment) },\n (_, index) => segment.start + index\n )\n);\nconst getInputSegmentsTemplateValue = (config) => config.template.join(\"\");\nconst isInputSegmentsEmpty = (displayValue, config) => getInputSegmentDigitIndices(config.segments).every(\n (index) => !isDigitChar(displayValue[index])\n);\nconst isInputSegmentsComplete = (displayValue, config) => getInputSegmentDigitIndices(config.segments).every(\n (index) => isDigitChar(displayValue[index])\n);\n\nconst createSegmentDndHandlers = (deps) => {\n const applyPastedText = (text) => {\n const config = deps.getConfig();\n if (!config) {\n return;\n }\n const normalizedText = config.parsePastedText?.(text);\n if (normalizedText?.length !== config.template.length) {\n return;\n }\n deps.fillBuffersFromString(normalizedText);\n deps.renderAll();\n deps.writeModelValue();\n deps.selectSegment(deps.getSegments().length - 1);\n };\n const handlePaste = (event) => {\n if (!deps.getConfig()) {\n return;\n }\n event.preventDefault();\n const text = event.clipboardData?.getData(\"text/plain\")?.trim() ?? \"\";\n applyPastedText(text);\n };\n const handleDrop = (event) => {\n if (!deps.getConfig()) {\n return;\n }\n event.preventDefault();\n const text = event.dataTransfer?.getData(\"text/plain\")?.trim() ?? \"\";\n applyPastedText(text);\n };\n const handleDragEnd = (event) => {\n if (!deps.getConfig()) {\n return;\n }\n if (event.dataTransfer?.dropEffect === \"move\") {\n const segments = deps.getSegments();\n const buffers = deps.getBuffers();\n for (let segmentIndex = 0; segmentIndex < segments.length; segmentIndex++) {\n buffers[segmentIndex].length = 0;\n deps.setAutoPadded(segmentIndex, false);\n }\n deps.renderAll();\n deps.writeModelValue();\n }\n };\n return { handlePaste, handleDrop, handleDragEnd };\n};\n\nconst createSegmentMouseHandlers = (deps) => {\n const handleFocus = () => {\n if (!deps.getConfig()) {\n return;\n }\n deps.cancelScheduledSelection();\n if (deps.getSkipFocusSelection()) {\n deps.setSkipFocusSelection(false);\n return;\n }\n deps.selectSegment(deps.getActiveSegmentIndex());\n };\n const handleBlur = () => {\n if (deps.getConfig()) {\n deps.normalizeSegment(deps.getActiveSegmentIndex());\n }\n };\n const handlePointerDown = () => {\n const input = deps.getConfig() && deps.getInputElement();\n if (!input) {\n return;\n }\n deps.cancelScheduledSelection();\n deps.setSkipFocusSelection(!input.matches(\":focus\"));\n };\n const handleClick = (event) => {\n const config = deps.getConfig();\n if (!config) {\n return;\n }\n deps.setSkipFocusSelection(false);\n const input = deps.getInputElement();\n if (!input) {\n return;\n }\n if (event.detail >= 2) {\n deps.cancelScheduledSelection();\n input.setSelectionRange(0, config.template.length);\n return;\n }\n const segments = deps.getSegments();\n const start = input.selectionStart ?? 0;\n const end = input.selectionEnd ?? 0;\n if (start !== end) {\n deps.cancelScheduledSelection();\n deps.normalizeSegment(deps.getActiveSegmentIndex());\n if (spansMultipleSegments(segments, start, end - 1)) {\n input.setSelectionRange(0, config.template.length);\n } else {\n deps.selectSegment(resolveClickedSegment(segments, start));\n }\n return;\n }\n deps.normalizeSegment(deps.getActiveSegmentIndex());\n if (isClickPastText(input, event)) {\n deps.cancelScheduledSelection();\n input.setSelectionRange(0, config.template.length);\n return;\n }\n deps.selectSegment(resolveClickedSegment(segments, start));\n };\n return { handleFocus, handleBlur, handlePointerDown, handleClick };\n};\n\nconst useInputSegments = (modelValue, getInputElement, configRef) => {\n let config = configRef.value;\n let segments = config?.segments ?? [];\n let buffers = segments.map(() => []);\n let autoPaddedSegments = segments.map(() => false);\n const chars = [];\n let activeSegmentIndex = MIN_SEGMENT_INDEX;\n let internalUpdate = false;\n let skipFocusSelection = false;\n let selectionRequestId = 0;\n let resetSegmentOnNextDigit = false;\n const renderSegment = (segmentIndex) => {\n const segment = segments[segmentIndex];\n const buffer = buffers[segmentIndex];\n const segmentLength = getSegmentLength(segment);\n const padLength = segmentLength - buffer.length;\n const fillCharacter = buffer.length > 0 ? \"0\" : void 0;\n for (let index = 0; index < segmentLength; index++) {\n chars[segment.start + index] = index < padLength ? fillCharacter ?? segment.template[index] : buffer[index - padLength];\n }\n };\n const renderAll = () => {\n for (let index = 0; index < segments.length; index++) {\n renderSegment(index);\n }\n };\n const writeModelValue = () => {\n const nextValue = chars.join(\"\");\n if (modelValue.value === nextValue) {\n return;\n }\n internalUpdate = true;\n modelValue.value = nextValue;\n nextTick(() => {\n internalUpdate = false;\n });\n };\n const fillBuffersFromString = (source) => {\n for (let segmentIndex = 0; segmentIndex < segments.length; segmentIndex++) {\n const segment = segments[segmentIndex];\n buffers[segmentIndex].length = 0;\n for (let index = segment.start; index <= segment.end; index++) {\n const char = source[index];\n if (isDigitChar(char)) {\n buffers[segmentIndex].push(char);\n }\n }\n }\n };\n const syncFromModel = (displayValue) => {\n if (!config) {\n return;\n }\n chars.length = 0;\n chars.push(...config.template);\n buffers = segments.map(() => []);\n autoPaddedSegments = segments.map(() => false);\n fillBuffersFromString(displayValue);\n renderAll();\n writeModelValue();\n };\n const setSegmentSelection = (segmentIndex) => {\n const segment = segments[segmentIndex];\n getInputElement()?.setSelectionRange(segment.start, segment.end + 1);\n };\n const scheduleSegmentSelection = (segmentIndex) => {\n const requestId = ++selectionRequestId;\n nextTick(() => {\n if (selectionRequestId !== requestId) {\n return;\n }\n setSegmentSelection(segmentIndex);\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(() => {\n if (selectionRequestId !== requestId) {\n return;\n }\n setSegmentSelection(segmentIndex);\n });\n }\n });\n };\n const cancelScheduledSelection = () => {\n selectionRequestId += 1;\n };\n const selectSegment = (segmentIndex, options = {}) => {\n activeSegmentIndex = segmentIndex;\n resetSegmentOnNextDigit = options.resetOnNextDigit ?? true;\n setSegmentSelection(segmentIndex);\n scheduleSegmentSelection(segmentIndex);\n };\n const clearAllBuffers = () => {\n for (const buffer of buffers) {\n buffer.length = 0;\n }\n };\n const normalizeSegment = (segmentIndex) => {\n const segment = segments[segmentIndex];\n const buffer = buffers[segmentIndex];\n if (getSegmentLength(segment) !== 2 || buffer.length !== 1) {\n return;\n }\n buffer.unshift(\"0\");\n autoPaddedSegments[segmentIndex] = true;\n clampSegmentBuffer(segment, buffer);\n renderSegment(segmentIndex);\n writeModelValue();\n };\n const clearAllAndReset = () => {\n clearAllBuffers();\n renderAll();\n writeModelValue();\n selectSegment(MIN_SEGMENT_INDEX, { resetOnNextDigit: false });\n };\n const handleTabNavigation = (event) => {\n if (event.key !== \"Tab\") {\n return false;\n }\n if (event.shiftKey) {\n normalizeSegment(activeSegmentIndex);\n if (activeSegmentIndex > 0) {\n event.preventDefault();\n selectSegment(activeSegmentIndex - 1);\n }\n } else if (activeSegmentIndex < segments.length - 1) {\n event.preventDefault();\n normalizeSegment(activeSegmentIndex);\n selectSegment(activeSegmentIndex + 1);\n } else {\n normalizeSegment(activeSegmentIndex);\n }\n return true;\n };\n const advanceOrStay = () => {\n if (activeSegmentIndex < segments.length - 1) {\n selectSegment(activeSegmentIndex + 1);\n } else {\n selectSegment(activeSegmentIndex, { resetOnNextDigit: false });\n }\n };\n const commitActiveSegment = () => {\n renderSegment(activeSegmentIndex);\n writeModelValue();\n selectSegment(activeSegmentIndex, { resetOnNextDigit: false });\n };\n const handleAutoPaddedOverwrite = (key) => {\n const buffer = buffers[activeSegmentIndex];\n buffer[0] = buffer[1];\n buffer[1] = key;\n autoPaddedSegments[activeSegmentIndex] = false;\n clampSegmentBuffer(segments[activeSegmentIndex], buffer);\n renderSegment(activeSegmentIndex);\n writeModelValue();\n advanceOrStay();\n };\n const appendDigitToBuffer = (key) => {\n const buffer = buffers[activeSegmentIndex];\n const segment = segments[activeSegmentIndex];\n const segmentLength = getSegmentLength(segment);\n if (buffer.length >= segmentLength) {\n buffer.length = 0;\n autoPaddedSegments[activeSegmentIndex] = false;\n }\n buffer.push(key);\n const isOverflowingFirstDigit = segmentLength <= 2 && buffer.length === 1 && Number(key) > getMaxFirstDigit(segment);\n const shouldAutoPadSingleDigit = segmentLength === 2 && buffer.length === 1;\n if (isOverflowingFirstDigit) {\n buffer.length = 0;\n buffer.push(\"0\", key);\n autoPaddedSegments[activeSegmentIndex] = false;\n return true;\n }\n if (shouldAutoPadSingleDigit) {\n buffer.length = 0;\n buffer.push(\"0\", key);\n autoPaddedSegments[activeSegmentIndex] = true;\n return false;\n }\n autoPaddedSegments[activeSegmentIndex] = false;\n return true;\n };\n const resetForSelectAll = () => {\n clearAllBuffers();\n renderAll();\n autoPaddedSegments = segments.map(() => false);\n activeSegmentIndex = MIN_SEGMENT_INDEX;\n resetSegmentOnNextDigit = false;\n };\n const handleDigitKey = (key, isSelectAll) => {\n if (!isDigitChar(key)) {\n return false;\n }\n if (isSelectAll) {\n resetForSelectAll();\n }\n if (resetSegmentOnNextDigit) {\n buffers[activeSegmentIndex].length = 0;\n autoPaddedSegments[activeSegmentIndex] = false;\n resetSegmentOnNextDigit = false;\n }\n const buffer = buffers[activeSegmentIndex];\n const segmentLength = getSegmentLength(segments[activeSegmentIndex]);\n if (autoPaddedSegments[activeSegmentIndex] && buffer.length === segmentLength) {\n handleAutoPaddedOverwrite(key);\n return true;\n }\n const shouldAutoAdvance = appendDigitToBuffer(key);\n if (buffer.length === segmentLength && !autoPaddedSegments[activeSegmentIndex]) {\n clampSegmentBuffer(segments[activeSegmentIndex], buffer);\n }\n renderSegment(activeSegmentIndex);\n writeModelValue();\n if (shouldAutoAdvance && buffer.length >= segmentLength && activeSegmentIndex < segments.length - 1) {\n selectSegment(activeSegmentIndex + 1);\n } else {\n selectSegment(activeSegmentIndex, { resetOnNextDigit: false });\n }\n return true;\n };\n const handleBackspace = (isSelectAll) => {\n if (isSelectAll) {\n clearAllAndReset();\n return true;\n }\n const buffer = buffers[activeSegmentIndex];\n if (autoPaddedSegments[activeSegmentIndex]) {\n buffer.length = 0;\n autoPaddedSegments[activeSegmentIndex] = false;\n commitActiveSegment();\n } else if (buffer.length > 0) {\n buffer.pop();\n commitActiveSegment();\n } else if (activeSegmentIndex > 0) {\n selectSegment(activeSegmentIndex - 1);\n }\n return true;\n };\n const handleDelete = (isSelectAll) => {\n if (isSelectAll) {\n clearAllAndReset();\n return true;\n }\n buffers[activeSegmentIndex].length = 0;\n autoPaddedSegments[activeSegmentIndex] = false;\n commitActiveSegment();\n return true;\n };\n const selectAllSegments = () => {\n if (!config) {\n return;\n }\n cancelScheduledSelection();\n normalizeSegment(activeSegmentIndex);\n getInputElement()?.setSelectionRange(0, config.template.length);\n };\n const handleArrowNavigation = (key) => {\n let target = null;\n if (key === \"ArrowLeft\") {\n target = activeSegmentIndex > 0 ? activeSegmentIndex - 1 : null;\n } else if (key === \"ArrowRight\") {\n target = activeSegmentIndex < segments.length - 1 ? activeSegmentIndex + 1 : null;\n } else if (key === \"Home\") {\n target = MIN_SEGMENT_INDEX;\n } else if (key === \"End\") {\n target = segments.length - 1;\n } else {\n return false;\n }\n if (target !== null) {\n normalizeSegment(activeSegmentIndex);\n selectSegment(target);\n }\n return true;\n };\n const handleStep = (delta) => {\n const segment = segments[activeSegmentIndex];\n const buffer = buffers[activeSegmentIndex];\n const segmentLength = getSegmentLength(segment);\n const currentValue = buffer.length > 0 ? Number(buffer.join(\"\")) : void 0;\n const next = stepSegment(segment, currentValue, delta);\n const padded = String(next).padStart(segmentLength, \"0\");\n buffer.length = 0;\n for (const digit of padded) {\n buffer.push(digit);\n }\n autoPaddedSegments[activeSegmentIndex] = false;\n renderSegment(activeSegmentIndex);\n writeModelValue();\n selectSegment(activeSegmentIndex, { resetOnNextDigit: true });\n };\n watch(\n configRef,\n (nextConfig) => {\n config = nextConfig;\n segments = config?.segments ?? [];\n buffers = segments.map(() => []);\n autoPaddedSegments = segments.map(() => false);\n activeSegmentIndex = MIN_SEGMENT_INDEX;\n resetSegmentOnNextDigit = false;\n if (!config) {\n return;\n }\n syncFromModel(modelValue.value);\n },\n { immediate: true }\n );\n watch(modelValue, (value) => {\n if (internalUpdate || !config) {\n return;\n }\n syncFromModel(value);\n });\n const { handleFocus, handleBlur, handlePointerDown, handleClick } = createSegmentMouseHandlers({\n getConfig: () => config,\n getInputElement,\n getSegments: () => segments,\n getActiveSegmentIndex: () => activeSegmentIndex,\n getSkipFocusSelection: () => skipFocusSelection,\n setSkipFocusSelection: (value) => {\n skipFocusSelection = value;\n },\n cancelScheduledSelection,\n normalizeSegment,\n selectSegment\n });\n const { handlePaste, handleDrop, handleDragEnd } = createSegmentDndHandlers({\n getConfig: () => config,\n getSegments: () => segments,\n getBuffers: () => buffers,\n setAutoPadded: (segmentIndex, value) => {\n autoPaddedSegments[segmentIndex] = value;\n },\n fillBuffersFromString,\n renderAll,\n writeModelValue,\n selectSegment\n });\n const PASSTHROUGH_KEYS = /* @__PURE__ */ new Set([\"Escape\", \"Enter\"]);\n const CLIPBOARD_KEYS = /* @__PURE__ */ new Set([\"a\", \"c\", \"v\", \"x\"]);\n const handleCut = (event) => {\n if (!config) {\n return;\n }\n const input = event.target;\n const start = input.selectionStart ?? 0;\n const end = input.selectionEnd ?? 0;\n if (start === end) {\n return;\n }\n event.preventDefault();\n cancelScheduledSelection();\n const selectedText = modelValue.value.slice(start, end);\n if (event.clipboardData) {\n event.clipboardData.setData(\"text/plain\", selectedText);\n } else if (typeof navigator !== \"undefined\" && navigator.clipboard?.writeText) {\n navigator.clipboard.writeText(selectedText).catch(() => void 0);\n }\n const isSelectAll = start === 0 && end >= config.template.length;\n if (isSelectAll) {\n clearAllAndReset();\n return;\n }\n let firstCleared = null;\n for (let index = 0; index < segments.length; index++) {\n const segment = segments[index];\n if (start <= segment.start && end >= segment.end + 1) {\n buffers[index].length = 0;\n autoPaddedSegments[index] = false;\n firstCleared ??= index;\n }\n }\n if (firstCleared === null) {\n selectSegment(activeSegmentIndex);\n } else {\n renderAll();\n writeModelValue();\n selectSegment(firstCleared, { resetOnNextDigit: false });\n }\n };\n const shouldPassthroughShortcut = (event) => {\n if (!event.ctrlKey && !event.metaKey) {\n return PASSTHROUGH_KEYS.has(event.key);\n }\n if (CLIPBOARD_KEYS.has(event.key.toLowerCase())) {\n cancelScheduledSelection();\n }\n return true;\n };\n const handleKeydown = (event) => {\n if (!config || event.isComposing) {\n return;\n }\n const input = event.target;\n const start = input.selectionStart ?? 0;\n const end = input.selectionEnd ?? 0;\n const isSelectAll = start === 0 && end >= config.template.length;\n if (handleTabNavigation(event) || shouldPassthroughShortcut(event)) {\n return;\n }\n if (handleDigitKey(event.key, isSelectAll)) {\n event.preventDefault();\n return;\n }\n if (event.key === \"Backspace\") {\n event.preventDefault();\n handleBackspace(isSelectAll);\n return;\n }\n if (event.key === \"Delete\") {\n event.preventDefault();\n handleDelete(isSelectAll);\n return;\n }\n const steppingDelta = getSteppingDelta(event);\n if (steppingDelta !== null) {\n event.preventDefault();\n handleStep(steppingDelta);\n return;\n }\n if (event.shiftKey && (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\")) {\n event.preventDefault();\n selectAllSegments();\n return;\n }\n if (handleArrowNavigation(event.key) || event.key.length === 1) {\n event.preventDefault();\n }\n };\n return {\n handleClick,\n handleBlur,\n handleFocus,\n handleKeydown,\n handleCut,\n handlePaste,\n handlePointerDown,\n handleDrop,\n handleDragEnd\n };\n};\n\nconst _hoisted_1$L = {\n key: 0,\n class: \"icon-wrapper leading\"\n};\nconst _hoisted_2$s = {\n key: 1,\n class: \"leading-slot\"\n};\nconst _hoisted_3$n = [\"id\", \"value\", \"type\", \"inputmode\", \"placeholder\", \"disabled\", \"autocomplete\", \"min\", \"max\", \"step\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-invalid\", \"role\", \"pattern\", \"aria-valuenow\", \"aria-valuemin\", \"aria-valuemax\", \"aria-valuetext\", \"aria-activedescendant\", \"aria-haspopup\", \"aria-controls\", \"aria-expanded\", \"aria-autocomplete\"];\nconst _hoisted_4$k = [\"aria-disabled\"];\nconst _hoisted_5$b = {\n key: 4,\n class: \"trailing-slot\"\n};\nconst _hoisted_6$9 = {\n key: 5,\n class: \"icon-wrapper trailing\"\n};\nconst _sfc_main$18 = /* @__PURE__ */ defineComponent({\n __name: \"BaseInput\",\n props: /* @__PURE__ */ mergeModels({\n id: {},\n type: { default: \"text\" },\n min: {},\n max: {},\n ariaExpanded: { type: Boolean, default: () => void 0 },\n step: {},\n placeholder: {},\n disabled: { type: Boolean, default: false },\n leadingIcon: {},\n trailingIcon: {},\n error: { type: Boolean, default: false },\n autocomplete: {},\n ariaLabel: {},\n ariaLabelledby: {},\n ariaDescribedby: {},\n ariaInvalid: { type: Boolean, default: () => void 0 },\n role: {},\n ariaValuenow: {},\n ariaValuemin: {},\n ariaValuemax: {},\n ariaValuetext: {},\n ariaActivedescendant: {},\n ariaHaspopup: {},\n ariaControls: {},\n ariaAutocomplete: {},\n unit: {},\n inputmode: {},\n clearable: { type: Boolean, default: false },\n pattern: {},\n segments: { default: () => void 0 }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"focus\", \"blur\", \"keydown\", \"input\", \"click\", \"paste\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"type\", \"disabled\", \"error\", \"clearable\", \"ariaExpanded\", \"ariaInvalid\", \"segments\"]);\n const emit = __emit;\n const modelValue = useModel(__props, \"modelValue\");\n const inputRef = useTemplateRef(\"input\");\n const {\n handleClick,\n handleBlur,\n handleFocus,\n handleKeydown,\n handleCut,\n handlePaste,\n handlePointerDown,\n handleDrop,\n handleDragEnd\n } = useInputSegments(\n modelValue,\n () => inputRef.value ?? null,\n computed(() => __props.segments)\n );\n const isEmptyMask = computed(\n () => Boolean(__props.segments) && isInputSegmentsEmpty(modelValue.value, __props.segments)\n );\n const hasValue = computed(\n () => __props.segments ? !isEmptyMask.value : modelValue.value.length > 0\n );\n const showUnitPlaceholder = computed(\n () => Boolean(props.unit) && modelValue.value.trim().length === 0\n );\n const shouldSyncSegmentedInputFromTarget = (event) => {\n if (typeof InputEvent === \"undefined\" || !(event instanceof InputEvent)) {\n return true;\n }\n if (event.isComposing) {\n return true;\n }\n const inputType = event.inputType ?? \"\";\n return inputType === \"\" || inputType === \"insertText\" || inputType === \"insertReplacementText\";\n };\n const handleInput = (event) => {\n const target = event.target;\n if (__props.segments) {\n if (shouldSyncSegmentedInputFromTarget(event)) {\n modelValue.value = target.value;\n } else {\n target.value = modelValue.value;\n }\n emit(\"input\", event);\n return;\n }\n modelValue.value = target.value;\n emit(\"input\", event);\n };\n const handleInputFocus = (event) => {\n handleFocus();\n emit(\"focus\", event);\n };\n const handleInputBlur = (event) => {\n handleBlur();\n emit(\"blur\", event);\n };\n const handleInputClick = (event) => {\n handleClick(event);\n emit(\"click\", event);\n };\n const handleInputPointerDown = () => {\n handlePointerDown();\n };\n const handleInputKeydown = (event) => {\n handleKeydown(event);\n emit(\"keydown\", event);\n };\n const handleInputPaste = (event) => {\n handlePaste(event);\n emit(\"paste\", event);\n };\n const handleInputCut = (event) => {\n handleCut(event);\n };\n const handleInputDrop = (event) => {\n handleDrop(event);\n };\n const handleInputDragEnd = (event) => {\n handleDragEnd(event);\n };\n const focusInput = (options) => {\n inputRef.value?.focus(options);\n };\n const clearAndFocusInput = () => {\n modelValue.value = \"\";\n focusInput();\n };\n const handleContainerClick = (event) => {\n if (event.clientX === 0 && event.clientY === 0) {\n return;\n }\n focusInput();\n };\n __expose({\n /**\n * Focuses the input element\n */\n focus: focusInput\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass({\n container: true,\n error: __props.error,\n disabled: __props.disabled\n }),\n onClick: handleContainerClick\n }, [\n props.leadingIcon ? (openBlock(), createElementBlock(\"div\", _hoisted_1$L, [\n props.leadingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: props.leadingIcon\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.leading ? (openBlock(), createElementBlock(\"div\", _hoisted_2$s, [\n renderSlot(_ctx.$slots, \"leading\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"input\", {\n id: props.id,\n ref: \"input\",\n value: modelValue.value,\n type: __props.type,\n inputmode: props.inputmode,\n placeholder: props.placeholder,\n disabled: __props.disabled,\n autocomplete: props.autocomplete,\n min: props.min,\n max: props.max,\n step: props.step,\n \"aria-label\": props.ariaLabel,\n \"aria-labelledby\": props.ariaLabelledby,\n \"aria-describedby\": props.ariaDescribedby,\n \"aria-invalid\": __props.ariaInvalid,\n role: props.role,\n pattern: props.pattern,\n \"aria-valuenow\": props.ariaValuenow,\n \"aria-valuemin\": props.ariaValuemin,\n \"aria-valuemax\": props.ariaValuemax,\n \"aria-valuetext\": props.ariaValuetext,\n \"aria-activedescendant\": props.ariaActivedescendant,\n \"aria-haspopup\": props.ariaHaspopup,\n \"aria-controls\": props.ariaControls,\n \"aria-expanded\": __props.ariaExpanded,\n \"aria-autocomplete\": props.ariaAutocomplete,\n class: normalizeClass({\n \"input-field\": true,\n \"has-value\": hasValue.value,\n \"empty-mask\": isEmptyMask.value\n }),\n onInput: handleInput,\n onPointerdown: handleInputPointerDown,\n onFocus: handleInputFocus,\n onBlur: handleInputBlur,\n onKeydown: handleInputKeydown,\n onClick: handleInputClick,\n onPaste: handleInputPaste,\n onCut: handleInputCut,\n onDrop: handleInputDrop,\n onDragend: handleInputDragEnd\n }, null, 42, _hoisted_3$n),\n props.unit ? (openBlock(), createElementBlock(\"span\", {\n key: 2,\n class: normalizeClass({\n unit: true,\n placeholder: showUnitPlaceholder.value,\n disabled: __props.disabled\n }),\n \"aria-disabled\": __props.disabled || void 0\n }, toDisplayString(props.unit), 11, _hoisted_4$k)) : createCommentVNode(\"\", true),\n __props.clearable && hasValue.value && !__props.disabled ? (openBlock(), createBlock(_sfc_main$1s, {\n key: 3,\n class: \"clear-button\",\n size: \"xsmall\",\n variant: \"transparent\",\n \"leading-icon\": \"x-close\",\n ariaLabel: \"Clear\",\n title: \"Clear\",\n onClick: withModifiers(clearAndFocusInput, [\"stop\"])\n })) : createCommentVNode(\"\", true),\n _ctx.$slots.trailing ? (openBlock(), createElementBlock(\"div\", _hoisted_5$b, [\n renderSlot(_ctx.$slots, \"trailing\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n props.trailingIcon ? (openBlock(), createElementBlock(\"div\", _hoisted_6$9, [\n createVNode(KdsIcon, {\n name: props.trailingIcon\n }, null, 8, [\"name\"])\n ])) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\n\nconst BaseInput = /* @__PURE__ */ _export_sfc(_sfc_main$18, [[\"__scopeId\", \"data-v-93daa14e\"]]);\n\nconst _sfc_main$17 = /* @__PURE__ */ defineComponent({\n __name: \"KdsTextInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n suggestions: {},\n suggestionsHeadline: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const baseInput = useTemplateRef(\"baseInput\");\n const popoverRef = useTemplateRef(\"popoverRef\");\n const listContainerRef = useTemplateRef(\"listContainerRef\");\n const popoverOpen = ref(false);\n const isFocused = ref(false);\n const hasSuggestions = computed(() => Boolean(props.suggestions?.length));\n const filteredSuggestions = computed(() => {\n if (!props.suggestions) {\n return [];\n }\n const query = modelValue.value.trim().toLowerCase();\n const suggestionOptions = props.suggestions.filter((s) => query.length === 0 || s.toLowerCase().includes(query)).map((s, index) => ({\n id: String(index),\n text: s\n }));\n if (props.suggestionsHeadline && suggestionOptions.length > 0) {\n suggestionOptions.unshift({\n id: \"suggestion-headline-id\",\n text: props.suggestionsHeadline,\n sectionHeadline: true\n });\n }\n return suggestionOptions;\n });\n const hasFilteredSuggestions = computed(\n () => filteredSuggestions.value.length > 0\n );\n const closePopover = () => {\n popoverOpen.value = false;\n listContainerRef.value?.handleBlur();\n };\n const onFocus = () => {\n isFocused.value = true;\n if (hasFilteredSuggestions.value) {\n popoverOpen.value = true;\n listContainerRef.value?.handleFocus();\n }\n };\n const onBlur = () => {\n isFocused.value = false;\n closePopover();\n };\n watch(hasFilteredSuggestions, (has) => {\n if (!isFocused.value) {\n return;\n }\n if (has) {\n popoverOpen.value = true;\n listContainerRef.value?.handleFocus();\n } else {\n closePopover();\n }\n });\n const onKeydown = (event) => {\n if (!hasFilteredSuggestions.value) {\n return;\n }\n if (!popoverOpen.value) {\n if (event.key !== \"Enter\" && event.key !== \"Escape\") {\n popoverOpen.value = true;\n listContainerRef.value?.handleFocus();\n }\n return;\n } else if (event.key === \"Escape\") {\n closePopover();\n event.preventDefault();\n return;\n }\n listContainerRef.value?.handleKeydown(event);\n };\n const onItemClick = (id) => {\n const option = filteredSuggestions.value.find((o) => o.id === id);\n if (option) {\n modelValue.value = option.text;\n }\n closePopover();\n };\n const suggestionId = useId();\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, {\n id: props.id,\n label: props.label,\n \"aria-label\": props.ariaLabel,\n description: props.description,\n \"sub-text\": props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n type: \"text\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: hasSuggestions.value ? \"off\" : props.autocomplete,\n role: hasSuggestions.value ? \"combobox\" : void 0,\n \"aria-haspopup\": hasSuggestions.value ? \"listbox\" : void 0,\n \"aria-expanded\": hasSuggestions.value ? popoverOpen.value : void 0,\n \"aria-autocomplete\": hasSuggestions.value ? \"list\" : void 0,\n \"aria-controls\": hasSuggestions.value ? unref(suggestionId) : void 0,\n \"aria-activedescendant\": listContainerRef.value?.activeDescendant,\n style: hasSuggestions.value ? popoverRef.value?.anchorStyle : void 0,\n onFocus,\n onBlur,\n onKeydown\n }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\", \"role\", \"aria-haspopup\", \"aria-expanded\", \"aria-autocomplete\", \"aria-controls\", \"aria-activedescendant\", \"style\"]),\n hasSuggestions.value ? (openBlock(), createBlock(KdsPopover, {\n key: 0,\n ref_key: \"popoverRef\",\n ref: popoverRef,\n modelValue: popoverOpen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => popoverOpen.value = $event),\n placement: \"bottom-left\",\n \"full-width\": \"\",\n \"popover-type\": \"manual\"\n }, {\n default: withCtx(() => [\n createVNode(unref(KdsListContainer), {\n id: unref(suggestionId),\n ref_key: \"listContainerRef\",\n ref: listContainerRef,\n class: \"kds-text-input-suggestions\",\n \"possible-values\": filteredSuggestions.value,\n \"controlled-externally\": \"\",\n \"aria-label\": \"Suggestions\",\n onItemClick\n }, null, 8, [\"id\", \"possible-values\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"aria-label\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsTextInput = /* @__PURE__ */ _export_sfc(_sfc_main$17, [[\"__scopeId\", \"data-v-83f45d15\"]]);\n\nconst _sfc_main$16 = defineComponent({\n name: \"FileExplorerItemBase\",\n props: {\n isSelected: {\n type: Boolean,\n required: true\n },\n isDragging: {\n type: Boolean,\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n }\n});\n\nconst _hoisted_1$K = [\"aria-disabled\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"tr\", {\n class: normalizeClass([\"file-explorer-item-base\", {\n selected: !_ctx.isDragging && _ctx.isSelected,\n dragging: _ctx.isDragging && _ctx.isSelected,\n \"anything-is-dragged\": _ctx.isDragging,\n disabled: _ctx.disabled\n }]),\n \"data-test-id\": \"file-explorer-item\",\n \"aria-disabled\": _ctx.disabled ? \"true\" : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1$K);\n}\nconst FileExplorerItemBase = /* @__PURE__ */ _export_sfc(_sfc_main$16, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-aad38d13\"]]);\n\nconst INVALID_NAME_CHARACTERS = /[*?#:\";<>%~|/\\\\]/;\nconst NAME_CHAR_LIMIT = 255;\nconst UNAVAILABLE_NAME_DEFAULT_MSG = \"Name is already in use\";\nconst useNameValidator = (options) => {\n const cleanName = (value) => value.trim();\n const cleanedName = computed(() => cleanName(options.name.value));\n const startsWithDot = computed(() => cleanedName.value.startsWith(\".\"));\n const endsWithDot = computed(() => cleanedName.value.endsWith(\".\"));\n const isValidName = computed(() => {\n return !startsWithDot.value && !endsWithDot.value && !INVALID_NAME_CHARACTERS.test(cleanedName.value) && cleanedName.value.length <= NAME_CHAR_LIMIT;\n });\n const isNameAvailable = computed(\n () => !options.blacklistedNames.value.includes(cleanedName.value)\n );\n const isValid = computed(() => isValidName.value && isNameAvailable.value);\n const errorMessage = computed(() => {\n if (startsWithDot.value) {\n return \"Name cannot start with a dot (.)\";\n }\n if (endsWithDot.value) {\n return \"Name cannot end with a dot (.)\";\n }\n if (!isValidName.value) {\n return 'Name contains invalid characters *?#:\";<>%~|/\\\\ or exceeds 255 characters';\n }\n if (!isNameAvailable.value) {\n return options.unavailableNameMessage || UNAVAILABLE_NAME_DEFAULT_MSG;\n }\n return \"\";\n });\n return {\n isValid,\n errorMessage,\n cleanedName\n };\n};\n\nconst filterSlotsForDynamicColumns = (slots) => {\n const result = {};\n for (const [key, value] of Object.entries(slots)) {\n if (key.startsWith(\"dynamicColumn\")) {\n result[key] = value;\n }\n }\n return result;\n};\n\nconst _hoisted_1$J = { class: \"item-icon\" };\nconst _hoisted_2$r = {\n key: 0,\n class: \"open-indicator\"\n};\nconst _hoisted_3$m = [\"title\"];\nconst _hoisted_4$j = {\n key: 0,\n class: \"inner\"\n};\nconst _hoisted_5$a = {\n key: 0,\n class: \"item-error\"\n};\nconst _hoisted_6$8 = { class: \"inner\" };\nconst _hoisted_7$2 = {\n key: 0,\n class: /* @__PURE__ */ normalizeClass([\"column\"])\n};\nconst _sfc_main$15 = /* @__PURE__ */ defineComponent({\n __name: \"FileExplorerItem\",\n props: {\n blacklistedNames: {},\n item: {},\n isSelected: { type: Boolean },\n isDragging: { type: Boolean },\n isRenameActive: { type: Boolean },\n disabled: { type: Boolean },\n isDraggingEnabled: { type: Boolean, default: true },\n hasOptionsMenu: { type: Boolean }\n },\n emits: [\"dblclick\", \"click\", \"dragstart\", \"dragenter\", \"dragover\", \"drag\", \"dragleave\", \"dragend\", \"drop\", \"contextmenu\", \"rename:submit\", \"rename:clear\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const { isRenameActive, blacklistedNames } = toRefs(props);\n const emit = __emit;\n const renameInput = useTemplateRef(\"renameInput\");\n const renameValue = ref(\"\");\n const { isValid, errorMessage, cleanedName } = useNameValidator({\n blacklistedNames,\n name: renameValue\n });\n const setupRenameInput = async () => {\n renameValue.value = props.item.name;\n await nextTick();\n const inputElement = renameInput.value?.$el.querySelector(\"input\");\n if (inputElement) {\n inputElement?.setSelectionRange(0, renameValue.value.length);\n inputElement?.focus();\n }\n };\n watch(isRenameActive, async (isActive) => {\n if (isActive) {\n await setupRenameInput();\n }\n });\n const baseItem = ref();\n const focusItem = async () => {\n await nextTick();\n baseItem.value?.$el.focus();\n };\n const doRename = () => {\n if (!isValid.value) {\n return;\n }\n const newName = cleanedName.value;\n const isSameName = newName === props.item.name;\n if (newName === \"\" || isSameName) {\n emit(\"rename:clear\");\n focusItem();\n return;\n }\n emit(\"rename:submit\", {\n itemId: props.item.id,\n newName\n });\n emit(\"rename:clear\");\n focusItem();\n };\n const onRenameSubmit = (keydownEvent) => {\n if (keydownEvent.key === \"Escape\") {\n emit(\"rename:clear\");\n focusItem();\n }\n if (keydownEvent.key === \"Enter\") {\n doRename();\n }\n };\n const renameInputContainer = useTemplateRef(\"renameInputContainer\");\n onClickOutside(renameInputContainer, () => {\n doRename();\n });\n const slots = useSlots();\n const dynamicColumnSlotNames = computed(\n () => Object.keys(filterSlotsForDynamicColumns(slots))\n );\n return (_ctx, _cache) => {\n return openBlock(), createBlock(FileExplorerItemBase, {\n ref_key: \"baseItem\",\n ref: baseItem,\n class: normalizeClass([\"file-explorer-item\", {\n disabled: __props.disabled,\n \"has-options-menu\": props.hasOptionsMenu\n }]),\n \"is-dragging\": __props.isDragging,\n \"is-selected\": __props.isSelected,\n draggable: __props.isDraggingEnabled && !unref(isRenameActive),\n disabled: __props.disabled,\n onDragstart: _cache[2] || (_cache[2] = ($event) => !unref(isRenameActive) && emit(\"dragstart\", $event)),\n onDragenter: _cache[3] || (_cache[3] = ($event) => !unref(isRenameActive) && emit(\"dragenter\", $event)),\n onDragover: _cache[4] || (_cache[4] = ($event) => emit(\"dragover\", $event)),\n onDragleave: _cache[5] || (_cache[5] = ($event) => !unref(isRenameActive) && emit(\"dragleave\", $event)),\n onDragend: _cache[6] || (_cache[6] = ($event) => !unref(isRenameActive) && emit(\"dragend\", $event)),\n onDrag: _cache[7] || (_cache[7] = ($event) => emit(\"drag\", $event)),\n onClick: _cache[8] || (_cache[8] = ($event) => emit(\"click\", $event)),\n onContextmenu: _cache[9] || (_cache[9] = withModifiers(($event) => !unref(isRenameActive) && emit(\"contextmenu\", $event), [\"prevent\"])),\n onDrop: _cache[10] || (_cache[10] = withModifiers(($event) => !unref(isRenameActive) && emit(\"drop\", $event), [\"prevent\"])),\n onDblclick: _cache[11] || (_cache[11] = ($event) => !unref(isRenameActive) && emit(\"dblclick\", $event))\n }, {\n default: withCtx(() => [\n createElementVNode(\"td\", _hoisted_1$J, [\n __props.item.isOpen ? (openBlock(), createElementBlock(\"span\", _hoisted_2$r)) : createCommentVNode(\"\", true),\n createVNode(KdsIcon, {\n name: __props.item.icon || (__props.item.isDirectory ? \"folder\" : \"file\"),\n size: \"small\"\n }, null, 8, [\"name\"])\n ]),\n createElementVNode(\"td\", {\n class: normalizeClass([\"column\", {\n light: !__props.item.isDirectory,\n \"rename-active\": unref(isRenameActive)\n }]),\n \"data-test-id\": \"item-name\",\n title: __props.item.name\n }, [\n !unref(isRenameActive) ? (openBlock(), createElementBlock(\"div\", _hoisted_4$j, toDisplayString(__props.item.name), 1)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n ref_key: \"renameInputContainer\",\n ref: renameInputContainer,\n class: \"rename-input-container\"\n }, [\n createVNode(KdsTextInput, {\n ref_key: \"renameInput\",\n ref: renameInput,\n modelValue: renameValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => renameValue.value = $event),\n class: \"rename-input\",\n type: \"text\",\n title: \"rename\",\n ariaLabel: \"rename input\",\n error: !unref(isValid),\n onKeydown: _cache[1] || (_cache[1] = withModifiers(($event) => onRenameSubmit($event), [\"stop\"]))\n }, null, 8, [\"modelValue\", \"error\"]),\n !unref(isValid) ? (openBlock(), createElementBlock(\"div\", _hoisted_5$a, [\n createElementVNode(\"span\", null, toDisplayString(unref(errorMessage)), 1)\n ])) : createCommentVNode(\"\", true)\n ], 512))\n ], 10, _hoisted_3$m),\n (openBlock(true), createElementBlock(Fragment, null, renderList(dynamicColumnSlotNames.value, (name) => {\n return openBlock(), createElementBlock(\"td\", {\n key: `dynamicColumn-${name}`,\n class: normalizeClass([\"column\", \"dynamic-column\"])\n }, [\n createElementVNode(\"div\", _hoisted_6$8, [\n renderSlot(_ctx.$slots, name, {\n isRenameActive: unref(isRenameActive),\n isSelected: __props.isSelected\n }, void 0, true)\n ])\n ]);\n }), 128)),\n _ctx.$slots.optionsMenu ? (openBlock(), createElementBlock(\"td\", _hoisted_7$2, [\n renderSlot(_ctx.$slots, \"optionsMenu\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"class\", \"is-dragging\", \"is-selected\", \"draggable\", \"disabled\"]);\n };\n }\n});\n\nconst FileExplorerItem = /* @__PURE__ */ _export_sfc(_sfc_main$15, [[\"__scopeId\", \"data-v-91cbcaae\"]]);\n\nconst _sfc_main$14 = /* @__PURE__ */ defineComponent({\n __name: \"FileExplorerItemBack\",\n props: {\n isDragging: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(FileExplorerItemBase, {\n \"is-dragging\": __props.isDragging,\n \"is-selected\": false,\n class: \"file-explorer-item-back\",\n title: \"Go back\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"td\", null, [\n createVNode(KdsIcon, {\n name: \"back\",\n size: \"small\"\n })\n ]),\n _cache[0] || (_cache[0] = createElementVNode(\"td\", { class: \"item-name hidden\" }, \"Go back to parent directory\", -1))\n ]),\n _: 1\n }, 8, [\"is-dragging\"]);\n };\n }\n});\n\nconst FileExplorerItemBack = /* @__PURE__ */ _export_sfc(_sfc_main$14, [[\"__scopeId\", \"data-v-a5de970a\"]]);\n\nconst getInitialState = () => ({\n anchorHistory: [],\n anchorExceptions: [],\n selectionRanges: []\n});\nconst mergeStates = (initialState, newState) => ({ ...initialState, ...newState });\nconst isMultipleSelectionActive = (state, initialElement) => {\n const { selectionRanges } = state;\n if (selectionRanges.length === 1) {\n const [firstRange] = selectionRanges;\n const { from, to } = firstRange;\n if (from === to && from === initialElement) {\n return false;\n }\n }\n return selectionRanges.length !== 0;\n};\nconst isItemSelected = (state, item) => {\n const { selectionRanges, anchorExceptions } = state;\n const isInRange = selectionRanges.find(\n (range) => range.from <= item && range.to >= item\n );\n return Boolean(isInRange) && !anchorExceptions.includes(item);\n};\nconst ctrlClick = (state, clickedItem) => {\n const { anchorHistory, selectionRanges, anchorExceptions } = state;\n const withUpdatedAnchorHistory = mergeStates(state, {\n anchorHistory: [...anchorHistory, clickedItem]\n });\n const isSelected = isItemSelected(state, clickedItem);\n if (!isSelected) {\n const newRange = {\n from: clickedItem,\n to: clickedItem\n };\n const alreadyInRange = selectionRanges.find(\n ({ from, to }) => from <= newRange.from && newRange.to <= to\n );\n const newSelectionRanges = alreadyInRange ? selectionRanges : [...selectionRanges, newRange];\n return mergeStates(withUpdatedAnchorHistory, {\n selectionRanges: newSelectionRanges,\n // make sure to remove the element from the anchor exceptions in case it\n // was already in there\n anchorExceptions: anchorExceptions.filter((ex) => ex !== clickedItem)\n });\n }\n if (isSelected) {\n return mergeStates(withUpdatedAnchorHistory, {\n anchorExceptions: [...anchorExceptions, clickedItem]\n });\n }\n return state;\n};\nconst shiftClick = (state, clickedItem) => {\n const { anchorHistory, selectionRanges, anchorExceptions } = state;\n if (selectionRanges.length === 0) {\n const newRange = {\n from: clickedItem,\n to: clickedItem\n };\n return mergeStates(state, {\n selectionRanges: [...selectionRanges, newRange],\n anchorHistory: [...anchorHistory, clickedItem]\n });\n }\n const [lastAnchor] = anchorHistory.slice(-1);\n const updatedExceptions = anchorExceptions.filter((exception) => {\n const lowerBound = Math.min(lastAnchor, clickedItem);\n const upperBound = Math.max(lastAnchor, clickedItem);\n return !(lowerBound <= exception && exception <= upperBound);\n });\n const withUpdatedExceptions = mergeStates(state, {\n anchorExceptions: updatedExceptions\n });\n const isRangeFound = selectionRanges.find(\n ({ from, to }) => from === lastAnchor || to === lastAnchor\n );\n if (isRangeFound) {\n const newSelectionRanges = selectionRanges.map(({ from, to }) => {\n const sameFrom = from === lastAnchor;\n const sameTo = to === lastAnchor;\n return sameFrom || sameTo ? (\n // make sure the \"from\" is always the smallest number\n {\n from: Math.min(lastAnchor, clickedItem),\n to: Math.max(lastAnchor, clickedItem)\n }\n ) : (\n // otherwise, if it's not the range we're looking for, keep it as is\n { from, to }\n );\n });\n return mergeStates(withUpdatedExceptions, {\n selectionRanges: newSelectionRanges\n });\n } else {\n const newRange = {\n // again, make sure the smallest number is the \"from\" property\n from: Math.min(lastAnchor, clickedItem),\n to: Math.max(lastAnchor, clickedItem)\n };\n return mergeStates(withUpdatedExceptions, {\n selectionRanges: [...selectionRanges, newRange]\n });\n }\n};\nconst click = (clickedItem) => {\n const state = {\n anchorExceptions: [],\n anchorHistory: [clickedItem],\n selectionRanges: [{ from: clickedItem, to: clickedItem }]\n };\n return mergeStates(getInitialState(), state);\n};\nconst sliceOnExceptions = (state) => {\n const { anchorExceptions, selectionRanges } = state;\n const rawOutput = anchorExceptions.reduce((ranges, exception) => {\n const rangeContainingException = ranges.find(\n ({ from, to }) => from <= exception && exception <= to\n );\n if (rangeContainingException) {\n const { from, to } = rangeContainingException;\n const newRanges = ranges.reduce((acc, range) => {\n const isRangeWithException = range.from === from && range.to === to;\n if (isRangeWithException) {\n const isExceptionFrom = exception === from;\n const isExceptionTo = exception === to;\n const headRangeSlice = {\n from: isExceptionFrom ? exception : from,\n to: isExceptionFrom ? exception : exception - 1\n };\n const tailRangeSlice = {\n from: isExceptionTo ? exception : exception + 1,\n to: isExceptionTo ? exception : to\n };\n return acc.concat(headRangeSlice, tailRangeSlice);\n }\n return acc.concat(range);\n }, []);\n return newRanges;\n }\n return ranges;\n }, selectionRanges);\n return rawOutput.filter(\n (range) => !anchorExceptions.includes(range.from) && !anchorExceptions.includes(range.to)\n );\n};\nconst normalizeRanges = (state) => {\n const slicedByExceptions = sliceOnExceptions(state);\n if (slicedByExceptions.length === 0) {\n return [];\n }\n const sortedRanges = slicedByExceptions.sort((a, b) => {\n if (a.from === b.from) {\n return a.to - b.to;\n }\n return a.from - b.from;\n });\n const mergedRanges = [];\n let currentRange = sortedRanges[0];\n for (let i = 1; i < sortedRanges.length; i++) {\n const nextRange = sortedRanges[i];\n if (nextRange.from <= currentRange.to) {\n currentRange.to = Math.max(currentRange.to, nextRange.to);\n } else {\n mergedRanges.push(currentRange);\n currentRange = nextRange;\n }\n }\n mergedRanges.push(currentRange);\n return mergedRanges;\n};\nconst getSelectedIndexes = (state) => {\n const selectionRanges = normalizeRanges(state);\n return selectionRanges.reduce((acc, range) => {\n const { to, from } = range;\n const rangeSize = to - from;\n const indexesInRange = new Array(rangeSize).fill(0).reduce(\n (acc2) => {\n const [previous] = acc2.slice(-1);\n return acc2.concat(previous + 1);\n },\n [from]\n );\n return acc.concat(indexesInRange);\n }, []);\n};\n\nconst PAGE_SIZE = 15;\nconst INVALID_INDEX = -Infinity;\nconst useFocusableMultiSelection = (options) => {\n const multiSelectionState = ref(\n getInitialState()\n );\n const focusedIndex = ref(INVALID_INDEX);\n const skippedIndices = computed(() => options.skippedIndices?.value ?? []);\n const isSelected = (index) => !skippedIndices.value.includes(index) && isItemSelected(multiSelectionState.value, index);\n const selectedIndexes = computed(\n () => getSelectedIndexes(multiSelectionState.value).filter((index) => !skippedIndices.value.includes(index))\n );\n const isMultipleSelectionActive$1 = (index) => isMultipleSelectionActive(\n multiSelectionState.value,\n index\n );\n const resetSelection = (focusIndex = 0) => {\n const lastIndex = options.numberOfItems.value - 1;\n focusedIndex.value = Math.min(\n Math.max(focusIndex, options.startIndex.value),\n lastIndex\n );\n multiSelectionState.value = getInitialState();\n };\n const clickItem = (index) => {\n multiSelectionState.value = click(index);\n };\n const ctrlClickItem = (index) => {\n multiSelectionState.value = ctrlClick(\n multiSelectionState.value,\n index\n );\n };\n const shiftClickItem = (index) => {\n multiSelectionState.value = shiftClick(\n multiSelectionState.value,\n index\n );\n };\n const handleSelectionClick = (index, event = null, handleCtrl = true) => {\n if (options.disabled) {\n return;\n }\n if (index < options.startIndex.value || index >= options.numberOfItems.value) {\n return;\n }\n focusedIndex.value = index;\n if (index === -1) {\n resetSelection(-1);\n return;\n }\n if (!event || options.singleSelectionOnly.value) {\n clickItem(index);\n return;\n }\n const metaOrCtrlKey = getMetaOrCtrlKey();\n if (event.shiftKey) {\n shiftClickItem(index);\n return;\n }\n if (event[metaOrCtrlKey]) {\n if (handleCtrl) {\n ctrlClickItem(index);\n }\n return;\n }\n clickItem(index);\n };\n const unskippedIndices = computed(() => {\n const allIndices = Array.from(\n { length: options.numberOfItems.value },\n (_, i) => i\n );\n if (skippedIndices.value.length) {\n return allIndices.filter((i) => !skippedIndices.value.includes(i));\n }\n return allIndices;\n });\n const nextNonSkippedIndex = (startIndex, increment) => {\n if (unskippedIndices.value.length === 0 || increment === 0) {\n return startIndex;\n }\n const targetIndex = startIndex + increment;\n if (increment < 0) {\n return unskippedIndices.value.findLast((val) => val <= targetIndex) ?? unskippedIndices.value[0];\n } else {\n return unskippedIndices.value.find((val) => val >= targetIndex) ?? unskippedIndices.value.at(-1);\n }\n };\n const nextNonSkippedIndexOrMinusOne = (startIndex, increment) => {\n if (startIndex === -1 && increment < 0) {\n return -1;\n }\n const nextIndex = nextNonSkippedIndex(startIndex, increment);\n if (nextIndex === startIndex) {\n return -1;\n } else {\n return nextIndex;\n }\n };\n const handleKeyboardNavigation = (event) => {\n if (!event) {\n return;\n }\n const metaOrCtrl = getMetaOrCtrlKey();\n const isHandledKey = [\n \"Enter\",\n \" \",\n \"ArrowUp\",\n \"ArrowDown\",\n \"PageUp\",\n \"PageDown\",\n \"End\",\n \"Home\"\n ].includes(event.key);\n if (isHandledKey) {\n event.preventDefault();\n if (event[metaOrCtrl] || event.shiftKey) {\n event.stopPropagation();\n }\n }\n const index = Math.max(focusedIndex.value, options.startIndex.value);\n switch (event.key) {\n case \"ArrowUp\":\n handleSelectionClick(\n nextNonSkippedIndexOrMinusOne(index, -1),\n event,\n false\n );\n break;\n case \"PageUp\":\n handleSelectionClick(\n nextNonSkippedIndex(index, -PAGE_SIZE),\n event,\n false\n );\n break;\n case \"PageDown\":\n handleSelectionClick(\n nextNonSkippedIndex(index, PAGE_SIZE),\n event,\n false\n );\n break;\n case \"End\":\n handleSelectionClick(\n nextNonSkippedIndex(index, Infinity),\n event,\n false\n );\n break;\n case \"Home\":\n handleSelectionClick(\n nextNonSkippedIndex(index, -Infinity),\n event,\n false\n );\n break;\n case \"ArrowDown\":\n handleSelectionClick(nextNonSkippedIndex(index, 1), event, false);\n break;\n case \"Enter\":\n if (event[metaOrCtrl] && !options.singleSelectionOnly.value) {\n ctrlClickItem(index);\n }\n break;\n case \" \":\n if (!options.singleSelectionOnly.value) {\n ctrlClickItem(index);\n }\n break;\n }\n };\n return {\n multiSelectionState,\n isSelected,\n selectedIndexes,\n isMultipleSelectionActive: isMultipleSelectionActive$1,\n resetSelection,\n handleSelectionClick,\n ctrlClickItem,\n handleKeyboardNavigation,\n focusedIndex\n };\n};\n\nfunction addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n\nconst clamp$1 = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nfunction formatErrorMessage(message, errorCode) {\n return errorCode\n ? `${message}. For more information and steps for solving, visit https://motion.dev/troubleshooting/${errorCode}`\n : message;\n}\n\nlet warning = () => { };\nlet invariant = () => { };\nif (typeof process !== \"undefined\" &&\n process.env?.NODE_ENV !== \"production\") {\n warning = (check, message, errorCode) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(formatErrorMessage(message, errorCode));\n }\n };\n invariant = (check, message, errorCode) => {\n if (!check) {\n throw new Error(formatErrorMessage(message, errorCode));\n }\n };\n}\n\nconst MotionGlobalConfig = {};\n\n/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nconst isObject = (value) => typeof value === \"object\" && value !== null;\n\n/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nconst noop$1 = (any) => any;\n\n/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst pipe = (...transformers) => transformers.reduce((a, b) => (v) => b(a(v)));\n\n/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst progress = (from, to, value) => {\n const range = to - from;\n return range ? (value - from) / range : 1;\n};\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\n/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n/*#__NO_SIDE_EFFECTS__*/\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n/*#__NO_SIDE_EFFECTS__*/\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\n/*\n Convert velocity into velocity per second\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst velocityPerSecond = (velocity, frameDuration) => frameDuration ? velocity * (1000 / frameDuration) : 0;\n\nconst warned = new Set();\nfunction warnOnce(condition, message, errorCode) {\n if (condition || warned.has(message))\n return;\n console.warn(formatErrorMessage(message, errorCode));\n warned.add(message);\n}\n\nconst wrap = (min, max, v) => {\n const rangeSize = max - min;\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticeably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop$1;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\n/*#__NO_SIDE_EFFECTS__*/\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\n/*#__NO_SIDE_EFFECTS__*/\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nconst backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ mirrorEasing(backIn);\n\nconst anticipate = (p) => p >= 1\n ? 1\n : (p *= 2) < 1\n ? 0.5 * backIn(p)\n : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nconst easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\n/*#__NO_SIDE_EFFECTS__*/\nconst isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getEasingForSegment(easing, i) {\n return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nconst isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nconst easingLookup = {\n linear: noop$1,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst isValidEasing = (easing) => {\n return typeof easing === \"string\";\n};\nconst easingDefinitionToFunction = (definition) => {\n if (isBezierDefinition(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`, \"cubic-bezier-length\");\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (isValidEasing(definition)) {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`, \"invalid-easing-type\");\n return easingLookup[definition];\n }\n return definition;\n};\n\nconst stepsOrder = [\n \"setup\", // Compute\n \"read\", // Read\n \"resolveKeyframes\", // Write/Read/Write/Read\n \"preUpdate\", // Compute\n \"update\", // Compute\n \"preRender\", // Compute\n \"render\", // Write\n \"postRender\", // Compute\n];\n\nfunction createRenderStep(runNextFrame, stepName) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Set();\n let nextFrame = new Set();\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n let latestFrameData = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n function triggerCallback(callback) {\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(latestFrameData);\n }\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n queue.add(callback);\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.delete(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n latestFrameData = frameData;\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n // Swap this frame and the next to avoid GC\n const prevFrame = thisFrame;\n thisFrame = nextFrame;\n nextFrame = prevFrame;\n // Execute this frame\n thisFrame.forEach(triggerCallback);\n // Clear the frame so no callbacks remain. This is to avoid\n // memory leaks should this render step not run for a while.\n thisFrame.clear();\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n const flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame);\n return acc;\n }, {});\n const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender, } = steps;\n const processBatch = () => {\n const useManualTiming = MotionGlobalConfig.useManualTiming;\n const timestamp = useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n if (!useManualTiming) {\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n }\n state.timestamp = timestamp;\n state.isProcessing = true;\n // Unrolled render loop for better per-frame performance\n setup.process(state);\n read.process(state);\n resolveKeyframes.process(state);\n preUpdate.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData} = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop$1, true);\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nconst checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = \n/*@__PURE__*/ checkStringStartsWith(\"--\");\nconst startsAsVariableToken = \n/*@__PURE__*/ checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n const startsWithToken = startsAsVariableToken(value);\n if (!startsWithToken)\n return false;\n // Ensure any comments are stripped from the value as this can harm performance of the regex.\n return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n/**\n * Check if a value contains a CSS variable anywhere (e.g. inside calc()).\n * Unlike isCSSVariableToken which checks if the value IS a var() token,\n * this checks if the value CONTAINS var() somewhere in the string.\n */\nfunction containsCSSVariable(value) {\n if (typeof value !== \"string\")\n return false;\n // Strip comments to avoid false positives\n return value.split(\"/*\")[0].includes(\"var(--\");\n}\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp$1(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\n\nconst floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\nfunction isNullish(v) {\n return v == null;\n}\n\nconst singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((typeof v === \"string\" &&\n singleColorRegex.test(v) &&\n v.startsWith(type)) ||\n (testProp &&\n !isNullish(v) &&\n Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (typeof v !== \"string\")\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nconst clampRgbUnit = (v) => clamp$1(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n parse: /*@__PURE__*/ splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: /*@__PURE__*/ isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\n/*#__NO_SIDE_EFFECTS__*/\nconst createUnitType = (unit) => ({\n test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ createUnitType(\"vw\");\nconst progressPercentage = /*@__PURE__*/ (() => ({\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n}))();\n\nconst hsla = {\n test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n parse: /*@__PURE__*/ splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return typeof v === \"string\"\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n getAnimatableNone: (v) => {\n const parsed = color.parse(v);\n parsed.alpha = 0;\n return color.transform(parsed);\n },\n};\n\nconst colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\nfunction test(v) {\n return (isNaN(v) &&\n typeof v === \"string\" &&\n (v.match(floatRegex)?.length || 0) +\n (v.match(colorRegex)?.length || 0) >\n 0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const values = [];\n const indexes = {\n color: [],\n number: [],\n var: [],\n };\n const types = [];\n let i = 0;\n const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n if (color.test(parsedValue)) {\n indexes.color.push(i);\n types.push(COLOR_TOKEN);\n values.push(color.parse(parsedValue));\n }\n else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n indexes.var.push(i);\n types.push(VAR_TOKEN);\n values.push(parsedValue);\n }\n else {\n indexes.number.push(i);\n types.push(NUMBER_TOKEN);\n values.push(parseFloat(parsedValue));\n }\n ++i;\n return SPLIT_TOKEN;\n });\n const split = tokenised.split(SPLIT_TOKEN);\n return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction buildTransformer({ split, types }) {\n const numSections = split.length;\n return (v) => {\n let output = \"\";\n for (let i = 0; i < numSections; i++) {\n output += split[i];\n if (v[i] !== undefined) {\n const type = types[i];\n if (type === NUMBER_TOKEN) {\n output += sanitize(v[i]);\n }\n else if (type === COLOR_TOKEN) {\n output += color.transform(v[i]);\n }\n else {\n output += v[i];\n }\n }\n }\n return output;\n };\n}\nfunction createTransformer(source) {\n return buildTransformer(analyseComplexValue(source));\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : color.test(v) ? color.getAnimatableNone(v) : v;\n/**\n * Convert a parsed value to its zero equivalent, but preserve numbers\n * that act as divisors in CSS calc() expressions.\n *\n * analyseComplexValue extracts numbers from CSS strings and puts the\n * surrounding text into a `split` template array. For example:\n * \"calc(var(--gap) / 5)\" → values: [var(--gap), 5]\n * split: [\"calc(\", \" / \", \")\"]\n *\n * When building a zero-equivalent for animation, naively zeroing all\n * numbers turns the divisor into 0 → \"calc(var(--gap) / 0)\" → NaN.\n * We detect this by checking whether the text preceding a number\n * (split[i]) ends with \"/\" — the CSS calc division operator.\n */\nconst convertToZero = (value, splitBefore) => {\n if (typeof value === \"number\") {\n return splitBefore?.trim().endsWith(\"/\") ? value : 0;\n }\n return convertNumbersToZero(value);\n};\nfunction getAnimatableNone$1(v) {\n const info = analyseComplexValue(v);\n const transformer = buildTransformer(info);\n return transformer(info.values.map((value, i) => convertToZero(value, info.split[i])));\n}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone: getAnimatableNone$1,\n};\n\n// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nfunction mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\n/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber$1 = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`, \"color-not-animatable\");\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mixNumber$1(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nconst invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = origin.values[originIndex] ?? 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`, \"complex-values-different\");\n return mixImmediate(origin, target);\n }\n};\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber$1(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: (keepAlive = true) => frame.update(passTimestamp, keepAlive),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n };\n};\n\nconst generateLinearEasing = (easing, duration, // as milliseconds\nresolution = 10 // as milliseconds\n) => {\n let points = \"\";\n const numPoints = Math.max(Math.round(duration / resolution), 2);\n for (let i = 0; i < numPoints; i++) {\n points += Math.round(easing(i / (numPoints - 1)) * 10000) / 10000 + \", \";\n }\n return `linear(${points.substring(0, points.length - 2)})`;\n};\n\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n/**\n * Create a progress => progress easing function from a generator.\n */\nfunction createGeneratorEasing(options, scale = 100, createGenerator) {\n const generator = createGenerator({ ...options, keyframes: [0, scale] });\n const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n return {\n type: \"keyframes\",\n ease: (progress) => {\n return generator.next(duration * progress).value / scale;\n },\n duration: millisecondsToSeconds(duration),\n };\n}\n\nconst springDefaults = {\n // Default spring physics\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n velocity: 0.0,\n // Default duration/bounce-based options\n duration: 800, // in ms\n bounce: 0.3,\n visualDuration: 0.3, // in seconds\n // Rest thresholds\n restSpeed: {\n granular: 0.01,\n default: 2,\n },\n restDelta: {\n granular: 0.005,\n default: 0.5,\n },\n // Limits\n minDuration: 0.01, // in seconds\n maxDuration: 10.0, // in seconds\n minDamping: 0.05,\n maxDamping: 1,\n};\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\n/**\n * This is ported from the Framer implementation of duration-based spring resolution.\n */\nconst safeMin = 0.001;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\", \"spring-duration-limit\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp$1(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n duration = clamp$1(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: springDefaults.stiffness,\n damping: springDefaults.damping,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: springDefaults.velocity,\n stiffness: springDefaults.stiffness,\n damping: springDefaults.damping,\n mass: springDefaults.mass,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n // Time-defined springs should ignore inherited velocity.\n // Velocity from interrupted animations can cause findSpring()\n // to compute wildly different spring parameters, leading to\n // massive oscillation on small-range animations.\n springOptions.velocity = 0;\n if (options.visualDuration) {\n const visualDuration = options.visualDuration;\n const root = (2 * Math.PI) / (visualDuration * 1.2);\n const stiffness = root * root;\n const damping = 2 *\n clamp$1(0.05, 1, 1 - (options.bounce || 0)) *\n Math.sqrt(stiffness);\n springOptions = {\n ...springOptions,\n mass: springDefaults.mass,\n stiffness,\n damping,\n };\n }\n else {\n const derived = findSpring({ ...options, velocity: 0 });\n springOptions = {\n ...springOptions,\n ...derived,\n mass: springDefaults.mass,\n };\n springOptions.isResolvedFromDuration = true;\n }\n }\n return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n const options = typeof optionsOrVisualDuration !== \"object\"\n ? {\n visualDuration: optionsOrVisualDuration,\n keyframes: [0, 1],\n bounce,\n }\n : optionsOrVisualDuration;\n let { restSpeed, restDelta } = options;\n const origin = options.keyframes[0];\n const target = options.keyframes[options.keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale\n ? springDefaults.restSpeed.granular\n : springDefaults.restSpeed.default);\n restDelta || (restDelta = isGranularScale\n ? springDefaults.restDelta.granular\n : springDefaults.restDelta.default);\n let resolveSpring;\n let resolveVelocity;\n // Underdamped coefficients, hoisted for use in the inlined next() hot path\n let angularFreq;\n let A;\n let sinCoeff;\n let cosCoeff;\n if (dampingRatio < 1) {\n angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n A =\n (initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq;\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (A * Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n // Analytical derivative of underdamped spring (px/ms)\n sinCoeff =\n dampingRatio * undampedAngularFreq * A + initialDelta * angularFreq;\n cosCoeff =\n dampingRatio * undampedAngularFreq * initialDelta - A * angularFreq;\n resolveVelocity = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return envelope *\n (sinCoeff * Math.sin(angularFreq * t) +\n cosCoeff * Math.cos(angularFreq * t));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n // Analytical derivative of critically damped spring (px/ms)\n const C = initialVelocity + undampedAngularFreq * initialDelta;\n resolveVelocity = (t) => Math.exp(-undampedAngularFreq * t) *\n (undampedAngularFreq * C * t - initialVelocity);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n // Analytical derivative of overdamped spring (px/ms)\n const P = (initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n dampedAngularFreq;\n const sinhCoeff = dampingRatio * undampedAngularFreq * P - initialDelta * dampedAngularFreq;\n const coshCoeff = dampingRatio * undampedAngularFreq * initialDelta - P * dampedAngularFreq;\n resolveVelocity = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return envelope *\n (sinhCoeff * Math.sinh(freqForT) +\n coshCoeff * Math.cosh(freqForT));\n };\n }\n const generator = {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n velocity: (t) => secondsToMilliseconds(resolveVelocity(t)),\n next: (t) => {\n /**\n * For underdamped physics springs we need both position and\n * velocity each tick. Compute shared trig values once to avoid\n * duplicate Math.exp/sin/cos calls on the hot path.\n */\n if (!isResolvedFromDuration && dampingRatio < 1) {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n const sin = Math.sin(angularFreq * t);\n const cos = Math.cos(angularFreq * t);\n const current = target -\n envelope *\n (A * sin + initialDelta * cos);\n const currentVelocity = secondsToMilliseconds(envelope *\n (sinCoeff * sin + cosCoeff * cos));\n state.done =\n Math.abs(currentVelocity) <= restSpeed &&\n Math.abs(target - current) <= restDelta;\n state.value = state.done ? target : current;\n return state;\n }\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n const currentVelocity = secondsToMilliseconds(resolveVelocity(t));\n state.done =\n Math.abs(currentVelocity) <= restSpeed &&\n Math.abs(target - current) <= restDelta;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n toString: () => {\n const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n const easing = generateLinearEasing((progress) => generator.next(calculatedDuration * progress).value, calculatedDuration, 30);\n return calculatedDuration + \"ms \" + easing;\n },\n toTransition: () => { },\n };\n return generator;\n}\nspring.applyToOptions = (options) => {\n const generatorOptions = createGeneratorEasing(options, 100, spring);\n options.ease = generatorOptions.ease;\n options.duration = secondsToMilliseconds(generatorOptions.duration);\n options.type = \"keyframes\";\n return options;\n};\n\nconst velocitySampleDuration = 5; // ms\nfunction getGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: getGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || MotionGlobalConfig.mix || mix;\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop$1 : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revisit this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\", \"range-length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && output[0] === output[1])\n return () => output[1];\n const isZeroDeltaRange = input[0] === input[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n if (isZeroDeltaRange && v < input[0])\n return output[0];\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp$1(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber$1(min, 1, offsetProgress));\n }\n}\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nconst isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe, speed = 1) {\n const resolvedKeyframes = keyframes.filter(isNotNull);\n const useFirstKeyframe = speed < 0 || (repeat && repeatType !== \"loop\" && repeat % 2 === 1);\n const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1;\n return !index || finalKeyframe === undefined\n ? resolvedKeyframes[index]\n : finalKeyframe;\n}\n\nconst transitionTypeMap = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\nfunction replaceTransitionType(transition) {\n if (typeof transition.type === \"string\") {\n transition.type = transitionTypeMap[transition.type];\n }\n}\n\nclass WithPromise {\n constructor() {\n this.updateFinished();\n }\n get finished() {\n return this._finished;\n }\n updateFinished() {\n this._finished = new Promise((resolve) => {\n this.resolve = resolve;\n });\n }\n notifyFinished() {\n this.resolve();\n }\n /**\n * Allows the animation to be awaited.\n *\n * @deprecated Use `finished` instead.\n */\n then(onResolve, onReject) {\n return this.finished.then(onResolve, onReject);\n }\n}\n\nconst percentToProgress = (percent) => percent / 100;\nclass JSAnimation extends WithPromise {\n constructor(options) {\n super();\n this.state = \"idle\";\n this.startTime = null;\n this.isStopped = false;\n /**\n * The current time of the animation.\n */\n this.currentTime = 0;\n /**\n * The time at which the animation was paused.\n */\n this.holdTime = null;\n /**\n * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n */\n this.playbackSpeed = 1;\n /**\n * Reusable state object for the delay phase to avoid\n * allocating a new object every frame.\n */\n this.delayState = {\n done: false,\n value: undefined,\n };\n /**\n * This method is bound to the instance to fix a pattern where\n * animation.stop is returned as a reference from a useEffect.\n */\n this.stop = () => {\n const { motionValue } = this.options;\n if (motionValue && motionValue.updatedAt !== time.now()) {\n this.tick(time.now());\n }\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.teardown();\n this.options.onStop?.();\n };\n this.options = options;\n this.initAnimation();\n this.play();\n if (options.autoplay === false)\n this.pause();\n }\n initAnimation() {\n const { options } = this;\n replaceTransitionType(options);\n const { type = keyframes, repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = options;\n let { keyframes: keyframes$1 } = options;\n const generatorFactory = type || keyframes;\n if (process.env.NODE_ENV !== \"production\" &&\n generatorFactory !== keyframes) {\n invariant(keyframes$1.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`, \"spring-two-frames\");\n }\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n this.mixKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n /**\n * If we have a mirror repeat type we need to create a second generator that outputs the\n * mirrored (not reversed) animation and later ping pong between the two generators.\n */\n if (repeatType === \"mirror\") {\n this.mirroredGenerator = generatorFactory({\n ...options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -velocity,\n });\n }\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n this.calculatedDuration = calculatedDuration;\n this.resolvedDuration = calculatedDuration + repeatDelay;\n this.totalDuration = this.resolvedDuration * (repeat + 1) - repeatDelay;\n this.generator = generator;\n }\n updateTime(timestamp) {\n const animationTime = Math.round(timestamp - this.startTime) * this.playbackSpeed;\n // Update currentTime\n if (this.holdTime !== null) {\n this.currentTime = this.holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n this.currentTime = animationTime;\n }\n }\n tick(timestamp, sample = false) {\n const { generator, totalDuration, mixKeyframes, mirroredGenerator, resolvedDuration, calculatedDuration, } = this;\n if (this.startTime === null)\n return generator.next(0);\n const { delay = 0, keyframes, repeat, repeatType, repeatDelay, type, onUpdate, finalKeyframe, } = this.options;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (this.speed > 0) {\n this.startTime = Math.min(this.startTime, timestamp);\n }\n else if (this.speed < 0) {\n this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n }\n if (sample) {\n this.currentTime = timestamp;\n }\n else {\n this.updateTime(timestamp);\n }\n // Rebase on delay\n const timeWithoutDelay = this.currentTime - delay * (this.playbackSpeed >= 0 ? 1 : -1);\n const isInDelayPhase = this.playbackSpeed >= 0\n ? timeWithoutDelay < 0\n : timeWithoutDelay > totalDuration;\n this.currentTime = Math.max(timeWithoutDelay, 0);\n // If this animation has finished, set the current time to the total duration.\n if (this.state === \"finished\" && this.holdTime === null) {\n this.currentTime = totalDuration;\n }\n let elapsed = this.currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const isOddIteration = Boolean(currentIteration % 2);\n if (isOddIteration) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n elapsed = clamp$1(0, 1, iterationProgress) * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n let state;\n if (isInDelayPhase) {\n this.delayState.value = keyframes[0];\n state = this.delayState;\n }\n else {\n state = frameGenerator.next(elapsed);\n }\n if (mixKeyframes && !isInDelayPhase) {\n state.value = mixKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done =\n this.playbackSpeed >= 0\n ? this.currentTime >= totalDuration\n : this.currentTime <= 0;\n }\n const isAnimationFinished = this.holdTime === null &&\n (this.state === \"finished\" || (this.state === \"running\" && done));\n // TODO: The exception for inertia could be cleaner here\n if (isAnimationFinished && type !== inertia) {\n state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed);\n }\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n this.finish();\n }\n return state;\n }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.finished.then(resolve, reject);\n }\n get duration() {\n return millisecondsToSeconds(this.calculatedDuration);\n }\n get iterationDuration() {\n const { delay = 0 } = this.options || {};\n return this.duration + millisecondsToSeconds(delay);\n }\n get time() {\n return millisecondsToSeconds(this.currentTime);\n }\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n this.currentTime = newTime;\n if (this.startTime === null ||\n this.holdTime !== null ||\n this.playbackSpeed === 0) {\n this.holdTime = newTime;\n }\n else if (this.driver) {\n this.startTime = this.driver.now() - newTime / this.playbackSpeed;\n }\n if (this.driver) {\n this.driver.start(false);\n }\n else {\n this.startTime = 0;\n this.state = \"paused\";\n this.holdTime = newTime;\n this.tick(newTime);\n }\n }\n /**\n * Returns the generator's velocity at the current time in units/second.\n * Uses the analytical derivative when available (springs), avoiding\n * the MotionValue's frame-dependent velocity estimation.\n */\n getGeneratorVelocity() {\n const t = this.currentTime;\n if (t <= 0)\n return this.options.velocity || 0;\n if (this.generator.velocity) {\n return this.generator.velocity(t);\n }\n // Fallback: finite difference\n const current = this.generator.next(t).value;\n return getGeneratorVelocity((s) => this.generator.next(s).value, t, current);\n }\n get speed() {\n return this.playbackSpeed;\n }\n set speed(newSpeed) {\n const hasChanged = this.playbackSpeed !== newSpeed;\n if (hasChanged && this.driver) {\n this.updateTime(time.now());\n }\n this.playbackSpeed = newSpeed;\n if (hasChanged && this.driver) {\n this.time = millisecondsToSeconds(this.currentTime);\n }\n }\n play() {\n if (this.isStopped)\n return;\n const { driver = frameloopDriver, startTime } = this.options;\n if (!this.driver) {\n this.driver = driver((timestamp) => this.tick(timestamp));\n }\n this.options.onPlay?.();\n const now = this.driver.now();\n if (this.state === \"finished\") {\n this.updateFinished();\n this.startTime = now;\n }\n else if (this.holdTime !== null) {\n this.startTime = now - this.holdTime;\n }\n else if (!this.startTime) {\n this.startTime = startTime ?? now;\n }\n if (this.state === \"finished\" && this.speed < 0) {\n this.startTime += this.calculatedDuration;\n }\n this.holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n this.state = \"running\";\n this.driver.start();\n }\n pause() {\n this.state = \"paused\";\n this.updateTime(time.now());\n this.holdTime = this.currentTime;\n }\n complete() {\n if (this.state !== \"running\") {\n this.play();\n }\n this.state = \"finished\";\n this.holdTime = null;\n }\n finish() {\n this.notifyFinished();\n this.teardown();\n this.state = \"finished\";\n this.options.onComplete?.();\n }\n cancel() {\n this.holdTime = null;\n this.startTime = 0;\n this.tick(0);\n this.teardown();\n this.options.onCancel?.();\n }\n teardown() {\n this.state = \"idle\";\n this.stopDriver();\n this.startTime = this.holdTime = null;\n }\n stopDriver() {\n if (!this.driver)\n return;\n this.driver.stop();\n this.driver = undefined;\n }\n sample(sampleTime) {\n this.startTime = 0;\n return this.tick(sampleTime, true);\n }\n attachTimeline(timeline) {\n if (this.options.allowFlatten) {\n this.options.type = \"keyframes\";\n this.options.ease = \"linear\";\n this.initAnimation();\n }\n this.driver?.stop();\n return timeline.observe(this);\n }\n}\n\nfunction fillWildcards(keyframes) {\n for (let i = 1; i < keyframes.length; i++) {\n keyframes[i] ?? (keyframes[i] = keyframes[i - 1]);\n }\n}\n\nconst radToDeg = (rad) => (rad * 180) / Math.PI;\nconst rotate = (v) => {\n const angle = radToDeg(Math.atan2(v[1], v[0]));\n return rebaseAngle(angle);\n};\nconst matrix2dParsers = {\n x: 4,\n y: 5,\n translateX: 4,\n translateY: 5,\n scaleX: 0,\n scaleY: 3,\n scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,\n rotate,\n rotateZ: rotate,\n skewX: (v) => radToDeg(Math.atan(v[1])),\n skewY: (v) => radToDeg(Math.atan(v[2])),\n skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2,\n};\nconst rebaseAngle = (angle) => {\n angle = angle % 360;\n if (angle < 0)\n angle += 360;\n return angle;\n};\nconst rotateZ = rotate;\nconst scaleX = (v) => Math.sqrt(v[0] * v[0] + v[1] * v[1]);\nconst scaleY = (v) => Math.sqrt(v[4] * v[4] + v[5] * v[5]);\nconst matrix3dParsers = {\n x: 12,\n y: 13,\n z: 14,\n translateX: 12,\n translateY: 13,\n translateZ: 14,\n scaleX,\n scaleY,\n scale: (v) => (scaleX(v) + scaleY(v)) / 2,\n rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),\n rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),\n rotateZ,\n rotate: rotateZ,\n skewX: (v) => radToDeg(Math.atan(v[4])),\n skewY: (v) => radToDeg(Math.atan(v[1])),\n skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2,\n};\nfunction defaultTransformValue(name) {\n return name.includes(\"scale\") ? 1 : 0;\n}\nfunction parseValueFromTransform(transform, name) {\n if (!transform || transform === \"none\") {\n return defaultTransformValue(name);\n }\n const matrix3dMatch = transform.match(/^matrix3d\\(([-\\d.e\\s,]+)\\)$/u);\n let parsers;\n let match;\n if (matrix3dMatch) {\n parsers = matrix3dParsers;\n match = matrix3dMatch;\n }\n else {\n const matrix2dMatch = transform.match(/^matrix\\(([-\\d.e\\s,]+)\\)$/u);\n parsers = matrix2dParsers;\n match = matrix2dMatch;\n }\n if (!match) {\n return defaultTransformValue(name);\n }\n const valueParser = parsers[name];\n const values = match[1].split(\",\").map(convertTransformToNumber);\n return typeof valueParser === \"function\"\n ? valueParser(values)\n : values[valueParser];\n}\nconst readTransformValue = (instance, name) => {\n const { transform = \"none\" } = getComputedStyle(instance);\n return parseValueFromTransform(transform, name);\n};\nfunction convertTransformToNumber(value) {\n return parseFloat(value.trim());\n}\n\n/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = /*@__PURE__*/ (() => new Set(transformPropOrder))();\n\nconst isNumOrPxType = (v) => v === number || v === px;\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\", boxSizing }) => {\n const width = x.max - x.min;\n return boxSizing === \"border-box\"\n ? width\n : width - parseFloat(paddingLeft) - parseFloat(paddingRight);\n },\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\", boxSizing }) => {\n const height = y.max - y.min;\n return boxSizing === \"border-box\"\n ? height\n : height - parseFloat(paddingTop) - parseFloat(paddingBottom);\n },\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: (_bbox, { transform }) => parseValueFromTransform(transform, \"x\"),\n y: (_bbox, { transform }) => parseValueFromTransform(transform, \"y\"),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nlet isForced = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n element.getValue(key)?.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete(isForced));\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n isForced = true;\n readAllKeyframes();\n measureAllKeyframes();\n isForced = false;\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n this.state = \"pending\";\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.state = \"scheduled\";\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n // If initial keyframe is null we need to read it from the DOM\n if (unresolvedKeyframes[0] === null) {\n const currentValue = motionValue?.get();\n // TODO: This doesn't work if the final keyframe is a wildcard\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n fillWildcards(unresolvedKeyframes);\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete(isForcedComplete = false) {\n this.state = \"complete\";\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);\n toResolve.delete(this);\n }\n cancel() {\n if (this.state === \"scheduled\") {\n toResolve.delete(this);\n this.state = \"pending\";\n }\n }\n resume() {\n if (this.state === \"pending\")\n this.scheduleResolve();\n }\n}\n\nconst isCSSVar = (name) => name.startsWith(\"--\");\n\nfunction setStyle(element, name, value) {\n isCSSVar(name)\n ? element.style.setProperty(name, value)\n : (element.style[name] = value);\n}\n\n/**\n * Add the ability for test suites to manually set support flags\n * to better test more environments.\n */\nconst supportsFlags = {};\n\nfunction memoSupports(callback, supportsFlag) {\n const memoized = memo(callback);\n return () => supportsFlags[supportsFlag] ?? memoized();\n}\n\nconst supportsScrollTimeline = /* @__PURE__ */ memoSupports(() => window.ScrollTimeline !== undefined, \"scrollTimeline\");\n\nconst supportsLinearEasing = /*@__PURE__*/ memoSupports(() => {\n try {\n document\n .createElement(\"div\")\n .animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n }\n catch (e) {\n return false;\n }\n return true;\n}, \"linearEasing\");\n\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\n\nfunction mapEasingToNativeEasing(easing, duration) {\n if (!easing) {\n return undefined;\n }\n else if (typeof easing === \"function\") {\n return supportsLinearEasing()\n ? generateLinearEasing(easing, duration)\n : \"ease-out\";\n }\n else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing);\n }\n else if (Array.isArray(easing)) {\n return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) ||\n supportedWaapiEasing.easeOut);\n }\n else {\n return supportedWaapiEasing[easing];\n }\n}\n\nfunction startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease = \"easeOut\", times, } = {}, pseudoElement = undefined) {\n const keyframeOptions = {\n [valueName]: keyframes,\n };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease, duration);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n const options = {\n delay,\n duration,\n easing: !Array.isArray(easing) ? easing : \"linear\",\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n };\n if (pseudoElement)\n options.pseudoElement = pseudoElement;\n const animation = element.animate(keyframeOptions, options);\n return animation;\n}\n\nfunction isGenerator(type) {\n return typeof type === \"function\" && \"applyToOptions\" in type;\n}\n\nfunction applyGeneratorOptions({ type, ...options }) {\n if (isGenerator(type) && supportsLinearEasing()) {\n return type.applyToOptions(options);\n }\n else {\n options.duration ?? (options.duration = 300);\n options.ease ?? (options.ease = \"easeOut\");\n }\n return options;\n}\n\n/**\n * NativeAnimation implements AnimationPlaybackControls for the browser's Web Animations API.\n */\nclass NativeAnimation extends WithPromise {\n constructor(options) {\n super();\n this.finishedTime = null;\n this.isStopped = false;\n /**\n * Tracks a manually-set start time that takes precedence over WAAPI's\n * dynamic startTime. This is cleared when play() or time setter is called,\n * allowing WAAPI to take over timing.\n */\n this.manualStartTime = null;\n if (!options)\n return;\n const { element, name, keyframes, pseudoElement, allowFlatten = false, finalKeyframe, onComplete, } = options;\n this.isPseudoElement = Boolean(pseudoElement);\n this.allowFlatten = allowFlatten;\n this.options = options;\n invariant(typeof options.type !== \"string\", `Mini animate() doesn't support \"type\" as a string.`, \"mini-spring\");\n const transition = applyGeneratorOptions(options);\n this.animation = startWaapiAnimation(element, name, keyframes, transition, pseudoElement);\n if (transition.autoplay === false) {\n this.animation.pause();\n }\n this.animation.onfinish = () => {\n this.finishedTime = this.time;\n if (!pseudoElement) {\n const keyframe = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed);\n if (this.updateMotionValue) {\n this.updateMotionValue(keyframe);\n }\n /**\n * If we can, we want to commit the final style as set by the user,\n * rather than the computed keyframe value supplied by the animation.\n * We always do this, even when a motion value is present, to prevent\n * a visual flash in Firefox where the WAAPI animation's fill is removed\n * during cancel() before the scheduled render can apply the correct value.\n */\n setStyle(element, name, keyframe);\n this.animation.cancel();\n }\n onComplete?.();\n this.notifyFinished();\n };\n }\n play() {\n if (this.isStopped)\n return;\n this.manualStartTime = null;\n this.animation.play();\n if (this.state === \"finished\") {\n this.updateFinished();\n }\n }\n pause() {\n this.animation.pause();\n }\n complete() {\n this.animation.finish?.();\n }\n cancel() {\n try {\n this.animation.cancel();\n }\n catch (e) { }\n }\n stop() {\n if (this.isStopped)\n return;\n this.isStopped = true;\n const { state } = this;\n if (state === \"idle\" || state === \"finished\") {\n return;\n }\n if (this.updateMotionValue) {\n this.updateMotionValue();\n }\n else {\n this.commitStyles();\n }\n if (!this.isPseudoElement)\n this.cancel();\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * In this method, we commit styles back to the DOM before cancelling\n * the animation.\n *\n * This is designed to be overridden by NativeAnimationExtended, which\n * will create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to also correctly calculate velocity for any subsequent animation\n * while deferring the commit until the next animation frame.\n */\n commitStyles() {\n const element = this.options?.element;\n if (!this.isPseudoElement && element?.isConnected) {\n this.animation.commitStyles?.();\n }\n }\n get duration() {\n const duration = this.animation.effect?.getComputedTiming?.().duration || 0;\n return millisecondsToSeconds(Number(duration));\n }\n get iterationDuration() {\n const { delay = 0 } = this.options || {};\n return this.duration + millisecondsToSeconds(delay);\n }\n get time() {\n return millisecondsToSeconds(Number(this.animation.currentTime) || 0);\n }\n set time(newTime) {\n const wasFinished = this.finishedTime !== null;\n this.manualStartTime = null;\n this.finishedTime = null;\n this.animation.currentTime = secondsToMilliseconds(newTime);\n if (wasFinished) {\n this.animation.pause();\n }\n }\n /**\n * The playback speed of the animation.\n * 1 = normal speed, 2 = double speed, 0.5 = half speed.\n */\n get speed() {\n return this.animation.playbackRate;\n }\n set speed(newSpeed) {\n // Allow backwards playback after finishing\n if (newSpeed < 0)\n this.finishedTime = null;\n this.animation.playbackRate = newSpeed;\n }\n get state() {\n return this.finishedTime !== null\n ? \"finished\"\n : this.animation.playState;\n }\n get startTime() {\n return this.manualStartTime ?? Number(this.animation.startTime);\n }\n set startTime(newStartTime) {\n this.manualStartTime = this.animation.startTime = newStartTime;\n }\n /**\n * Attaches a timeline to the animation, for instance the `ScrollTimeline`.\n */\n attachTimeline({ timeline, rangeStart, rangeEnd, observe, }) {\n if (this.allowFlatten) {\n this.animation.effect?.updateTiming({ easing: \"linear\" });\n }\n this.animation.onfinish = null;\n if (timeline && supportsScrollTimeline()) {\n this.animation.timeline = timeline;\n if (rangeStart)\n this.animation.rangeStart = rangeStart;\n if (rangeEnd)\n this.animation.rangeEnd = rangeEnd;\n return noop$1;\n }\n else {\n return observe(this);\n }\n }\n}\n\nconst unsupportedEasingFunctions = {\n anticipate,\n backInOut,\n circInOut,\n};\nfunction isUnsupportedEase(key) {\n return key in unsupportedEasingFunctions;\n}\nfunction replaceStringEasing(transition) {\n if (typeof transition.ease === \"string\" &&\n isUnsupportedEase(transition.ease)) {\n transition.ease = unsupportedEasingFunctions[transition.ease];\n }\n}\n\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\nclass NativeAnimationExtended extends NativeAnimation {\n constructor(options) {\n /**\n * The base NativeAnimation function only supports a subset\n * of Motion easings, and WAAPI also only supports some\n * easing functions via string/cubic-bezier definitions.\n *\n * This function replaces those unsupported easing functions\n * with a JS easing function. This will later get compiled\n * to a linear() easing function.\n */\n replaceStringEasing(options);\n /**\n * Ensure we replace the transition type with a generator function\n * before passing to WAAPI.\n *\n * TODO: Does this have a better home? It could be shared with\n * JSAnimation.\n */\n replaceTransitionType(options);\n super(options);\n /**\n * Only set startTime when the animation should autoplay.\n * Setting startTime on a paused WAAPI animation unpauses it\n * (per the WAAPI spec), which breaks autoplay: false.\n */\n if (options.startTime !== undefined && options.autoplay !== false) {\n this.startTime = options.startTime;\n }\n this.options = options;\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read committed styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n updateMotionValue(value) {\n const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n if (!motionValue)\n return;\n if (value !== undefined) {\n motionValue.set(value);\n return;\n }\n const sampleAnimation = new JSAnimation({\n ...options,\n autoplay: false,\n });\n /**\n * Use wall-clock elapsed time for sampling.\n * Under CPU load, WAAPI's currentTime may not reflect actual\n * elapsed time, causing incorrect sampling and visual jumps.\n */\n const sampleTime = Math.max(sampleDelta, time.now() - this.startTime);\n const delta = clamp$1(0, sampleDelta, sampleTime - sampleDelta);\n const current = sampleAnimation.sample(sampleTime).value;\n /**\n * Write the estimated value to inline style so it persists\n * after cancel(), covering the async gap before the next\n * animation starts.\n */\n const { name } = this.options;\n if (element && name)\n setStyle(element, name, current);\n motionValue.setWithVelocity(sampleAnimation.sample(Math.max(0, sampleTime - delta)).value, current, delta);\n sampleAnimation.stop();\n }\n}\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys that might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nfunction hasKeyframesChanged(keyframes) {\n const current = keyframes[0];\n if (keyframes.length === 1)\n return true;\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] !== current)\n return true;\n }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n if (originKeyframe === null) {\n return false;\n }\n /**\n * These aren't traditionally animatable but we do support them.\n * In future we could look into making this more generic or replacing\n * this function with mix() === mixImmediate\n */\n if (name === \"display\" || name === \"visibility\")\n return true;\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(originKeyframe, name);\n const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". \"${isOriginAnimatable ? targetKeyframe : originKeyframe}\" is not an animatable value.`, \"value-not-animatable\");\n // Always skip if any of these are true\n if (!isOriginAnimatable || !isTargetAnimatable) {\n return false;\n }\n return (hasKeyframesChanged(keyframes) ||\n ((type === \"spring\" || isGenerator(type)) && velocity));\n}\n\nfunction makeAnimationInstant(options) {\n options.duration = 0;\n options.type = \"keyframes\";\n}\n\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n // or until we implement support for linear() easing.\n // \"background-color\"\n]);\n\nconst browserColorFunctions = /^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\\(/;\nfunction hasBrowserOnlyColors(keyframes) {\n for (let i = 0; i < keyframes.length; i++) {\n if (typeof keyframes[i] === \"string\" &&\n browserColorFunctions.test(keyframes[i])) {\n return true;\n }\n }\n return false;\n}\n\nconst colorProperties = new Set([\n \"color\",\n \"backgroundColor\",\n \"outlineColor\",\n \"fill\",\n \"stroke\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderRightColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n]);\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\nfunction supportsBrowserAnimation(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type, keyframes, } = options;\n const subject = motionValue?.owner?.current;\n /**\n * We use this check instead of isHTMLElement() because we explicitly\n * **don't** want elements in different timing contexts (i.e. popups)\n * to be accelerated, as it's not possible to sync these animations\n * properly with those driven from the main window frameloop.\n */\n if (!(subject instanceof HTMLElement)) {\n return false;\n }\n const { onUpdate, transformTemplate } = motionValue.owner.getProps();\n return (supportsWaapi() &&\n name &&\n /**\n * Force WAAPI for color properties with browser-only color formats\n * (oklch, oklab, lab, lch, etc.) that the JS animation path can't parse.\n */\n (acceleratedValues.has(name) ||\n (colorProperties.has(name) &&\n hasBrowserOnlyColors(keyframes))) &&\n (name !== \"transform\" || !transformTemplate) &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !onUpdate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n}\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass AsyncMotionValueAnimation extends WithPromise {\n constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", keyframes, name, motionValue, element, ...options }) {\n super();\n /**\n * Bound to support return animation.stop pattern\n */\n this.stop = () => {\n if (this._animation) {\n this._animation.stop();\n this.stopTimeline?.();\n }\n this.keyframeResolver?.cancel();\n };\n this.createdAt = time.now();\n const optionsWithDefaults = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n name,\n motionValue,\n element,\n ...options,\n };\n const KeyframeResolver$1 = element?.KeyframeResolver || KeyframeResolver;\n this.keyframeResolver = new KeyframeResolver$1(keyframes, (resolvedKeyframes, finalKeyframe, forced) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe, optionsWithDefaults, !forced), name, motionValue, element);\n this.keyframeResolver?.scheduleResolve();\n }\n onKeyframesResolved(keyframes, finalKeyframe, options, sync) {\n this.keyframeResolver = undefined;\n const { name, type, velocity, delay, isHandoff, onUpdate } = options;\n this.resolvedAt = time.now();\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n let canAnimateValue = true;\n if (!canAnimate(keyframes, name, type, velocity)) {\n canAnimateValue = false;\n if (MotionGlobalConfig.instantAnimations || !delay) {\n onUpdate?.(getFinalKeyframe(keyframes, options, finalKeyframe));\n }\n keyframes[0] = keyframes[keyframes.length - 1];\n makeAnimationInstant(options);\n options.repeat = 0;\n }\n /**\n * Resolve startTime for the animation.\n *\n * This method uses the createdAt and resolvedAt to calculate the\n * animation startTime. *Ideally*, we would use the createdAt time as t=0\n * as the following frame would then be the first frame of the animation in\n * progress, which would feel snappier.\n *\n * However, if there's a delay (main thread work) between the creation of\n * the animation and the first committed frame, we prefer to use resolvedAt\n * to avoid a sudden jump into the animation.\n */\n const startTime = sync\n ? !this.resolvedAt\n ? this.createdAt\n : this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n ? this.resolvedAt\n : this.createdAt\n : undefined;\n const resolvedOptions = {\n startTime,\n finalKeyframe,\n ...options,\n keyframes,\n };\n /**\n * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n * optimised animation.\n *\n * Also skip WAAPI when keyframes aren't animatable, as the resolved\n * values may not be valid CSS and would trigger browser warnings.\n */\n const useWaapi = canAnimateValue &&\n !isHandoff &&\n supportsBrowserAnimation(resolvedOptions);\n const element = resolvedOptions.motionValue?.owner?.current;\n let animation;\n if (useWaapi) {\n try {\n animation = new NativeAnimationExtended({\n ...resolvedOptions,\n element,\n });\n }\n catch {\n animation = new JSAnimation(resolvedOptions);\n }\n }\n else {\n animation = new JSAnimation(resolvedOptions);\n }\n animation.finished.then(() => {\n this.notifyFinished();\n }).catch(noop$1);\n if (this.pendingTimeline) {\n this.stopTimeline = animation.attachTimeline(this.pendingTimeline);\n this.pendingTimeline = undefined;\n }\n this._animation = animation;\n }\n get finished() {\n if (!this._animation) {\n return this._finished;\n }\n else {\n return this.animation.finished;\n }\n }\n then(onResolve, _onReject) {\n return this.finished.finally(onResolve).then(() => { });\n }\n get animation() {\n if (!this._animation) {\n this.keyframeResolver?.resume();\n flushKeyframeResolvers();\n }\n return this._animation;\n }\n get duration() {\n return this.animation.duration;\n }\n get iterationDuration() {\n return this.animation.iterationDuration;\n }\n get time() {\n return this.animation.time;\n }\n set time(newTime) {\n this.animation.time = newTime;\n }\n get speed() {\n return this.animation.speed;\n }\n get state() {\n return this.animation.state;\n }\n set speed(newSpeed) {\n this.animation.speed = newSpeed;\n }\n get startTime() {\n return this.animation.startTime;\n }\n attachTimeline(timeline) {\n if (this._animation) {\n this.stopTimeline = this.animation.attachTimeline(timeline);\n }\n else {\n this.pendingTimeline = timeline;\n }\n return () => this.stop();\n }\n play() {\n this.animation.play();\n }\n pause() {\n this.animation.pause();\n }\n complete() {\n this.animation.complete();\n }\n cancel() {\n if (this._animation) {\n this.animation.cancel();\n }\n this.keyframeResolver?.cancel();\n }\n}\n\nclass GroupAnimation {\n constructor(animations) {\n // Bound to accomadate common `return animation.stop` pattern\n this.stop = () => this.runAll(\"stop\");\n this.animations = animations.filter(Boolean);\n }\n get finished() {\n return Promise.all(this.animations.map((animation) => animation.finished));\n }\n /**\n * TODO: Filter out cancelled or stopped animations before returning\n */\n getAll(propName) {\n return this.animations[0][propName];\n }\n setAll(propName, newValue) {\n for (let i = 0; i < this.animations.length; i++) {\n this.animations[i][propName] = newValue;\n }\n }\n attachTimeline(timeline) {\n const subscriptions = this.animations.map((animation) => animation.attachTimeline(timeline));\n return () => {\n subscriptions.forEach((cancel, i) => {\n cancel && cancel();\n this.animations[i].stop();\n });\n };\n }\n get time() {\n return this.getAll(\"time\");\n }\n set time(time) {\n this.setAll(\"time\", time);\n }\n get speed() {\n return this.getAll(\"speed\");\n }\n set speed(speed) {\n this.setAll(\"speed\", speed);\n }\n get state() {\n return this.getAll(\"state\");\n }\n get startTime() {\n return this.getAll(\"startTime\");\n }\n get duration() {\n return getMax$1(this.animations, \"duration\");\n }\n get iterationDuration() {\n return getMax$1(this.animations, \"iterationDuration\");\n }\n runAll(methodName) {\n this.animations.forEach((controls) => controls[methodName]());\n }\n play() {\n this.runAll(\"play\");\n }\n pause() {\n this.runAll(\"pause\");\n }\n cancel() {\n this.runAll(\"cancel\");\n }\n complete() {\n this.runAll(\"complete\");\n }\n}\nfunction getMax$1(animations, propName) {\n let max = 0;\n for (let i = 0; i < animations.length; i++) {\n const value = animations[i][propName];\n if (value !== null && value > max) {\n max = value;\n }\n }\n return max;\n}\n\nclass GroupAnimationWithThen extends GroupAnimation {\n then(onResolve, _onReject) {\n return this.finished.finally(onResolve).then(() => { });\n }\n}\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 ?? token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`, \"max-css-var-depth\");\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\n/**\n * If `transition` has `inherit: true`, shallow-merge it with\n * `parentTransition` (child keys win) and strip the `inherit` key.\n * Otherwise return `transition` unchanged.\n */\nfunction resolveTransition(transition, parentTransition) {\n if (transition?.inherit && parentTransition) {\n const { inherit: _, ...rest } = transition;\n return { ...parentTransition, ...rest };\n }\n return transition;\n}\n\nfunction getValueTransition$1(transition, key) {\n const valueTransition = transition?.[key] ??\n transition?.[\"default\"] ??\n transition;\n if (valueTransition !== transition) {\n return resolveTransition(valueTransition, transition);\n }\n return valueTransition;\n}\n\nconst orchestrationKeys = new Set([\n \"when\",\n \"delay\",\n \"delayChildren\",\n \"staggerChildren\",\n \"staggerDirection\",\n \"repeat\",\n \"repeatType\",\n \"repeatDelay\",\n \"from\",\n \"elapsed\",\n]);\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined(transition) {\n for (const key in transition) {\n if (!orchestrationKeys.has(key))\n return true;\n }\n return false;\n}\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n const valueTransition = getValueTransition$1(transition, name) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n const options = {\n keyframes: Array.isArray(target) ? target : [null, target],\n ease: \"easeOut\",\n velocity: value.getVelocity(),\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n name,\n motionValue: value,\n element: isHandoff ? undefined : element,\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unique transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n Object.assign(options, getDefaultTransition(name, options));\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n options.duration && (options.duration = secondsToMilliseconds(options.duration));\n options.repeatDelay && (options.repeatDelay = secondsToMilliseconds(options.repeatDelay));\n /**\n * Support deprecated way to set initial value. Prefer keyframe syntax.\n */\n if (options.from !== undefined) {\n options.keyframes[0] = options.from;\n }\n let shouldSkip = false;\n if (options.type === false ||\n (options.duration === 0 && !options.repeatDelay)) {\n makeAnimationInstant(options);\n if (options.delay === 0) {\n shouldSkip = true;\n }\n }\n if (MotionGlobalConfig.instantAnimations ||\n MotionGlobalConfig.skipAnimations ||\n element?.shouldSkipAnimations ||\n valueTransition.skipAnimations) {\n shouldSkip = true;\n makeAnimationInstant(options);\n options.delay = 0;\n }\n /**\n * If the transition type or easing has been explicitly set by the user\n * then we don't want to allow flattening the animation.\n */\n options.allowFlatten = !valueTransition.type && !valueTransition.ease;\n /**\n * If we can or must skip creating the animation, and apply only\n * the final keyframe, do so. We also check once keyframes are resolved but\n * this early check prevents the need to create an animation at all.\n */\n if (shouldSkip && !isHandoff && value.get() !== undefined) {\n const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n if (finalKeyframe !== undefined) {\n frame.update(() => {\n options.onUpdate(finalKeyframe);\n options.onComplete();\n });\n return;\n }\n }\n return valueTransition.isSync\n ? new JSAnimation(options)\n : new AsyncMotionValueAnimation(options);\n};\n\nfunction getValueState(visualElement) {\n const state = [{}, {}];\n visualElement?.values.forEach((value, key) => {\n state[0][key] = value.get();\n state[1][key] = value.getVelocity();\n });\n return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n return definition;\n}\n\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, props.custom, visualElement);\n}\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n ...transformPropOrder,\n]);\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n */\n constructor(init, options = {}) {\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = null;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v) => {\n const currentTime = time.now();\n /**\n * If we're updating the value during another frame or eventloop\n * than the previous frame, then the we set the previous frame value\n * to current.\n */\n if (this.updatedAt !== currentTime) {\n this.setPrevFrameValue();\n }\n this.prev = this.current;\n this.setCurrent(v);\n // Update update subscribers\n if (this.current !== this.prev) {\n this.events.change?.notify(this.current);\n if (this.dependents) {\n for (const dependent of this.dependents) {\n dependent.dirty();\n }\n }\n }\n };\n this.hasAnimated = false;\n this.setCurrent(init);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n if (this.canTrackVelocity === null && current !== undefined) {\n this.canTrackVelocity = isFloat(this.current);\n }\n }\n setPrevFrameValue(prevFrameValue = this.current) {\n this.prevFrameValue = prevFrameValue;\n this.prevUpdatedAt = this.updatedAt;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return <motion.div style={{ x }} />\n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n }\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n frame.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v) {\n if (!this.passiveEffect) {\n this.updateAndNotify(v);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = undefined;\n this.prevFrameValue = prev;\n this.prevUpdatedAt = this.updatedAt - delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v, endAnimation = true) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n endAnimation && this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n dirty() {\n this.events.change?.notify(this.current);\n }\n addDependent(dependent) {\n if (!this.dependents) {\n this.dependents = new Set();\n }\n this.dependents.add(dependent);\n }\n removeDependent(dependent) {\n if (this.dependents) {\n this.dependents.delete(dependent);\n }\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.dependents?.clear();\n this.events.destroy?.notify();\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nconst isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction resolveFinalValueInKeyframes(v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nconst isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nfunction addValueToWillChange(visualElement, key) {\n const willChange = visualElement.getValue(\"willChange\");\n /**\n * It could be that a user has set willChange to a regular MotionValue,\n * in which case we can't add the value to it.\n */\n if (isWillChangeMotionValue(willChange)) {\n return willChange.add(key);\n }\n else if (!willChange && MotionGlobalConfig.WillChange) {\n const newWillChange = new MotionGlobalConfig.WillChange(\"auto\");\n visualElement.addValue(\"willChange\", newWillChange);\n newWillChange.add(key);\n }\n}\n\nfunction camelToDash(str) {\n return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);\n}\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.props[optimizedAppearDataAttribute];\n}\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n let { transition, transitionEnd, ...target } = targetAndTransition;\n const defaultTransition = visualElement.getDefaultTransition();\n transition = transition\n ? resolveTransition(transition, defaultTransition)\n : defaultTransition;\n const reduceMotion = transition?.reduceMotion;\n const skipAnimations = transition?.skipAnimations;\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key, visualElement.latestValues[key] ?? null);\n const valueTarget = target[key];\n if (valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n ...getValueTransition$1(transition || {}, key),\n };\n if (skipAnimations)\n valueTransition.skipAnimations = true;\n /**\n * If the value is already at the defined target, skip the animation.\n * We still re-assert the value via frame.update to take precedence\n * over any stale transitionEnd callbacks from previous animations.\n */\n const currentValue = value.get();\n if (currentValue !== undefined &&\n !value.isAnimating() &&\n !Array.isArray(valueTarget) &&\n valueTarget === currentValue &&\n !valueTransition.velocity) {\n frame.update(() => value.set(valueTarget));\n continue;\n }\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n let isHandoff = false;\n if (window.MotionHandoffAnimation) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n if (startTime !== null) {\n valueTransition.startTime = startTime;\n isHandoff = true;\n }\n }\n }\n addValueToWillChange(visualElement, key);\n const shouldReduceMotion = reduceMotion ?? visualElement.shouldReduceMotion;\n value.start(animateMotionValue(key, value, valueTarget, shouldReduceMotion && positionalKeys.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff));\n const animation = value.animation;\n if (animation) {\n animations.push(animation);\n }\n }\n if (transitionEnd) {\n const applyTransitionEnd = () => frame.update(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n if (animations.length) {\n Promise.all(animations).then(applyTransitionEnd);\n }\n else {\n applyTransitionEnd();\n }\n }\n return animations;\n}\n\n/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\n/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nconst mask = {\n ...complex,\n getAnimatableNone: (v) => {\n const parsed = complex.parse(v);\n const transformer = complex.createTransformer(v);\n return transformer(parsed.map((v) => typeof v === \"number\" ? 0 : typeof v === \"object\" ? { ...v, alpha: 1 } : v));\n },\n};\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nconst transformValueTypes = {\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n};\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n inset: px,\n insetBlock: px,\n insetBlockStart: px,\n insetBlockEnd: px,\n insetInline: px,\n insetInlineStart: px,\n insetInlineEnd: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n paddingBlock: px,\n paddingBlockStart: px,\n paddingBlockEnd: px,\n paddingInline: px,\n paddingInlineStart: px,\n paddingInlineEnd: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n marginBlock: px,\n marginBlockStart: px,\n marginBlockEnd: px,\n marginInline: px,\n marginInlineStart: px,\n marginInlineEnd: px,\n // Typography\n fontSize: px,\n // Misc\n backgroundPositionX: px,\n backgroundPositionY: px,\n ...transformValueTypes,\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n mask,\n WebkitMask: mask,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nconst customTypes = /*@__PURE__*/ new Set([filter, mask]);\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (!customTypes.has(defaultValueType))\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!element || !element.current)\n return;\n super.readKeyframes();\n /**\n * If any keyframe is a CSS variable, we need to find its value by sampling the element\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n let keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\") {\n keyframe = keyframe.trim();\n if (isCSSVariableToken(keyframe)) {\n const resolved = getVariableValue(keyframe, element.current);\n if (resolved !== undefined) {\n unresolvedKeyframes[i] = resolved;\n }\n if (i === unresolvedKeyframes.length - 1) {\n this.finalKeyframe = keyframe;\n }\n }\n }\n }\n /**\n * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n * have a far bigger performance impact.\n */\n this.resolveNoneKeyframes();\n /**\n * Check to see if unit type has changed. If so schedule jobs that will\n * temporarily set styles to the destination keyframes.\n * Skip if we have more than two keyframes or this isn't a positional value.\n * TODO: We can throw if there are multiple keyframes and the value type changes.\n */\n if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n return;\n }\n const [origin, target] = unresolvedKeyframes;\n const originType = findDimensionValueType(origin);\n const targetType = findDimensionValueType(target);\n /**\n * If one keyframe contains embedded CSS variables (e.g. in calc()) and the other\n * doesn't, we need to measure to convert to pixels. This handles GitHub issue #3410.\n */\n const originHasVar = containsCSSVariable(origin);\n const targetHasVar = containsCSSVariable(target);\n if (originHasVar !== targetHasVar && positionalValues[name]) {\n this.needsMeasurement = true;\n return;\n }\n /**\n * Either we don't recognise these value types or we can animate between them.\n */\n if (originType === targetType)\n return;\n /**\n * If both values are numbers or pixels, we can animate between them by\n * converting them to numbers.\n */\n if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const value = unresolvedKeyframes[i];\n if (typeof value === \"string\") {\n unresolvedKeyframes[i] = parseFloat(value);\n }\n }\n }\n else if (positionalValues[name]) {\n /**\n * Else, the only way to resolve this is by measuring the element.\n */\n this.needsMeasurement = true;\n }\n }\n resolveNoneKeyframes() {\n const { unresolvedKeyframes, name } = this;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null ||\n isNone(unresolvedKeyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n }\n if (noneKeyframeIndexes.length) {\n makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n }\n }\n measureInitialState() {\n const { element, unresolvedKeyframes, name } = this;\n if (!element || !element.current)\n return;\n if (name === \"height\") {\n this.suspendedScrollY = window.pageYOffset;\n }\n this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n unresolvedKeyframes[0] = this.measuredOrigin;\n // Set final key frame to measure after next render\n const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (measureKeyframe !== undefined) {\n element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n }\n }\n measureEndState() {\n const { element, name, unresolvedKeyframes } = this;\n if (!element || !element.current)\n return;\n const value = element.getValue(name);\n value && value.jump(this.measuredOrigin, false);\n const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n this.finalKeyframe = finalKeyframe;\n }\n // If we removed transform values, reapply them before the next render\n if (this.removedTransforms?.length) {\n this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n element\n .getValue(unsetTransformName)\n .set(unsetTransformValue);\n });\n }\n this.resolveNoneKeyframes();\n }\n}\n\nfunction resolveElements(elementOrSelector, scope, selectorCache) {\n if (elementOrSelector == null) {\n return [];\n }\n if (elementOrSelector instanceof EventTarget) {\n return [elementOrSelector];\n }\n else if (typeof elementOrSelector === \"string\") {\n let root = document;\n if (scope) {\n root = scope.current;\n }\n const elements = selectorCache?.[elementOrSelector] ??\n root.querySelectorAll(elementOrSelector);\n return elements ? Array.from(elements) : [];\n }\n return Array.from(elementOrSelector).filter((element) => element != null);\n}\n\n/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nconst { schedule: microtask} = \n/* @__PURE__ */ createRenderBatcher(queueMicrotask, false);\n\n/**\n * Checks if an element is an SVG element in a way\n * that works across iframes\n */\nfunction isSVGElement(element) {\n return isObject(element) && \"ownerSVGElement\" in element;\n}\n\n/**\n * Checks if an element is specifically an SVGSVGElement (the root SVG element)\n * in a way that works across iframes\n */\nfunction isSVGSVGElement(element) {\n return isSVGElement(element) && element.tagName === \"svg\";\n}\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nconst visualElementStore = new WeakMap();\n\nfunction isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\n/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nconst variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\n/**\n * Updates motion values from props changes.\n * Uses `any` type for element to avoid circular dependencies with VisualElement.\n */\nfunction updateMotionValuesFromProps(element, next, prev) {\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n if (existingValue.liveStyle === true) {\n existingValue.jump(nextValue);\n }\n else if (!existingValue.hasAnimated) {\n existingValue.set(nextValue);\n }\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\n// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addEventListener(\"change\", setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\n/**\n * Static feature definitions - can be injected by framework layer\n */\nlet featureDefinitions = {};\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n return {};\n }\n constructor({ parent, props, presenceContext, reducedMotionConfig, skipAnimations, blockInitialAnimation, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * Decides whether animations should be skipped for this VisualElement.\n * Useful for E2E tests and visual regression testing.\n */\n this.shouldSkipAnimations = false;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n this.KeyframeResolver = KeyframeResolver;\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * Track whether this element has been mounted before, to detect\n * remounts after Suspense unmount/remount cycles.\n */\n this.hasBeenMounted = false;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.renderScheduledAt = 0.0;\n this.scheduleRender = () => {\n const now = time.now();\n if (this.renderScheduledAt < now) {\n this.renderScheduledAt = now;\n frame.render(this.render, false, true);\n }\n };\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.skipAnimationsConfig = skipAnimations;\n this.options = options;\n this.blockInitialAnimation = Boolean(blockInitialAnimation);\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't necessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key]);\n }\n }\n }\n mount(instance) {\n /**\n * If this element has been mounted before (e.g. after a Suspense\n * unmount/remount), reset motion values to their initial state\n * so animations replay correctly from initial → animate.\n */\n if (this.hasBeenMounted) {\n for (const key in this.initialValues) {\n this.values.get(key)?.jump(this.initialValues[key]);\n this.latestValues[key] = this.initialValues[key];\n }\n }\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n /**\n * Determine reduced motion preference. Only initialize the matchMedia\n * listener if we actually need the dynamic value (i.e., when config\n * is neither \"never\" nor \"always\").\n */\n if (this.reducedMotionConfig === \"never\") {\n this.shouldReduceMotion = false;\n }\n else if (this.reducedMotionConfig === \"always\") {\n this.shouldReduceMotion = true;\n }\n else {\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion = prefersReducedMotion.current;\n }\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\", \"reduced-motion-disabled\");\n }\n /**\n * Set whether animations should be skipped based on the config.\n */\n this.shouldSkipAnimations = this.skipAnimationsConfig ?? false;\n this.parent?.addChild(this);\n this.update(this.props, this.presenceContext);\n this.hasBeenMounted = true;\n }\n unmount() {\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.valueSubscriptions.clear();\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent?.removeChild(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\n }\n this.current = null;\n }\n addChild(child) {\n this.children.add(child);\n this.enteringChildren ?? (this.enteringChildren = new Set());\n this.enteringChildren.add(child);\n }\n removeChild(child) {\n this.children.delete(child);\n this.enteringChildren && this.enteringChildren.delete(child);\n }\n bindToMotionValue(key, value) {\n if (this.valueSubscriptions.has(key)) {\n this.valueSubscriptions.get(key)();\n }\n if (value.accelerate &&\n acceleratedValues.has(key) &&\n this.current instanceof HTMLElement) {\n const { factory, keyframes, times, ease, duration } = value.accelerate;\n const animation = new NativeAnimation({\n element: this.current,\n name: key,\n keyframes,\n times,\n ease,\n duration: secondsToMilliseconds(duration),\n });\n const cleanup = factory(animation);\n this.valueSubscriptions.set(key, () => {\n cleanup();\n animation.cancel();\n });\n return;\n }\n const valueIsTransform = transformProps.has(key);\n if (valueIsTransform && this.onBindTransform) {\n this.onBindTransform();\n }\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate && frame.preRender(this.notifyUpdate);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n this.scheduleRender();\n });\n let removeSyncCheck;\n if (typeof window !== \"undefined\" &&\n window.MotionCheckAppearSync) {\n removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n }\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n if (removeSyncCheck)\n removeSyncCheck();\n // Defer to MotionValue.on(\"change\") auto-stop so React 19 remounts\n // can resubscribe before the animation is cancelled (#3315).\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps || {}, this), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n const existingValue = this.values.get(key);\n if (value !== existingValue) {\n if (existingValue)\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key, target) {\n let value = this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : this.getBaseTargetFromProps(this.props, key) ??\n this.readValueFromInstance(this.current, key, this.options);\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(target)) {\n value = getAnimatableNone(key, target);\n }\n this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n }\n return isMotionValue(value) ? value.get() : value;\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n const { initial } = this.props;\n let valueFromInitial;\n if (typeof initial === \"string\" || typeof initial === \"object\") {\n const variant = resolveVariantFromProps(this.props, initial, this.presenceContext?.custom);\n if (variant) {\n valueFromInitial = variant[key];\n }\n }\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n scheduleRenderMicrotask() {\n microtask.render(this.render);\n }\n}\n\nclass DOMVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.KeyframeResolver = DOMKeyframesResolver;\n }\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n const style = props.style;\n return style ? style[key] : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current) {\n this.current.textContent = `${latest}`;\n }\n });\n }\n }\n}\n\n/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(latestValues, transform, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n let transformIsDefault = true;\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n const value = latestValues[key];\n if (value === undefined)\n continue;\n let valueIsDefault = true;\n if (typeof value === \"number\") {\n valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n }\n else {\n const parsed = parseFloat(value);\n valueIsDefault = key.startsWith(\"scale\") ? parsed === 1 : parsed === 0;\n }\n if (!valueIsDefault || transformTemplate) {\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (!valueIsDefault) {\n transformIsDefault = false;\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${valueAsType}) `;\n }\n if (transformTemplate) {\n transform[key] = valueAsType;\n }\n }\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n const { style, vars, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept separately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n continue;\n }\n else if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n else {\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] =\n valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(latestValues, state.transform, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nfunction renderHTML(element, { style, vars }, styleProp, projection) {\n const elementStyle = element.style;\n let key;\n for (key in style) {\n // CSSStyleDeclaration has [index: number]: string; in the types, so we use that as key type.\n elementStyle[key] = style[key];\n }\n // Write projection styles directly to element style\n projection?.applyProjectionStyles(elementStyle, styleProp);\n for (key in vars) {\n // Loop over any CSS variables and assign those.\n // They can only be assigned using `setProperty`.\n elementStyle.setProperty(key, vars[key]);\n }\n}\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber$1(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nconst scaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nfunction scrapeMotionValuesFromProps$1(props, prevProps, visualElement) {\n const style = props.style;\n const prevStyle = prevProps?.style;\n const newValues = {};\n if (!style)\n return newValues;\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevStyle && isMotionValue(prevStyle[key])) ||\n isForcedMotionValue(key, props) ||\n visualElement?.getValue(key)?.liveStyle !== undefined) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nfunction getComputedStyle$1(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n this.renderInstance = renderHTML;\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n return this.projection?.isProjecting\n ? defaultTransformValue(key)\n : readTransformValue(instance, key);\n }\n else {\n const computedStyle = getComputedStyle$1(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, props) {\n buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n }\n}\n\nfunction isObjectKey(key, object) {\n return key in object;\n}\nclass ObjectVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.type = \"object\";\n }\n readValueFromInstance(instance, key) {\n if (isObjectKey(key, instance)) {\n const value = instance[key];\n if (typeof value === \"string\" || typeof value === \"number\") {\n return value;\n }\n }\n return undefined;\n }\n getBaseTargetFromProps() {\n return undefined;\n }\n removeValueFromRenderState(key, renderState) {\n delete renderState.output[key];\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n build(renderState, latestValues) {\n Object.assign(renderState.output, latestValues);\n }\n renderInstance(instance, { output }) {\n Object.assign(instance, output);\n }\n sortInstanceNodePosition() {\n return 0;\n }\n}\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n *\n * Note: We use unitless values for stroke-dasharray and stroke-dashoffset\n * because Safari incorrectly scales px values when the page is zoomed.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset (unitless to avoid Safari zoom bug)\n attrs[keys.offset] = `${-offset}`;\n // Build the dash array (unitless to avoid Safari zoom bug)\n attrs[keys.array] = `${length} ${spacing}`;\n}\n\n/**\n * CSS Motion Path properties that should remain as CSS styles on SVG elements.\n */\nconst cssMotionPathProperties = [\n \"offsetDistance\",\n \"offsetPath\",\n \"offsetRotate\",\n \"offsetAnchor\",\n];\n/**\n * Build SVG visual attributes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate, styleProp) {\n buildHTMLStyles(state, latest, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style } = state;\n /**\n * However, we apply transforms as CSS transforms.\n * So if we detect a transform, transformOrigin we take it from attrs and copy it into style.\n */\n if (attrs.transform) {\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n if (style.transform || attrs.transformOrigin) {\n style.transformOrigin = attrs.transformOrigin ?? \"50% 50%\";\n delete attrs.transformOrigin;\n }\n if (style.transform) {\n /**\n * SVG's element transform-origin uses its own median as a reference.\n * Therefore, transformBox becomes a fill-box\n */\n style.transformBox = styleProp?.transformBox ?? \"fill-box\";\n delete attrs.transformBox;\n }\n for (const key of cssMotionPathProperties) {\n if (attrs[key] !== undefined) {\n style[key] = attrs[key];\n delete attrs[key];\n }\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\n/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nconst isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n this.measureInstanceViewportBox = createBox;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n build(renderState, latestValues, props) {\n buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nfunction isDOMKeyframes(keyframes) {\n return typeof keyframes === \"object\" && !Array.isArray(keyframes);\n}\n\nfunction resolveSubjects(subject, keyframes, scope, selectorCache) {\n if (subject == null) {\n return [];\n }\n if (typeof subject === \"string\" && isDOMKeyframes(keyframes)) {\n return resolveElements(subject, scope, selectorCache);\n }\n else if (subject instanceof NodeList) {\n return Array.from(subject);\n }\n else if (Array.isArray(subject)) {\n return subject.filter((s) => s != null);\n }\n else {\n return [subject];\n }\n}\n\nfunction calculateRepeatDuration(duration, repeat, repeatDelay) {\n return duration * (repeat + 1) + repeatDelay * repeat;\n}\n\n/**\n * Given a absolute or relative time definition and current/prev time state of the sequence,\n * calculate an absolute time for the next keyframes.\n */\nfunction calcNextTime(current, next, prev, labels) {\n if (typeof next === \"number\") {\n return next;\n }\n else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n return Math.max(0, current + parseFloat(next));\n }\n else if (next === \"<\") {\n return prev;\n }\n else if (next.startsWith(\"<\")) {\n return Math.max(0, prev + parseFloat(next.slice(1)));\n }\n else {\n return labels.get(next) ?? current;\n }\n}\n\nfunction eraseKeyframes(sequence, startTime, endTime) {\n for (let i = 0; i < sequence.length; i++) {\n const keyframe = sequence[i];\n if (keyframe.at > startTime && keyframe.at < endTime) {\n removeItem(sequence, keyframe);\n // If we remove this item we have to push the pointer back one\n i--;\n }\n }\n}\nfunction addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {\n /**\n * Erase every existing value between currentTime and targetTime,\n * this will essentially splice this timeline into any currently\n * defined ones.\n */\n eraseKeyframes(sequence, startTime, endTime);\n for (let i = 0; i < keyframes.length; i++) {\n sequence.push({\n value: keyframes[i],\n at: mixNumber$1(startTime, endTime, offset[i]),\n easing: getEasingForSegment(easing, i),\n });\n }\n}\n\n/**\n * Take an array of times that represent repeated keyframes. For instance\n * if we have original times of [0, 0.5, 1] then our repeated times will\n * be [0, 0.5, 1, 1, 1.5, 2]. Loop over the times and scale them back\n * down to a 0-1 scale.\n *\n * `repeatDelayUnits` is the repeatDelay expressed in units of a single\n * iteration's duration, so the total span equals `(repeat + 1) + repeat * repeatDelayUnits`.\n */\nfunction normalizeTimes(times, repeat, repeatDelayUnits = 0) {\n const totalUnits = repeat + 1 + repeat * repeatDelayUnits;\n for (let i = 0; i < times.length; i++) {\n times[i] = times[i] / totalUnits;\n }\n}\n\nfunction compareByTime(a, b) {\n if (a.at === b.at) {\n if (a.value === null)\n return 1;\n if (b.value === null)\n return -1;\n return 0;\n }\n else {\n return a.at - b.at;\n }\n}\n\nconst defaultSegmentEasing = \"easeInOut\";\nconst MAX_REPEAT = 20;\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {\n const defaultDuration = defaultTransition.duration || 0.3;\n const animationDefinitions = new Map();\n const sequences = new Map();\n const elementCache = {};\n const timeLabels = new Map();\n let prevTime = 0;\n let currentTime = 0;\n let totalDuration = 0;\n /**\n * Build the timeline by mapping over the sequence array and converting\n * the definitions into keyframes and offsets with absolute time values.\n * These will later get converted into relative offsets in a second pass.\n */\n for (let i = 0; i < sequence.length; i++) {\n const segment = sequence[i];\n /**\n * If this is a timeline label, mark it and skip the rest of this iteration.\n */\n if (typeof segment === \"string\") {\n timeLabels.set(segment, currentTime);\n continue;\n }\n else if (!Array.isArray(segment)) {\n timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n continue;\n }\n let [subject, keyframes, transition = {}] = segment;\n /**\n * If a relative or absolute time value has been specified we need to resolve\n * it in relation to the currentTime.\n */\n if (transition.at !== undefined) {\n currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n }\n /**\n * Keep track of the maximum duration in this definition. This will be\n * applied to currentTime once the definition has been parsed.\n */\n let maxDuration = 0;\n const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = defaultTransition.type || \"keyframes\", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;\n let { ease = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n /**\n * Resolve stagger() if defined.\n */\n const calculatedDelay = typeof delay === \"function\"\n ? delay(elementIndex, numSubjects)\n : delay;\n /**\n * If this animation should and can use a spring, generate a spring easing function.\n */\n const numKeyframes = valueKeyframesAsList.length;\n const createGenerator = isGenerator(type)\n ? type\n : generators?.[type || \"keyframes\"];\n if (numKeyframes <= 2 && createGenerator) {\n /**\n * As we're creating an easing function from a spring,\n * ideally we want to generate it using the real distance\n * between the two keyframes. However this isn't always\n * possible - in these situations we use 0-100.\n */\n let absoluteDelta = 100;\n if (numKeyframes === 2 &&\n isNumberKeyframesArray(valueKeyframesAsList)) {\n const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n absoluteDelta = Math.abs(delta);\n }\n const springTransition = {\n ...defaultTransition,\n ...remainingTransition,\n };\n if (duration !== undefined) {\n springTransition.duration = secondsToMilliseconds(duration);\n }\n const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n ease = springEasing.ease;\n duration = springEasing.duration;\n }\n duration ?? (duration = defaultDuration);\n const startTime = currentTime + calculatedDelay;\n /**\n * If there's only one time offset of 0, fill in a second with length 1\n */\n if (times.length === 1 && times[0] === 0) {\n times[1] = 1;\n }\n /**\n * Fill out if offset if fewer offsets than keyframes\n */\n const remainder = times.length - valueKeyframesAsList.length;\n remainder > 0 && fillOffset(times, remainder);\n /**\n * If only one value has been set, ie [1], push a null to the start of\n * the keyframe array. This will let us mark a keyframe at this point\n * that will later be hydrated with the previous value.\n */\n valueKeyframesAsList.length === 1 &&\n valueKeyframesAsList.unshift(null);\n /**\n * Segments can't express `repeat: Infinity` or very large\n * counts — they'd leave dead time after the segment or\n * explode the keyframe array. Ignore with a warning.\n */\n if (repeat) {\n warning(repeat < MAX_REPEAT, `Sequence segments can't repeat ${repeat} times — ignoring repeat option. Use a value below ${MAX_REPEAT} or apply repeat at the sequence level instead.`);\n }\n if (repeat && repeat < MAX_REPEAT) {\n /**\n * Express repeatDelay in units of a single iteration's duration\n * so it can be added to the per-iteration time offsets below\n * before they're normalized to 0-1.\n */\n const repeatDelayUnits = duration > 0 ? repeatDelay / duration : 0;\n duration = calculateRepeatDuration(duration, repeat, repeatDelay);\n const originalKeyframes = [...valueKeyframesAsList];\n const originalTimes = [...times];\n ease = Array.isArray(ease) ? [...ease] : [ease];\n const originalEase = [...ease];\n /**\n * For reverse/mirror, alternate iterations play the segment\n * backwards. mirror matches JSAnimation's mirroredGenerator:\n * reversed keyframes, easings unchanged. reverse matches\n * JSAnimation's iterationProgress = 1 - p: reversed\n * keyframes, easing array reversed AND each function easing\n * mapped through reverseEasing (string easings unchanged —\n * they're resolved later by the keyframes engine).\n */\n const isFlipping = repeatType === \"reverse\" || repeatType === \"mirror\";\n let flippedKeyframes = originalKeyframes;\n let flippedEases = originalEase;\n if (isFlipping) {\n flippedKeyframes = [...originalKeyframes].reverse();\n if (repeatType === \"reverse\") {\n flippedEases = [...originalEase]\n .reverse()\n .map((e) => typeof e === \"function\"\n ? reverseEasing(e)\n : e);\n }\n }\n for (let repeatIndex = 0; repeatIndex < repeat; repeatIndex++) {\n const isFlipped = isFlipping && repeatIndex % 2 === 0;\n const iterKeyframes = isFlipped\n ? flippedKeyframes\n : originalKeyframes;\n const iterEase = isFlipped ? flippedEases : originalEase;\n const iterStartOffset = (repeatIndex + 1) * (1 + repeatDelayUnits);\n /**\n * If repeatDelay is set, hold the previous iteration's\n * final value through the delay by inserting a keyframe\n * at the moment the next iteration begins.\n */\n if (repeatDelayUnits > 0) {\n valueKeyframesAsList.push(valueKeyframesAsList[valueKeyframesAsList.length - 1]);\n times.push(iterStartOffset);\n ease.push(\"linear\");\n }\n valueKeyframesAsList.push(...iterKeyframes);\n for (let keyframeIndex = 0; keyframeIndex < iterKeyframes.length; keyframeIndex++) {\n times.push(originalTimes[keyframeIndex] + iterStartOffset);\n ease.push(keyframeIndex === 0\n ? \"linear\"\n : getEasingForSegment(iterEase, keyframeIndex - 1));\n }\n }\n normalizeTimes(times, repeat, repeatDelayUnits);\n }\n const targetTime = startTime + duration;\n /**\n * Add keyframes, mapping offsets to absolute time.\n */\n addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime);\n maxDuration = Math.max(calculatedDelay + duration, maxDuration);\n totalDuration = Math.max(targetTime, totalDuration);\n };\n if (isMotionValue(subject)) {\n const subjectSequence = getSubjectSequence(subject, sequences);\n resolveValueSequence(keyframes, transition, getValueSequence(\"default\", subjectSequence));\n }\n else {\n const subjects = resolveSubjects(subject, keyframes, scope, elementCache);\n const numSubjects = subjects.length;\n /**\n * For every element in this segment, process the defined values.\n */\n for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n /**\n * Cast necessary, but we know these are of this type\n */\n keyframes = keyframes;\n transition = transition;\n const thisSubject = subjects[subjectIndex];\n const subjectSequence = getSubjectSequence(thisSubject, sequences);\n for (const key in keyframes) {\n resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n }\n }\n }\n prevTime = currentTime;\n currentTime += maxDuration;\n }\n /**\n * For every element and value combination create a new animation.\n */\n sequences.forEach((valueSequences, element) => {\n for (const key in valueSequences) {\n const valueSequence = valueSequences[key];\n /**\n * Arrange all the keyframes in ascending time order.\n */\n valueSequence.sort(compareByTime);\n const keyframes = [];\n const valueOffset = [];\n const valueEasing = [];\n /**\n * For each keyframe, translate absolute times into\n * relative offsets based on the total duration of the timeline.\n */\n for (let i = 0; i < valueSequence.length; i++) {\n const { at, value, easing } = valueSequence[i];\n keyframes.push(value);\n valueOffset.push(progress(0, totalDuration, at));\n valueEasing.push(easing || \"easeOut\");\n }\n /**\n * If the first keyframe doesn't land on offset: 0\n * provide one by duplicating the initial keyframe. This ensures\n * it snaps to the first keyframe when the animation starts.\n */\n if (valueOffset[0] !== 0) {\n valueOffset.unshift(0);\n keyframes.unshift(keyframes[0]);\n valueEasing.unshift(defaultSegmentEasing);\n }\n /**\n * If the last keyframe doesn't land on offset: 1\n * provide one with a null wildcard value. This will ensure it\n * stays static until the end of the animation.\n */\n if (valueOffset[valueOffset.length - 1] !== 1) {\n valueOffset.push(1);\n keyframes.push(null);\n }\n if (!animationDefinitions.has(element)) {\n animationDefinitions.set(element, {\n keyframes: {},\n transition: {},\n });\n }\n const definition = animationDefinitions.get(element);\n definition.keyframes[key] = keyframes;\n /**\n * Exclude `type` from defaultTransition since springs have been\n * converted to duration-based easing functions in resolveValueSequence.\n * Including `type: \"spring\"` would cause JSAnimation to error when\n * the merged keyframes array has more than 2 keyframes.\n */\n const { type: _type, ...remainingDefaultTransition } = defaultTransition;\n definition.transition[key] = {\n ...remainingDefaultTransition,\n duration: totalDuration,\n ease: valueEasing,\n times: valueOffset,\n ...sequenceTransition,\n };\n }\n });\n return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n !sequences.has(subject) && sequences.set(subject, {});\n return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n if (!sequences[name])\n sequences[name] = [];\n return sequences[name];\n}\nfunction keyframesAsList(keyframes) {\n return Array.isArray(keyframes) ? keyframes : [keyframes];\n}\nfunction getValueTransition(transition, key) {\n return transition && transition[key]\n ? {\n ...transition,\n ...transition[key],\n }\n : { ...transition };\n}\nconst isNumber = (keyframe) => typeof keyframe === \"number\";\nconst isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber);\n\nfunction createDOMVisualElement(element) {\n const options = {\n presenceContext: null,\n props: {},\n visualState: {\n renderState: {\n transform: {},\n transformOrigin: {},\n style: {},\n vars: {},\n attrs: {},\n },\n latestValues: {},\n },\n };\n const node = isSVGElement(element) && !isSVGSVGElement(element)\n ? new SVGVisualElement(options)\n : new HTMLVisualElement(options);\n node.mount(element);\n visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n const options = {\n presenceContext: null,\n props: {},\n visualState: {\n renderState: {\n output: {},\n },\n latestValues: {},\n },\n };\n const node = new ObjectVisualElement(options);\n node.mount(subject);\n visualElementStore.set(subject, node);\n}\n\nfunction isSingleValue(subject, keyframes) {\n return (isMotionValue(subject) ||\n typeof subject === \"number\" ||\n (typeof subject === \"string\" && !isDOMKeyframes(keyframes)));\n}\n/**\n * Implementation\n */\nfunction animateSubject(subject, keyframes, options, scope) {\n const animations = [];\n if (isSingleValue(subject, keyframes)) {\n animations.push(animateSingleValue(subject, isDOMKeyframes(keyframes)\n ? keyframes.default || keyframes\n : keyframes, options ? options.default || options : options));\n }\n else {\n // Gracefully handle null/undefined subjects (e.g., from querySelector returning null)\n if (subject == null) {\n return animations;\n }\n const subjects = resolveSubjects(subject, keyframes, scope);\n const numSubjects = subjects.length;\n invariant(Boolean(numSubjects), \"No valid elements provided.\", \"no-valid-elements\");\n for (let i = 0; i < numSubjects; i++) {\n const thisSubject = subjects[i];\n const createVisualElement = thisSubject instanceof Element\n ? createDOMVisualElement\n : createObjectVisualElement;\n if (!visualElementStore.has(thisSubject)) {\n createVisualElement(thisSubject);\n }\n const visualElement = visualElementStore.get(thisSubject);\n const transition = { ...options };\n /**\n * Resolve stagger function if provided.\n */\n if (\"delay\" in transition &&\n typeof transition.delay === \"function\") {\n transition.delay = transition.delay(i, numSubjects);\n }\n animations.push(...animateTarget(visualElement, { ...keyframes, transition }, {}));\n }\n }\n return animations;\n}\n\nfunction animateSequence(sequence, options, scope) {\n const animations = [];\n /**\n * Pre-process: replace function segments with MotionValue segments,\n * subscribe callbacks immediately\n */\n const processedSequence = sequence.map((segment) => {\n if (Array.isArray(segment) && typeof segment[0] === \"function\") {\n const callback = segment[0];\n const mv = motionValue(0);\n mv.on(\"change\", callback);\n if (segment.length === 1) {\n return [mv, [0, 1]];\n }\n else if (segment.length === 2) {\n return [mv, [0, 1], segment[1]];\n }\n else {\n return [mv, segment[1], segment[2]];\n }\n }\n return segment;\n });\n const animationDefinitions = createAnimationsFromSequence(processedSequence, options, scope, { spring });\n animationDefinitions.forEach(({ keyframes, transition }, subject) => {\n animations.push(...animateSubject(subject, keyframes, transition));\n });\n return animations;\n}\n\nfunction isSequence(value) {\n return Array.isArray(value) && value.some(Array.isArray);\n}\n/**\n * Creates an animation function that is optionally scoped\n * to a specific element.\n */\nfunction createScopedAnimate(options = {}) {\n const { scope, reduceMotion, skipAnimations } = options;\n /**\n * Implementation\n */\n function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n let animations = [];\n let animationOnComplete;\n const inherited = {};\n if (reduceMotion !== undefined)\n inherited.reduceMotion = reduceMotion;\n if (skipAnimations !== undefined)\n inherited.skipAnimations = skipAnimations;\n if (isSequence(subjectOrSequence)) {\n const { onComplete, ...sequenceOptions } = optionsOrKeyframes || {};\n if (typeof onComplete === \"function\") {\n animationOnComplete = onComplete;\n }\n animations = animateSequence(subjectOrSequence, { ...inherited, ...sequenceOptions }, scope);\n }\n else {\n // Extract top-level onComplete so it doesn't get applied per-value\n const { onComplete, ...rest } = options || {};\n if (typeof onComplete === \"function\") {\n animationOnComplete = onComplete;\n }\n animations = animateSubject(subjectOrSequence, optionsOrKeyframes, { ...inherited, ...rest }, scope);\n }\n const animation = new GroupAnimationWithThen(animations);\n if (animationOnComplete) {\n animation.finished.then(animationOnComplete);\n }\n if (scope) {\n scope.animations.push(animation);\n animation.finished.then(() => {\n removeItem(scope.animations, animation);\n });\n }\n return animation;\n }\n return scopedAnimate;\n}\nconst animate = createScopedAnimate();\n\nconst STYLES = {\n // TODO: KDS-873 use token references once they are available\n container: {\n background: \"var(--kds-color-background-selected-initial)\",\n color: \"var(--kds-color-text-and-icon-selected)\"},\n badge: {\n background: \"var(--kds-color-background-selected-hover)\",\n color: \"var(--kds-color-text-and-icon-neutral)\",\n font: \"var(--kds-font-base-title-small)\",\n dimension: \"var(--kds-dimension-component-height-1-25x)\",\n padding: \"var(--kds-spacing-container-0-12x)\"\n },\n marker: {\n background: \"var(--kds-color-background-selected-bold-initial)\",\n width: \"var(--kds-dimension-component-width-0-125x)\",\n borderRadius: \"0 var(--kds-border-radius-container-0-12x) var(--kds-border-radius-container-0-12x) 0\"\n }\n};\nconst toKebabCase = (str) => {\n return str.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n};\nconst applyStyles = (element, styles) => {\n Object.entries(styles).forEach(([property, value]) => {\n if (!value) {\n return;\n }\n element.style.setProperty(\n toKebabCase(property.toString()),\n value.toString()\n );\n });\n};\nconst createGhostBadgeElement = (count) => {\n const badge = document.createElement(\"div\");\n const MAX_COUNT = 99;\n badge.innerText = count <= MAX_COUNT ? count.toString() : \"99+\";\n badge.id = \"drag-ghost-badge\";\n const badgeStyles = {\n background: STYLES.badge.background,\n color: STYLES.badge.color,\n font: STYLES.badge.font,\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n right: \"-10px\",\n top: \"-10px\",\n borderRadius: \"50%\",\n width: STYLES.badge.dimension,\n height: STYLES.badge.dimension,\n padding: STYLES.badge.padding,\n pointerEvents: \"none\"\n };\n applyStyles(badge, badgeStyles);\n return badge;\n};\nconst createGhostMarkerElement = () => {\n const marker = document.createElement(\"div\");\n marker.setAttribute(\"data-id\", \"drag-ghost-marker\");\n const markerStyles = {\n background: STYLES.marker.background,\n position: \"absolute\",\n top: \"50%\",\n left: \"0\",\n width: STYLES.marker.width,\n height: \"calc(2 / 3 * 100%)\",\n borderRadius: STYLES.marker.borderRadius,\n pointerEvents: \"none\",\n transform: \"translateY(-50%)\"\n };\n applyStyles(marker, markerStyles);\n return marker;\n};\nconst createGhostIcon = (target) => {\n const originalIcon = target.querySelector(\"svg\");\n if (!originalIcon) {\n return null;\n }\n const iconEl = originalIcon.cloneNode(true);\n return iconEl;\n};\nconst applyPositionOffsets = (position) => {\n return {\n x: position.x + document.documentElement.scrollLeft,\n y: position.y + document.documentElement.scrollTop\n };\n};\nconst createGhostElement = ({\n textContent,\n target,\n badgeCount,\n addShadow = false\n}) => {\n const TEXT_SIZE_THRESHOLD = 15;\n const ghost = document.createElement(\"div\");\n ghost.innerText = textContent.length > TEXT_SIZE_THRESHOLD ? `${textContent.slice(0, TEXT_SIZE_THRESHOLD)}…` : textContent;\n ghost.setAttribute(\"data-id\", \"drag-ghost\");\n const fontSize = getComputedStyle(target).getPropertyValue(\"font-size\");\n const { x, y, width, height } = target.getBoundingClientRect();\n const withOffset = applyPositionOffsets({ x, y });\n const ghostStyles = {\n background: STYLES.container.background,\n color: STYLES.container.color,\n // use the original target's position to initialize the ghost\n position: \"absolute\",\n top: `${withOffset.y}px`,\n left: `${withOffset.x}px`,\n width: `${width}px`,\n height: `${height}px`,\n zIndex: \"9\",\n // make sure the ghost doesn't interfere with the drag\n pointerEvents: \"none\",\n fontSize,\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n padding: \"0 var(--kds-spacing-container-0-75x)\",\n gap: \"var(--kds-spacing-container-0-25x)\",\n borderRadius: \"var(--kds-border-radius-container-0-31x)\",\n opacity: \"1\",\n boxShadow: addShadow ? \"var(--kds-elevation-level-1)\" : \"initial\"\n };\n applyStyles(ghost, ghostStyles);\n const iconEl = createGhostIcon(target);\n if (iconEl) {\n ghost.prepend(iconEl);\n }\n ghost.appendChild(createGhostMarkerElement());\n if (badgeCount) {\n const badge = createGhostBadgeElement(badgeCount);\n ghost.appendChild(badge);\n return { ghost, badge };\n }\n return { ghost };\n};\nconst createGhostPositionUpdateHandler = (ghosts) => ({ clientX, clientY }) => {\n if (clientX === 0 && clientY === 0) {\n return;\n }\n const { x: left, y: top } = applyPositionOffsets({\n x: clientX,\n y: clientY\n });\n ghosts.forEach((g) => {\n animate(g, { left, top, width: \"200px\" }, { duration: 0.01 });\n });\n};\nlet customGhostPreviewElement = null;\nconst hideCustomGhostPreviewElement = () => {\n if (customGhostPreviewElement) {\n customGhostPreviewElement.style.display = \"none\";\n }\n};\nconst showCustomGhostPreviewElement = () => {\n if (customGhostPreviewElement) {\n customGhostPreviewElement.style.display = \"flex\";\n }\n};\nconst createDragGhosts = ({\n badgeCount = null,\n selectedTargets\n}) => {\n const ensureCleanState = () => {\n const maybeGhosts = document.querySelectorAll('[data-id=\"drag-ghost\"]');\n if (maybeGhosts.length) {\n maybeGhosts.forEach((el) => el.parentNode?.removeChild(el));\n }\n };\n ensureCleanState();\n const [firstTarget, ...otherTargets] = selectedTargets;\n const { ghost: firstGhost, badge } = createGhostElement({\n addShadow: true,\n textContent: firstTarget.textContent,\n badgeCount,\n target: firstTarget.targetEl\n });\n const ghosts = otherTargets.map(({ textContent, targetEl }) => {\n const { ghost } = createGhostElement({\n textContent,\n target: targetEl,\n addShadow: false\n });\n return { ghost, targetEl };\n });\n const allGhosts = [\n { ghost: firstGhost, targetEl: firstTarget.targetEl },\n ...ghosts\n ];\n allGhosts.reverse().forEach(({ ghost }) => {\n document.body.appendChild(ghost);\n });\n const ghostElements = allGhosts.map(({ ghost }) => ghost);\n let cleanupCustomDragPreviewEventHandlers;\n const updatePosition = createGhostPositionUpdateHandler(ghostElements);\n window.addEventListener(\"dragover\", updatePosition, { capture: true });\n const setGhostDisplay = (display) => ({ ghost }) => {\n ghost.style.display = display;\n };\n const removeGhosts = (animateOut = true) => {\n const removeGhost = ({ ghost }) => {\n if (!animateOut) {\n ghost.style.display = \"none\";\n }\n try {\n document.body.removeChild(ghost);\n } catch (_error) {\n }\n window.removeEventListener(\"dragover\", updatePosition, { capture: true });\n };\n hideCustomGhostPreviewElement();\n if (!animateOut) {\n allGhosts.forEach(removeGhost);\n return;\n }\n allGhosts.forEach(({ ghost, targetEl }) => {\n const { x, y, width } = targetEl.getBoundingClientRect();\n if (badge) {\n badge.style.opacity = \"0\";\n }\n const { x: left, y: top } = applyPositionOffsets({ x, y });\n animate(\n ghost,\n { left, top, width },\n {\n duration: 0.2,\n onComplete: () => {\n removeGhost({ ghost });\n document.removeEventListener(\"dragover\", updatePosition, {\n capture: true\n });\n }\n }\n );\n });\n cleanupCustomDragPreviewEventHandlers?.();\n };\n const replaceGhostPreview = ({ shouldUseCustomPreview, ghostPreviewEl, opts = {} }) => {\n customGhostPreviewElement = ghostPreviewEl;\n if (shouldUseCustomPreview) {\n window.removeEventListener(\"dragover\", updatePosition, {\n capture: true\n });\n showCustomGhostPreviewElement();\n const updateCustomDragPreview = (event) => {\n if (!customGhostPreviewElement) {\n return;\n }\n customGhostPreviewElement.style.left = `${event.clientX - (opts.leftOffset || 0)}px`;\n customGhostPreviewElement.style.top = `${event.clientY - (opts.topOffset || 0)}px`;\n };\n window.addEventListener(\"dragover\", updateCustomDragPreview, {\n capture: true\n });\n cleanupCustomDragPreviewEventHandlers?.();\n cleanupCustomDragPreviewEventHandlers = () => {\n window.removeEventListener(\"dragover\", updateCustomDragPreview, {\n capture: true\n });\n };\n allGhosts.forEach(setGhostDisplay(\"none\"));\n } else {\n window.addEventListener(\"dragover\", updatePosition, { capture: true });\n hideCustomGhostPreviewElement();\n allGhosts.forEach(setGhostDisplay(\"flex\"));\n }\n };\n return { ghosts: ghostElements, removeGhosts, replaceGhostPreview };\n};\n\nconst useDragPatchPosition = () => {\n const lastWindowDragEvent = shallowRef();\n const trackClientXY = (event) => {\n lastWindowDragEvent.value = event;\n };\n const startTrack = () => {\n window.addEventListener(\"dragover\", trackClientXY, { capture: true });\n };\n const stopTrack = () => {\n window.removeEventListener(\"dragover\", trackClientXY, { capture: true });\n };\n const updateClientXY = (event) => {\n if (lastWindowDragEvent.value && event.timeStamp - lastWindowDragEvent.value.timeStamp < 100) {\n return {\n ...event,\n clientX: lastWindowDragEvent.value.clientX,\n clientY: lastWindowDragEvent.value.clientY\n };\n }\n return event;\n };\n return { stopTrack, startTrack, updateClientXY };\n};\nlet __removeGhosts = null;\nlet __replaceGhostPreview = null;\nconst EMPTY_DRAG_IMAGE = (() => {\n if (typeof window !== \"undefined\") {\n const img = new Image(1, 1);\n img.src = \"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==\";\n return img;\n }\n return null;\n})();\nconst useItemDragging = (options) => {\n const {\n items,\n itemBack,\n getItemElement,\n shouldUseCustomDragPreview,\n getCustomPreviewEl,\n multiSelection,\n isDirectory\n } = options;\n const { startTrack, stopTrack, updateClientXY } = useDragPatchPosition();\n const isDragging = ref(false);\n const startDragItemIndex = ref(null);\n const selectedItems = computed(\n () => multiSelection.selectedIndexes.value.map((index) => items.value[index])\n );\n const selectedItemIds = computed(\n () => selectedItems.value.map((item) => item.id)\n );\n const getElementByItemIndex = (index, isGoBackItem = false) => {\n if (isGoBackItem) {\n return itemBack.value;\n }\n return getItemElement(index);\n };\n const onDragStart = (event, index) => {\n isDragging.value = true;\n startDragItemIndex.value = index;\n startTrack();\n if (EMPTY_DRAG_IMAGE && EMPTY_DRAG_IMAGE.complete && options.draggingAnimationMode.value !== \"disabled\") {\n event.dataTransfer.dropEffect = \"move\";\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setDragImage(EMPTY_DRAG_IMAGE, 0, 0);\n }\n if (!multiSelection.isSelected(index)) {\n multiSelection.resetSelection();\n multiSelection.handleSelectionClick(index);\n }\n if (options.draggingAnimationMode.value === \"disabled\") {\n return;\n }\n const otherSelectedIndexes = multiSelection.selectedIndexes.value.filter(\n (selectedIndex) => index !== selectedIndex\n );\n const toGhostTarget = (_index) => {\n const targetEl = getElementByItemIndex(_index);\n return targetEl ? {\n targetEl,\n textContent: items.value[_index].name\n } : null;\n };\n const selectedTargets = [].concat(toGhostTarget(index)).concat(otherSelectedIndexes.map(toGhostTarget)).filter((t) => t !== null);\n const dragGhostHelpers = createDragGhosts({\n badgeCount: multiSelection.isMultipleSelectionActive(index) ? otherSelectedIndexes.length + 1 : null,\n selectedTargets\n });\n __removeGhosts = dragGhostHelpers.removeGhosts;\n __replaceGhostPreview = dragGhostHelpers.replaceGhostPreview;\n };\n const onDragEnter = (event, index, isGoBackItem = false) => {\n if (!isDragging.value) {\n return;\n }\n if (multiSelection.isSelected(index) && !isGoBackItem) {\n return;\n }\n if (index !== startDragItemIndex.value) {\n const draggedOverEl = getElementByItemIndex(index, isGoBackItem);\n draggedOverEl?.classList.add(\"dragging-over\");\n }\n };\n const onDragOver = (event) => {\n if (isDragging.value) {\n event.preventDefault();\n }\n };\n const onDrag = (event, item) => ({\n event: updateClientXY(event),\n item\n });\n watch(options.draggingAnimationMode, (next, prev) => {\n if (next !== prev && prev === \"disabled\") {\n __removeGhosts?.();\n }\n });\n watch(shouldUseCustomDragPreview, () => {\n if (isDragging.value) {\n __replaceGhostPreview?.({\n shouldUseCustomPreview: shouldUseCustomDragPreview.value,\n ghostPreviewEl: getCustomPreviewEl(),\n opts: { leftOffset: 35, topOffset: 35 }\n });\n }\n });\n const onDragLeave = (event, index, isGoBackItem = false) => {\n const draggedOverEl = getElementByItemIndex(index, isGoBackItem);\n draggedOverEl?.classList.remove(\"dragging-over\");\n };\n const hasDroppedInside = ref(false);\n const doRemoveGhosts = (animateOut) => {\n __removeGhosts?.(animateOut);\n __removeGhosts = null;\n };\n const onDrop = (event, index, isGoBackItem = false) => {\n const droppedEl = getElementByItemIndex(index, isGoBackItem);\n droppedEl?.classList.remove(\"dragging-over\");\n const sourceItems = [...selectedItemIds.value];\n hasDroppedInside.value = true;\n const onComplete = (isSuccessful) => {\n if (isSuccessful) {\n multiSelection.resetSelection();\n }\n doRemoveGhosts(!isSuccessful);\n };\n if (!isGoBackItem && !isDirectory(items.value[index])) {\n doRemoveGhosts(true);\n return null;\n }\n const targetItem = isGoBackItem ? \"..\" : items.value[index].id;\n const isTargetSelected = sourceItems.includes(targetItem);\n if (isTargetSelected) {\n doRemoveGhosts(true);\n return null;\n }\n if (options.draggingAnimationMode.value === \"auto\") {\n onComplete(true);\n }\n return {\n sourceItems,\n targetItem,\n onComplete\n };\n };\n const onDragEnd = (event, item) => {\n isDragging.value = false;\n stopTrack();\n if (event.dataTransfer?.dropEffect === \"none\") {\n doRemoveGhosts(true);\n return null;\n }\n if (hasDroppedInside.value) {\n hasDroppedInside.value = false;\n return null;\n }\n const onComplete = (isSuccessfulDrop) => {\n if (isSuccessfulDrop) {\n multiSelection.resetSelection();\n }\n doRemoveGhosts(!isSuccessfulDrop);\n };\n if (options.draggingAnimationMode.value === \"auto\") {\n onComplete(true);\n }\n return { event, sourceItem: item, onComplete };\n };\n return {\n isDragging,\n onDragStart,\n onDragEnter,\n onDragOver,\n onDrag,\n onDragLeave,\n onDrop,\n onDragEnd\n };\n};\n\nconst defaultKeys = [\n \"Tab\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \" \",\n \"Enter\"\n];\nconst useKeyPressedUntilMouseClick = (keys = defaultKeys) => {\n const hasUsedKeyboard = ref(false);\n const turnKeyboardUsageOn = (event) => {\n if (keys.includes(event.key)) {\n hasUsedKeyboard.value = true;\n }\n };\n const turnKeyboardUsageOff = () => {\n hasUsedKeyboard.value = false;\n };\n onMounted(() => {\n document.addEventListener(\"keydown\", turnKeyboardUsageOn, {\n capture: true\n });\n document.addEventListener(\"pointerdown\", turnKeyboardUsageOff, {\n capture: true\n });\n });\n onUnmounted(() => {\n document.removeEventListener(\"keydown\", turnKeyboardUsageOn, true);\n document.removeEventListener(\"pointerdown\", turnKeyboardUsageOff, true);\n });\n return hasUsedKeyboard;\n};\n\nconst ELEMENT_ID = \"kds-file-explorer-context-menu-anchor-helper\";\nconst remove = () => {\n document.querySelector(`#${ELEMENT_ID}`)?.remove();\n};\nconst create = (top, left, anchorStyle) => {\n remove();\n const element = document.createElement(\"div\");\n element.id = ELEMENT_ID;\n element.ariaHidden = \"true\";\n element.style.position = \"absolute\";\n element.style.top = top;\n element.style.left = left;\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.pointerEvents = \"none\";\n Object.assign(element.style, anchorStyle);\n return element;\n};\nconst popoverAnchor = {\n create,\n remove\n};\n\nconst _hoisted_1$I = { class: \"file-explorer\" };\nconst _hoisted_2$q = {\n key: 0,\n class: \"empty\"\n};\nconst VIRTUAL_ITEM_BUFFER = 16;\nconst _sfc_main$13 = /* @__PURE__ */ defineComponent({\n __name: \"KdsFileExplorer\",\n props: /* @__PURE__ */ mergeModels({\n size: { default: \"large\" },\n fullPath: { default: \"\" },\n items: {},\n isRootFolder: { type: Boolean, default: true },\n disableMultiSelect: { type: Boolean, default: false },\n disableSelection: { type: Boolean, default: false },\n disableDragging: { type: Boolean, default: false },\n draggingAnimationMode: { default: \"auto\" },\n clickOutsideExceptions: { default: () => [] },\n selectedItemIds: { default: () => [] },\n emptyState: {},\n contextMenuBuilder: {},\n maxContextMenuHeight: {}\n }, {\n \"activeRenamedItemId\": {\n default: null\n },\n \"activeRenamedItemIdModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"update:selectedItemIds\", \"changeDirectory\", \"openFile\", \"moveItems\", \"dragend\", \"drag\", \"renameFile\"], [\"update:activeRenamedItemId\"]),\n setup(__props, { emit: __emit }) {\n useCssVars((_ctx) => ({\n \"v6215695b\": itemHeight.value + \"px\"\n }));\n const props = __props;\n const activeRenamedItemId = useModel(__props, \"activeRenamedItemId\");\n const emit = __emit;\n const itemHeight = computed(() => {\n return props.size === \"small\" ? kdsDimensionComponentHeight1p5x : kdsDimensionComponentHeight2p25x;\n });\n const isDirectory = (item) => item.isDirectory;\n const changeDirectory = (pathId) => {\n emit(\"changeDirectory\", pathId);\n };\n const virtualItemRefs = ref([]);\n const itemBack = ref(null);\n const table = ref(null);\n const virtualSizeManager = new Y$1(\n computed(() => props.items.length),\n itemHeight.value\n );\n const {\n indices: virtualIndices,\n containerProps,\n scrolledAreaStyles\n } = w$1(\n {\n sizeManager: virtualSizeManager,\n buffer: VIRTUAL_ITEM_BUFFER * itemHeight.value\n },\n \"vertical\",\n table\n );\n const renderedIndices = computed(() => virtualIndices.value.toArray());\n const renderedItems = computed(\n () => renderedIndices.value.map((i) => props.items[i])\n );\n const scrollIntoView = (index, behavior = \"smooth\") => {\n if (index === -1) {\n return;\n }\n const scrollDebounceMs = 50;\n const debouncedScroll = debounce(() => {\n containerProps.ref.value?.scrollTo({\n top: virtualSizeManager.toOffset(index),\n behavior\n });\n }, scrollDebounceMs);\n debouncedScroll();\n };\n const multiSelection = useFocusableMultiSelection({\n singleSelectionOnly: toRef(props, \"disableMultiSelect\"),\n numberOfItems: computed(() => props.items.length),\n startIndex: computed(() => itemBack.value ? -1 : 0),\n disabled: props.disableSelection,\n skippedIndices: computed(\n () => props.items.map((item, index) => item.disabled ? index : -1).filter((index) => index !== -1)\n )\n });\n const {\n multiSelectionState,\n handleSelectionClick,\n handleKeyboardNavigation,\n isSelected,\n focusedIndex,\n selectedIndexes,\n resetSelection,\n ctrlClickItem\n } = multiSelection;\n const selectedItems = computed(\n () => selectedIndexes.value.map((index) => props.items[index]).filter((item) => item !== void 0)\n );\n const getItemElement = (index) => virtualItemRefs.value?.find(\n ({ $props }) => $props.item?.id && $props.item.id === props.items[index]?.id\n )?.$el ?? null;\n const selectItems = (itemIds) => {\n const itemIndices = itemIds.map((id) => props.items.findIndex((item) => item.id === id)).filter((index) => index !== -1).filter((index) => !props.items[index].disabled);\n if (itemIndices.every(isSelected) && itemIndices.length === selectedIndexes.value.length) {\n return;\n }\n resetSelection();\n itemIndices.forEach((index) => ctrlClickItem(index));\n const firstIndex = itemIndices.slice().sort((left, right) => left - right).at(0) ?? -1;\n scrollIntoView(firstIndex);\n };\n watch(toRef(props, \"selectedItemIds\"), selectItems);\n watch(multiSelectionState, () => {\n const itemIds = selectedItems.value.map((item) => item.id);\n emit(\"update:selectedItemIds\", itemIds);\n });\n watch(\n toRef(props, \"items\"),\n (items) => {\n if (focusedIndex.value >= items.length) {\n resetSelection(focusedIndex.value);\n }\n selectItems(props.selectedItemIds);\n },\n { immediate: true }\n );\n const blacklistedNames = computed(\n () => props.items.filter((item) => item.id !== activeRenamedItemId.value).map(({ name }) => name)\n );\n const customPreviewContainer = ref(null);\n const customDragPreviewPlaceholder = ref(null);\n const {\n isDragging,\n onDragStart,\n onDragEnter,\n onDragOver,\n onDrag,\n onDragLeave,\n onDragEnd,\n onDrop\n } = useItemDragging({\n itemBack: computed(() => itemBack.value ? itemBack.value.$el : null),\n getItemElement,\n draggingAnimationMode: toRef(props, \"draggingAnimationMode\"),\n isDirectory,\n items: toRefs(props).items,\n multiSelection,\n // when default slot element (customDragPreviewPlaceholder ref) is not present, then\n // it means the slot has an element inside, so we should use a custom preview\n shouldUseCustomDragPreview: computed(\n () => !customDragPreviewPlaceholder.value && props.draggingAnimationMode !== \"disabled\"\n ),\n // we then can obtain the element by using the container\n getCustomPreviewEl: () => document.querySelector(\".custom-preview\")\n });\n const forwardEmit = (eventName, eventPayload) => {\n if (eventPayload === null) {\n return;\n }\n emit(eventName, eventPayload);\n };\n const keyPressedUntilMouseClick = useKeyPressedUntilMouseClick([\n \"Tab\",\n \" \",\n \"ArrowUp\",\n \"ArrowDown\",\n \"PageUp\",\n \"PageDown\",\n \"End\",\n \"Home\"\n ]);\n const focusIndex = (index, updateState = true) => {\n if (index === -1) {\n itemBack.value?.$el.focus();\n return;\n }\n if (props.items.length === 0 && itemBack.value) {\n itemBack.value.$el.focus();\n return;\n }\n const item = getItemElement(index);\n if (item) {\n item.focus();\n } else {\n scrollIntoView(index, \"instant\");\n setTimeout(() => {\n getItemElement(index)?.focus();\n }, 100);\n }\n if (updateState) {\n focusedIndex.value = index;\n }\n };\n const handleFocusOnTable = (event) => {\n if (table.value?.contains(event.relatedTarget)) {\n return;\n }\n focusIndex(focusedIndex.value, false);\n };\n watch(focusedIndex, async (index) => {\n await nextTick();\n focusIndex(index, false);\n });\n const contextMenuAnchor = ref(null);\n const closeContextMenu = (focusLastItem = true) => {\n contextMenuAnchor.value = null;\n if (focusLastItem) {\n focusIndex(focusedIndex.value, false);\n }\n popoverAnchor.remove();\n };\n const { fullPath } = toRefs(props);\n watch(fullPath, async () => {\n resetSelection();\n closeContextMenu();\n await nextTick();\n focusIndex(0);\n });\n const popover = useTemplateRef(\"popover\");\n const contextMenu = useTemplateRef(\"contextMenu\");\n watch(contextMenuAnchor, async (anchor) => {\n if (anchor) {\n await nextTick();\n await nextTick();\n contextMenu.value?.focus();\n }\n });\n const setContextMenuOpen = (item, index, openedBy) => {\n contextMenuAnchor.value = { item, index, openedBy };\n if (!isSelected(index)) {\n handleSelectionClick(index);\n }\n };\n const openByOptionsMenu = (toggled, item, itemIndex) => {\n if (!props.contextMenuBuilder) {\n return;\n }\n if (toggled) {\n setContextMenuOpen(item, itemIndex, \"optionsMenu\");\n } else {\n closeContextMenu();\n }\n };\n const openContextMenuByMouse = async (event, clickedItem, index) => {\n if (!props.contextMenuBuilder) {\n return;\n }\n await new Promise((r) => setTimeout(r, 0));\n const rowElement = getItemElement(index);\n const { x, y } = rowElement.getBoundingClientRect();\n const anchorElement = popoverAnchor.create(\n `${event.clientY - y}px`,\n `${event.clientX - x}px`,\n popover.value?.anchorStyle ?? {}\n );\n rowElement.appendChild(anchorElement);\n setContextMenuOpen(clickedItem, index, \"mouse\");\n };\n const openContextMenuByKeyboard = (clickedItem, index) => {\n if (!props.contextMenuBuilder) {\n return;\n }\n const rowElement = getItemElement(index);\n if (!rowElement) {\n return;\n }\n setContextMenuOpen(clickedItem, index, \"keyboard\");\n const anchorElement = popoverAnchor.create(\n \"0px\",\n \"50%\",\n popover.value?.anchorStyle ?? {}\n );\n rowElement.appendChild(anchorElement);\n };\n const contextMenuItems = computed(() => {\n const anchor = contextMenuAnchor.value?.item;\n if (!anchor || !props.contextMenuBuilder) {\n return [];\n }\n const builtItems = props.contextMenuBuilder({\n selectedItems: selectedItems.value,\n anchor\n });\n return builtItems;\n });\n const onItemClick = (item, event, index) => {\n if (item.disabled) {\n return;\n }\n if (activeRenamedItemId.value !== item.id) {\n handleSelectionClick(index, event);\n }\n closeContextMenu(false);\n };\n const openFileOrEnterFolder = (item) => {\n if (isDirectory(item)) {\n changeDirectory(item.id);\n return;\n }\n emit(\"openFile\", item);\n };\n const handleEnterKey = (event, item) => {\n const ctrlOrMeta = getMetaOrCtrlKey();\n if (event[ctrlOrMeta]) {\n return;\n }\n openFileOrEnterFolder(item);\n };\n onClickOutside(\n table,\n () => {\n if (focusedIndex.value >= 0) {\n resetSelection(focusedIndex.value);\n }\n },\n {\n ignore: [...props.clickOutsideExceptions, \"#file-explorer-options-menu\"]\n }\n );\n useResizeObserver(containerProps.ref, containerProps.onScroll);\n const hasOptionsMenu = computed(() => {\n return Boolean(props.contextMenuBuilder);\n });\n onClickOutside(popover, () => {\n if (popover.value) {\n popover.value.$el.hidePopover?.();\n closeContextMenu();\n }\n });\n const slots = useSlots();\n const dynamicColumnSlotNames = computed(\n () => Object.keys(filterSlotsForDynamicColumns(slots))\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$I, [\n createElementVNode(\"table\", mergeProps({\n tabindex: \"0\",\n class: [\"scroll-container\", { \"keyboard-focus\": unref(keyPressedUntilMouseClick) }],\n \"aria-label\": \"list of files in the current folder\"\n }, unref(containerProps), {\n onFocus: handleFocusOnTable,\n onKeydown: _cache[11] || (_cache[11] = //@ts-ignore\n (...args) => unref(handleKeyboardNavigation) && unref(handleKeyboardNavigation)(...args))\n }), [\n createElementVNode(\"tbody\", null, [\n !__props.isRootFolder ? (openBlock(), createBlock(FileExplorerItemBack, {\n key: 0,\n ref_key: \"itemBack\",\n ref: itemBack,\n tabindex: \"-1\",\n class: normalizeClass([\"file-explorer-item\", {\n \"keyboard-focus\": unref(keyPressedUntilMouseClick)\n }]),\n \"is-dragging\": unref(isDragging),\n onDragenter: _cache[0] || (_cache[0] = ($event) => unref(onDragEnter)($event, -1, true)),\n onDragleave: _cache[1] || (_cache[1] = ($event) => unref(onDragLeave)($event, -1, true)),\n onDragover: unref(onDragOver),\n onDrop: _cache[2] || (_cache[2] = withModifiers(($event) => forwardEmit(\"moveItems\", unref(onDrop)($event, -1, true)), [\"prevent\"])),\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => changeDirectory(\"..\"), [\"stop\", \"prevent\"]), [\"enter\"])),\n onClick: _cache[4] || (_cache[4] = ($event) => changeDirectory(\"..\"))\n }, null, 8, [\"class\", \"is-dragging\", \"onDragover\"])) : createCommentVNode(\"\", true)\n ]),\n createElementVNode(\"tbody\", {\n style: normalizeStyle({ ...unref(scrolledAreaStyles), flexDirection: \"column\" })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(renderedItems.value, (item, vIndex) => {\n return openBlock(), createBlock(FileExplorerItem, {\n key: item.id,\n ref_for: true,\n ref_key: \"virtualItemRefs\",\n ref: virtualItemRefs,\n tabindex: \"-1\",\n class: normalizeClass([\"file-explorer-item\", { \"keyboard-focus\": unref(keyPressedUntilMouseClick) }]),\n disabled: item.disabled ?? false,\n item,\n \"is-dragging\": unref(isDragging),\n \"is-selected\": unref(isSelected)(renderedIndices.value[vIndex]),\n \"is-rename-active\": item.id === activeRenamedItemId.value,\n \"blacklisted-names\": blacklistedNames.value,\n \"is-dragging-enabled\": !__props.disableDragging,\n \"has-options-menu\": hasOptionsMenu.value,\n onDragstart: ($event) => unref(onDragStart)($event, renderedIndices.value[vIndex]),\n onDragenter: ($event) => unref(onDragEnter)($event, renderedIndices.value[vIndex]),\n onDragover: _cache[8] || (_cache[8] = ($event) => unref(onDragOver)($event)),\n onDragleave: ($event) => unref(onDragLeave)($event, renderedIndices.value[vIndex]),\n onDragend: ($event) => forwardEmit(\"dragend\", unref(onDragEnd)($event, item)),\n onDrag: ($event) => forwardEmit(\"drag\", unref(onDrag)($event, item)),\n onClick: ($event) => onItemClick(item, $event, renderedIndices.value[vIndex]),\n onContextmenu: ($event) => openContextMenuByMouse($event, item, renderedIndices.value[vIndex]),\n onKeydown: [\n withKeys(withModifiers(($event) => openContextMenuByKeyboard(item, renderedIndices.value[vIndex]), [\"shift\", \"prevent\"]), [\"f10\"]),\n withKeys(withModifiers(($event) => handleEnterKey($event, item), [\"prevent\"]), [\"enter\"])\n ],\n onDrop: ($event) => forwardEmit(\"moveItems\", unref(onDrop)($event, renderedIndices.value[vIndex])),\n onDblclick: ($event) => openFileOrEnterFolder(item),\n \"onRename:submit\": _cache[9] || (_cache[9] = ($event) => emit(\"renameFile\", $event)),\n \"onRename:clear\": _cache[10] || (_cache[10] = ($event) => activeRenamedItemId.value = null)\n }, createSlots({ _: 2 }, [\n _ctx.$slots.itemIcon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"itemIcon\", { item }, void 0, true)\n ]),\n key: \"0\"\n } : void 0,\n renderList(dynamicColumnSlotNames.value, (name) => {\n return {\n name,\n fn: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, name, mergeProps({ ref_for: true }, slotProps, { item }), void 0, true)\n ])\n };\n }),\n hasOptionsMenu.value ? {\n name: \"optionsMenu\",\n fn: withCtx(() => [\n createVNode(_sfc_main$1p, {\n tabindex: \"-1\",\n \"model-value\": contextMenuAnchor.value?.item.id === item.id && contextMenuAnchor.value.openedBy === \"optionsMenu\",\n size: __props.size === \"small\" ? \"xsmall\" : \"small\",\n ariaLabel: \"More actions\",\n \"leading-icon\": \"more-actions\",\n variant: \"transparent\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": contextMenuAnchor.value?.item.id === item.id && contextMenuAnchor.value.openedBy === \"optionsMenu\",\n \"aria-controls\": \"file-explorer-options-menu\",\n style: normalizeStyle(\n contextMenuAnchor.value?.openedBy === \"optionsMenu\" && contextMenuAnchor.value?.item.id === item.id ? popover.value?.anchorStyle : null\n ),\n onClick: _cache[5] || (_cache[5] = withModifiers(() => {\n }, [\"stop\"])),\n onPointerdown: _cache[6] || (_cache[6] = withModifiers(() => {\n }, [\"stop\"])),\n onDblclick: _cache[7] || (_cache[7] = withModifiers(() => {\n }, [\"stop\"])),\n \"onUpdate:modelValue\": ($event) => openByOptionsMenu($event, item, renderedIndices.value[vIndex])\n }, null, 8, [\"model-value\", \"size\", \"aria-expanded\", \"style\", \"onUpdate:modelValue\"])\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"class\", \"disabled\", \"item\", \"is-dragging\", \"is-selected\", \"is-rename-active\", \"blacklisted-names\", \"is-dragging-enabled\", \"has-options-menu\", \"onDragstart\", \"onDragenter\", \"onDragleave\", \"onDragend\", \"onDrag\", \"onClick\", \"onContextmenu\", \"onKeydown\", \"onDrop\", \"onDblclick\"]);\n }), 128)),\n __props.items.length === 0 ? (openBlock(), createElementBlock(\"tr\", _hoisted_2$q, [\n createElementVNode(\"td\", null, [\n createVNode(KdsEmptyState, mergeProps({\n headline: __props.emptyState?.headline ?? \"Folder is empty\"\n }, __props.emptyState), null, 16, [\"headline\"])\n ])\n ])) : createCommentVNode(\"\", true)\n ], 4),\n __props.draggingAnimationMode !== \"disabled\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref_key: \"customPreviewContainer\",\n ref: customPreviewContainer,\n class: \"custom-preview\"\n }, [\n renderSlot(_ctx.$slots, \"customDragPreview\", {}, () => [\n createElementVNode(\"div\", {\n ref_key: \"customDragPreviewPlaceholder\",\n ref: customDragPreviewPlaceholder\n }, null, 512)\n ], true)\n ], 512)) : createCommentVNode(\"\", true)\n ], 16),\n createVNode(KdsPopover, {\n ref_key: \"popover\",\n ref: popover,\n \"popover-type\": \"manual\",\n \"model-value\": Boolean(contextMenuAnchor.value && contextMenuItems.value.length > 0),\n placement: \"bottom-left\",\n \"aria-label\": \"Menu\",\n onKeydown: _cache[14] || (_cache[14] = withKeys(withModifiers(($event) => closeContextMenu(), [\"stop\", \"prevent\"]), [\"esc\"])),\n onFocusout: _cache[15] || (_cache[15] = ($event) => closeContextMenu())\n }, {\n default: withCtx(() => [\n createVNode(unref(KdsMenuContainer), {\n id: \"file-explorer-options-menu\",\n ref_key: \"contextMenu\",\n ref: contextMenu,\n ariaLabel: \"File explorer context\",\n items: contextMenuItems.value,\n \"menu-max-height\": __props.maxContextMenuHeight,\n onItemClick: _cache[12] || (_cache[12] = ($event) => closeContextMenu()),\n onContextmenu: _cache[13] || (_cache[13] = withModifiers(() => {\n }, [\"prevent\", \"stop\"]))\n }, null, 8, [\"items\", \"menu-max-height\"])\n ]),\n _: 1\n }, 8, [\"model-value\"])\n ]);\n };\n }\n});\n\nconst KdsFileExplorer = /* @__PURE__ */ _export_sfc(_sfc_main$13, [[\"__scopeId\", \"data-v-921486c1\"]]);\n\nconst kdsFileExplorerSize = {\n SMALL: \"small\",\n LARGE: \"large\"\n};\nconst kdsFileExplorerSizes = Object.values(kdsFileExplorerSize);\nconst kdsFileExplorerDraggingAnimationMode = {\n AUTO: \"auto\",\n MANUAL: \"manual\",\n DISABLED: \"disabled\"\n};\nconst kdsFileExplorerDraggingAnimationModes = Object.values(\n kdsFileExplorerDraggingAnimationMode\n);\n\nconst _hoisted_1$H = { class: \"kds-preview-list\" };\nconst _hoisted_2$p = { class: \"kds-preview-list-title-row\" };\nconst _hoisted_3$l = { class: \"kds-preview-list-content\" };\nconst _hoisted_4$i = { class: \"kds-preview-list-headline\" };\nconst _hoisted_5$9 = [\"aria-label\"];\nconst _hoisted_6$7 = { class: \"kds-preview-list-show-hide\" };\nconst DEFAULT_MAX_VISIBLE_ITEMS = 6;\nconst _sfc_main$12 = /* @__PURE__ */ defineComponent({\n __name: \"KdsPreviewList\",\n props: /* @__PURE__ */ mergeModels({\n headline: {},\n leadingIcon: { default: () => void 0 },\n loading: { type: Boolean, default: false },\n trailingButton: { default: () => void 0 },\n items: {},\n emptyStateHeadline: { default: \"No entries\" },\n maxVisibleItems: { default: () => DEFAULT_MAX_VISIBLE_ITEMS }\n }, {\n \"expanded\": { type: Boolean, ...{ default: true } },\n \"expandedModifiers\": {}\n }),\n emits: [\"update:expanded\"],\n setup(__props) {\n useCssVars((_ctx) => ({\n \"a76a77a8\": safeMaxVisibleItems.value\n }));\n const props = createPropsRestProxy(__props, [\"loading\", \"leadingIcon\", \"trailingButton\", \"emptyStateHeadline\", \"maxVisibleItems\"]);\n const bodyId = `kds-preview-list-body-${useId()}`;\n const expanded = useModel(__props, \"expanded\");\n const safeMaxVisibleItems = computed(() => Math.max(1, __props.maxVisibleItems));\n const { itemsWithPrefix } = useStableItemIds({\n items: toRef(() => props.items)\n });\n const trailingButtonProps = computed(\n () => ({\n ...__props.trailingButton,\n size: \"xsmall\",\n variant: \"transparent\"\n })\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"section\", _hoisted_1$H, [\n createElementVNode(\"header\", _hoisted_2$p, [\n __props.loading && !expanded.value ? (openBlock(), createBlock(KdsLoadingSpinner, {\n key: 0,\n size: \"small\",\n variant: \"onSurface\"\n })) : __props.leadingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 1,\n name: __props.leadingIcon,\n size: \"small\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_3$l, [\n createElementVNode(\"span\", _hoisted_4$i, toDisplayString(props.headline), 1)\n ]),\n __props.trailingButton ? (openBlock(), createBlock(_sfc_main$1s, normalizeProps(mergeProps({ key: 2 }, trailingButtonProps.value)), null, 16)) : createCommentVNode(\"\", true)\n ]),\n withDirectives(createElementVNode(\"div\", {\n id: bodyId,\n class: \"kds-preview-list-body\"\n }, [\n __props.loading ? (openBlock(), createBlock(KdsEmptyState, {\n key: 0,\n class: \"kds-preview-list-loading\",\n headline: \"Loading\",\n \"loading-spinner\": \"\"\n })) : props.items.length === 0 ? (openBlock(), createBlock(KdsEmptyState, {\n key: 1,\n class: \"kds-preview-list-empty\",\n headline: __props.emptyStateHeadline\n }, null, 8, [\"headline\"])) : expanded.value ? (openBlock(), createElementBlock(\"ul\", {\n key: 2,\n class: \"kds-preview-list-items\",\n tabindex: \"0\",\n \"aria-label\": props.headline\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(itemsWithPrefix), (item) => {\n return openBlock(), createBlock(KdsListItem, {\n id: item.id,\n key: item.id,\n role: \"listitem\",\n text: item.text,\n accessory: item.accessory,\n class: \"kds-preview-list-item\",\n onClick: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"stop\"]))\n }, null, 8, [\"id\", \"text\", \"accessory\"]);\n }), 128))\n ], 8, _hoisted_5$9)) : createCommentVNode(\"\", true)\n ], 512), [\n [vShow, expanded.value]\n ]),\n createElementVNode(\"footer\", _hoisted_6$7, [\n createVNode(_sfc_main$1s, {\n class: \"kds-preview-list-toggle\",\n label: expanded.value ? \"Hide all\" : \"Show all\",\n \"trailing-icon\": expanded.value ? \"chevron-up\" : \"chevron-down\",\n size: \"xsmall\",\n variant: \"transparent\",\n \"aria-expanded\": expanded.value,\n \"aria-controls\": bodyId,\n onClick: _cache[1] || (_cache[1] = ($event) => expanded.value = !expanded.value)\n }, null, 8, [\"label\", \"trailing-icon\", \"aria-expanded\"])\n ])\n ]);\n };\n }\n});\n\nconst KdsPreviewList = /* @__PURE__ */ _export_sfc(_sfc_main$12, [[\"__scopeId\", \"data-v-a11103f6\"]]);\n\nconst _hoisted_1$G = [\"disabled\", \"title\", \"aria-label\", \"aria-checked\", \"aria-describedby\", \"aria-invalid\"];\nconst _hoisted_2$o = { class: \"control\" };\nconst _hoisted_3$k = {\n key: 0,\n class: \"content\"\n};\nconst _hoisted_4$h = { class: \"label\" };\nconst _hoisted_5$8 = [\"id\"];\nconst _hoisted_6$6 = {\n key: 0,\n class: \"subtext-wrapper\"\n};\nconst _sfc_main$11 = /* @__PURE__ */ defineComponent({\n __name: \"BaseCheckbox\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n subText: {},\n preserveSubTextSpace: { type: Boolean },\n label: {},\n title: {},\n helperText: {}\n }, {\n \"modelValue\": { default: false },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const helperId = useId();\n const descriptionId = useId();\n const isChecked = computed(() => modelValue.value === true);\n const isIndeterminate = computed(() => modelValue.value === \"indeterminate\");\n const icon = computed(() => {\n if (isChecked.value) {\n return \"checkmark\";\n }\n if (isIndeterminate.value) {\n return \"minus\";\n }\n return null;\n });\n const ariaChecked = computed(() => {\n if (isIndeterminate.value) {\n return \"mixed\";\n }\n return isChecked.value;\n });\n const ariaDescribedBy = computed(() => {\n const ids = [];\n if (props.helperText) {\n ids.push(helperId);\n }\n if (props.subText) {\n ids.push(descriptionId);\n }\n return ids.length > 0 ? ids.join(\" \") : void 0;\n });\n const handleClick = () => {\n if (__props.disabled) {\n return;\n }\n modelValue.value = isIndeterminate.value ? true : !isChecked.value;\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", null, [\n createElementVNode(\"button\", {\n class: normalizeClass({\n checkbox: true,\n checked: isChecked.value,\n indeterminate: isIndeterminate.value,\n disabled: __props.disabled,\n error: __props.error\n }),\n disabled: __props.disabled,\n title: props.title,\n \"aria-label\": props.title,\n \"aria-checked\": ariaChecked.value,\n \"aria-describedby\": ariaDescribedBy.value,\n \"aria-invalid\": __props.error,\n type: \"button\",\n role: \"checkbox\",\n onClick: handleClick\n }, [\n createElementVNode(\"div\", _hoisted_2$o, [\n icon.value ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: icon.value,\n class: \"icon\",\n size: \"xsmall\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true)\n ]),\n props.label || props.helperText ? (openBlock(), createElementBlock(\"div\", _hoisted_3$k, [\n createElementVNode(\"div\", _hoisted_4$h, toDisplayString(props.label), 1),\n props.helperText ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: unref(helperId),\n class: \"helper-text\"\n }, toDisplayString(props.helperText), 9, _hoisted_5$8)) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$G),\n props.subText || props.preserveSubTextSpace ? (openBlock(), createElementBlock(\"div\", _hoisted_6$6, [\n createVNode(KdsSubText, {\n id: unref(descriptionId),\n \"sub-text\": props.subText,\n \"preserve-sub-text-space\": props.preserveSubTextSpace,\n error: __props.error\n }, null, 8, [\"id\", \"sub-text\", \"preserve-sub-text-space\", \"error\"])\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst BaseCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$11, [[\"__scopeId\", \"data-v-7bfc5667\"]]);\n\nconst _sfc_main$10 = /* @__PURE__ */ defineComponent({\n __name: \"KdsCheckbox\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n subText: {},\n preserveSubTextSpace: { type: Boolean, default: false },\n label: {},\n title: {}\n }, {\n \"modelValue\": { default: false },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseCheckbox, mergeProps({\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event)\n }, props, {\n disabled: __props.disabled,\n error: __props.error,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), null, 16, [\"modelValue\", \"disabled\", \"error\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst _hoisted_1$F = [\"id\", \"role\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\"];\nconst _hoisted_2$n = [\"id\"];\nconst _hoisted_3$j = [\"title\"];\nconst _hoisted_4$g = { class: \"kds-fieldset-content\" };\nconst _sfc_main$$ = /* @__PURE__ */ defineComponent({\n __name: \"BaseFieldsetWrapper\",\n props: {\n id: {},\n label: {},\n ariaLabel: {},\n description: {},\n role: {},\n subText: {},\n error: { type: Boolean },\n validating: { type: Boolean },\n preserveSubTextSpace: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const KdsInfoToggleButton = defineAsyncComponent(\n () => Promise.resolve().then(() => KdsInfoToggleButton$1)\n );\n const fallbackId = useId();\n const fieldsetId = computed(() => props.id?.trim() || fallbackId);\n const legendId = computed(() => `${fieldsetId.value}-legend`);\n const subTextId = computed(() => `${fieldsetId.value}-subtext`);\n const isHovered = ref(false);\n const legendTextEl = useTemplateRef(\"legendTextEl\");\n const { isTruncated } = useKdsIsTruncated(legendTextEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"fieldset\", {\n id: fieldsetId.value,\n class: \"kds-fieldset\",\n role: props.role,\n \"aria-label\": props.label ? void 0 : props.ariaLabel,\n \"aria-labelledby\": props.label ? legendId.value : void 0,\n \"aria-describedby\": props.subText ? subTextId.value : void 0,\n onMouseenter: _cache[0] || (_cache[0] = ($event) => isHovered.value = true),\n onMouseleave: _cache[1] || (_cache[1] = ($event) => isHovered.value = false)\n }, [\n props.label ? (openBlock(), createElementBlock(\"legend\", {\n key: 0,\n id: legendId.value,\n class: \"kds-fieldset-legend\"\n }, [\n createElementVNode(\"span\", {\n ref_key: \"legendTextEl\",\n ref: legendTextEl,\n class: \"legend-text\",\n title: unref(isTruncated) ? props.label : void 0\n }, toDisplayString(props.label), 9, _hoisted_3$j),\n props.description ? (openBlock(), createBlock(unref(KdsInfoToggleButton), {\n key: 0,\n content: props.description,\n hidden: !isHovered.value\n }, null, 8, [\"content\", \"hidden\"])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_2$n)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4$g, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n createVNode(KdsSubText, {\n id: subTextId.value,\n \"sub-text\": props.subText,\n error: props.error,\n validating: props.validating,\n \"preserve-sub-text-space\": props.preserveSubTextSpace\n }, null, 8, [\"id\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"])\n ], 40, _hoisted_1$F);\n };\n }\n});\n\nconst BaseFieldsetWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$$, [[\"__scopeId\", \"data-v-a44731da\"]]);\n\nconst _sfc_main$_ = /* @__PURE__ */ defineComponent({\n __name: \"KdsCheckboxGroup\",\n props: /* @__PURE__ */ mergeModels({\n id: {},\n label: {},\n possibleValues: {},\n alignment: { default: \"vertical\" },\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n subText: {},\n preserveSubTextSpace: { type: Boolean }\n }, {\n \"modelValue\": { default: [] },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"alignment\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const possibleValues = computed(\n () => props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n })\n );\n const isOptionDisabled = (index) => __props.disabled || possibleValues.value[index]?.disabled === true;\n const isHorizontal = computed(() => __props.alignment === \"horizontal\");\n const hasError = computed(\n () => __props.error || possibleValues.value.some((o) => o.error)\n );\n const isChecked = (id) => modelValue.value.includes(id);\n const handleCheckboxChange = (index, checked) => {\n if (isOptionDisabled(index)) {\n return;\n }\n const option = possibleValues.value[index];\n if (checked === true) {\n modelValue.value = [...modelValue.value, option.id];\n return;\n }\n modelValue.value = modelValue.value.filter((v) => v !== option.id);\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFieldsetWrapper, {\n id: props.id,\n label: props.label,\n \"sub-text\": props.subText,\n \"preserve-sub-text-space\": props.preserveSubTextSpace,\n error: hasError.value\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass({ options: true, horizontal: isHorizontal.value })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(possibleValues.value, (option, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: option.id,\n class: \"option\"\n }, [\n createVNode(BaseCheckbox, {\n disabled: __props.disabled || option.disabled,\n error: option.error,\n \"helper-text\": option.helperText,\n label: option.text,\n \"model-value\": isChecked(option.id),\n \"onUpdate:modelValue\": (checked) => handleCheckboxChange(index, checked)\n }, null, 8, [\"disabled\", \"error\", \"helper-text\", \"label\", \"model-value\", \"onUpdate:modelValue\"])\n ]);\n }), 128))\n ], 2)\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"sub-text\", \"preserve-sub-text-space\", \"error\"]);\n };\n }\n});\n\nconst KdsCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$_, [[\"__scopeId\", \"data-v-c6536296\"]]);\n\nconst kdsCheckboxGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\"\n};\nconst kdsCheckboxGroupAlignments = Object.values(\n kdsCheckboxGroupAlignment\n);\nconst kdsCheckboxValue = {\n CHECKED: true,\n UNCHECKED: false,\n INDETERMINATE: \"indeterminate\"\n};\nconst kdsCheckboxValues = Object.values(kdsCheckboxValue);\n\nconst _hoisted_1$E = [\"aria-checked\", \"aria-describedby\", \"aria-invalid\", \"disabled\"];\nconst _hoisted_2$m = { class: \"control\" };\nconst _hoisted_3$i = {\n key: 0,\n class: \"dot\",\n viewBox: \"0 0 2 2\",\n \"aria-hidden\": \"true\",\n focusable: \"false\"\n};\nconst _hoisted_4$f = { class: \"content\" };\nconst _hoisted_5$7 = { class: \"label\" };\nconst _hoisted_6$5 = [\"id\"];\nconst _sfc_main$Z = /* @__PURE__ */ defineComponent({\n __name: \"KdsRadioButton\",\n props: /* @__PURE__ */ mergeModels({\n text: {},\n helperText: {},\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false }\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const id = useId();\n const handleClick = () => {\n if (__props.disabled) {\n return;\n }\n if (!modelValue.value) {\n modelValue.value = true;\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n \"aria-checked\": modelValue.value,\n \"aria-describedby\": props.helperText ? `${unref(id)}-helper` : void 0,\n \"aria-invalid\": __props.error,\n class: normalizeClass({\n radio: true,\n selected: modelValue.value,\n disabled: __props.disabled,\n error: __props.error\n }),\n disabled: __props.disabled,\n role: \"radio\",\n type: \"button\",\n onClick: handleClick\n }, [\n createElementVNode(\"div\", _hoisted_2$m, [\n modelValue.value ? (openBlock(), createElementBlock(\"svg\", _hoisted_3$i, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"circle\", {\n cx: \"1\",\n cy: \"1\",\n r: \"1\"\n }, null, -1)\n ])])) : createCommentVNode(\"\", true)\n ]),\n createElementVNode(\"div\", _hoisted_4$f, [\n createElementVNode(\"div\", _hoisted_5$7, toDisplayString(props.text), 1),\n props.helperText ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `${unref(id)}-helper`,\n class: \"helper-text\"\n }, toDisplayString(props.helperText), 9, _hoisted_6$5)) : createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1$E);\n };\n }\n});\n\nconst KdsRadioButton = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [[\"__scopeId\", \"data-v-f4f6392a\"]]);\n\nconst useRadioSelection = ({\n selectedId,\n options,\n globalDisable,\n globalError,\n optionContainer\n}) => {\n const focusOptionAtIndex = (index) => {\n const radios = optionContainer?.value?.querySelectorAll(\n 'button[role=\"radio\"]'\n );\n radios?.[index]?.focus();\n };\n const isIndexDisabled = (index) => globalDisable?.value || options.value[index]?.disabled === true;\n const hasError = computed(\n () => globalError?.value || options.value.some((o) => o.error)\n );\n const selectedIndex = computed(\n () => options.value.findIndex((o) => o.id === selectedId.value)\n );\n const firstEnabledIndex = computed(\n () => options.value.findIndex((_, index) => !isIndexDisabled(index))\n );\n const tabIndexForOption = (index) => {\n if (isIndexDisabled(index)) {\n return void 0;\n }\n if (selectedIndex.value >= 0) {\n return selectedIndex.value === index ? 0 : -1;\n }\n return firstEnabledIndex.value === index ? 0 : -1;\n };\n const selectIndex = (index) => {\n if (isIndexDisabled(index)) {\n return;\n }\n selectedId.value = options.value[index]?.id;\n };\n const nextEnabledIndex = (startIndex, direction) => {\n const total = options.value.length;\n if (total === 0) {\n return -1;\n }\n let index = startIndex;\n for (let i = 0; i < total; i++) {\n index = (index + direction + total) % total;\n if (!isIndexDisabled(index)) {\n return index;\n }\n }\n return -1;\n };\n const moveSelection = (currentIndex, direction) => {\n const nextIndex = nextEnabledIndex(currentIndex, direction);\n if (nextIndex < 0) {\n return;\n }\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n const goToFirstEnabled = () => {\n const nextIndex = firstEnabledIndex.value;\n if (nextIndex < 0) {\n return;\n }\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n const goToLastEnabled = () => {\n for (let i = options.value.length - 1; i >= 0; i--) {\n if (!isIndexDisabled(i)) {\n selectIndex(i);\n focusOptionAtIndex(i);\n break;\n }\n }\n };\n const handleKeyDown = (event, currentIndex) => {\n if (globalDisable?.value) {\n return;\n }\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\": {\n event.preventDefault();\n moveSelection(currentIndex, 1);\n return;\n }\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n event.preventDefault();\n moveSelection(currentIndex, -1);\n return;\n }\n case \"Home\": {\n event.preventDefault();\n goToFirstEnabled();\n return;\n }\n case \"End\": {\n event.preventDefault();\n goToLastEnabled();\n return;\n }\n case \" \":\n case \"Enter\": {\n event.preventDefault();\n selectIndex(currentIndex);\n }\n }\n };\n return {\n hasError,\n selectedIndex,\n tabIndexForOption,\n handleClick: selectIndex,\n handleKeyDown\n };\n};\n\nconst _sfc_main$Y = /* @__PURE__ */ defineComponent({\n __name: \"KdsRadioButtonGroup\",\n props: /* @__PURE__ */ mergeModels({\n id: {},\n label: {},\n possibleValues: {},\n alignment: { default: \"vertical\" },\n disabled: { type: Boolean, default: false },\n subText: {},\n preserveSubTextSpace: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"alignment\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const options = computed(\n () => props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n })\n );\n const groupName = useId();\n const optionContainer = useTemplateRef(\"optionContainer\");\n const { tabIndexForOption, handleClick, handleKeyDown, hasError } = useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => __props.disabled),\n optionContainer\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFieldsetWrapper, {\n id: props.id,\n label: props.label,\n role: \"radiogroup\",\n \"sub-text\": props.subText,\n \"preserve-sub-text-space\": props.preserveSubTextSpace,\n error: unref(hasError)\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref_key: \"optionContainer\",\n ref: optionContainer,\n class: normalizeClass({ options: true, horizontal: __props.alignment === \"horizontal\" })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (option, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: option.id,\n class: \"option\"\n }, [\n createVNode(KdsRadioButton, {\n disabled: __props.disabled || option.disabled,\n error: option.error,\n \"helper-text\": option.helperText,\n text: option.text,\n \"model-value\": modelValue.value === option.id,\n tabindex: unref(tabIndexForOption)(index),\n name: unref(groupName),\n onKeydown: (e) => unref(handleKeyDown)(e, index),\n \"onUpdate:modelValue\": () => unref(handleClick)(index)\n }, null, 8, [\"disabled\", \"error\", \"helper-text\", \"text\", \"model-value\", \"tabindex\", \"name\", \"onKeydown\", \"onUpdate:modelValue\"])\n ]);\n }), 128))\n ], 2)\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"sub-text\", \"preserve-sub-text-space\", \"error\"]);\n };\n }\n});\n\nconst KdsRadioButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [[\"__scopeId\", \"data-v-d78ed4a2\"]]);\n\nconst _hoisted_1$D = [\"aria-checked\", \"aria-label\", \"disabled\", \"tabindex\", \"title\"];\nconst _sfc_main$X = /* @__PURE__ */ defineComponent({\n __name: \"ValueSwitchItem\",\n props: {\n selected: { type: Boolean },\n disabled: { type: Boolean, default: false },\n size: { default: \"medium\" },\n variant: { default: \"default\" },\n tabIndex: {},\n hideIcons: { type: Boolean },\n text: {},\n leadingIcon: {},\n trailingIcon: {},\n title: {}\n },\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"size\", \"variant\", \"tabIndex\"]);\n const optionTextEl = useTemplateRef(\"optionTextEl\");\n const { isTruncated } = useKdsIsTruncated(optionTextEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n role: \"radio\",\n \"aria-checked\": props.selected,\n \"aria-label\": props.text ? void 0 : props.title,\n class: normalizeClass({\n option: true,\n selected: props.selected,\n disabled: __props.disabled,\n \"variant-muted\": __props.variant === \"muted\",\n \"size-small\": __props.size === \"small\"\n }),\n disabled: __props.disabled,\n tabindex: __props.tabIndex,\n title: props.title ?? (unref(isTruncated) && props.text ? props.text : void 0)\n }, [\n props.leadingIcon && (!props.hideIcons || !props.text) ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: props.leadingIcon,\n size: __props.size\n }, null, 8, [\"name\", \"size\"])) : createCommentVNode(\"\", true),\n props.text ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n ref_key: \"optionTextEl\",\n ref: optionTextEl,\n class: \"option-label\"\n }, toDisplayString(props.text), 513)) : createCommentVNode(\"\", true),\n props.trailingIcon && !props.hideIcons ? (openBlock(), createBlock(KdsIcon, {\n key: 2,\n name: props.trailingIcon,\n size: __props.size\n }, null, 8, [\"name\", \"size\"])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$D);\n };\n }\n});\n\nconst ValueSwitchItem = /* @__PURE__ */ _export_sfc(_sfc_main$X, [[\"__scopeId\", \"data-v-5c6f0f1f\"]]);\n\nconst useValueSwitchIconHiding = ({\n width,\n options\n}) => {\n const itemEls = ref(/* @__PURE__ */ new Map());\n onBeforeUpdate(() => {\n itemEls.value = /* @__PURE__ */ new Map();\n });\n const setItemEl = (id, el) => {\n const elementToRegister = el && typeof el === \"object\" && \"$el\" in el ? el.$el : el;\n if (elementToRegister instanceof HTMLButtonElement) {\n itemEls.value.set(id, elementToRegister);\n }\n };\n const shouldHideIcons = ref(false);\n const hasLabelEllipsis = (id) => {\n const el = itemEls.value.get(id);\n if (!el) {\n return false;\n }\n const label = el.querySelector(\".option-label\");\n return elementOverflowsHorizontally(label);\n };\n const anyOptionHasEllipsis = () => options.value.some((option) => {\n if (!option.text) {\n return false;\n }\n if (!option.leadingIcon && !option.trailingIcon) {\n return false;\n }\n return hasLabelEllipsis(option.id);\n });\n watch(\n () => [width.value, options.value],\n async () => {\n shouldHideIcons.value = false;\n await nextTick();\n shouldHideIcons.value = anyOptionHasEllipsis();\n },\n {\n immediate: true\n }\n );\n return {\n shouldHideIcons,\n setItemEl\n };\n};\n\nconst _sfc_main$W = /* @__PURE__ */ defineComponent({\n __name: \"KdsValueSwitch\",\n props: /* @__PURE__ */ mergeModels({\n id: {},\n label: {},\n ariaLabel: {},\n possibleValues: {},\n size: { default: \"medium\" },\n variant: { default: \"default\" },\n disabled: { type: Boolean, default: false },\n subText: {},\n error: { type: Boolean },\n preserveSubTextSpace: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"size\", \"variant\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const options = computed(\n () => props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n })\n );\n const fieldsetWrapper = useTemplateRef(\"fieldsetWrapper\");\n const { width } = useElementSize(fieldsetWrapper);\n const { shouldHideIcons, setItemEl } = useValueSwitchIconHiding({\n width,\n options\n });\n const optionContainer = useTemplateRef(\"optionContainer\");\n const { tabIndexForOption, handleClick, handleKeyDown } = useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => __props.disabled),\n optionContainer\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFieldsetWrapper, {\n id: props.id,\n ref_key: \"fieldsetWrapper\",\n ref: fieldsetWrapper,\n label: props.label,\n ariaLabel: props.ariaLabel,\n role: \"radiogroup\",\n class: normalizeClass({\n \"value-switch\": true,\n \"size-small\": __props.size === \"small\"\n }),\n \"aria-invalid\": props.error || void 0,\n \"sub-text\": props.subText,\n \"preserve-sub-text-space\": props.preserveSubTextSpace,\n error: props.error\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref_key: \"optionContainer\",\n ref: optionContainer,\n class: normalizeClass({ options: true, error: props.error })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (option, index) => {\n return openBlock(), createBlock(ValueSwitchItem, mergeProps({\n key: option.id,\n ref_for: true,\n ref: (el) => unref(setItemEl)(option.id, el)\n }, { ref_for: true }, option, {\n \"hide-icons\": unref(shouldHideIcons),\n selected: modelValue.value === option.id,\n disabled: __props.disabled || option.disabled,\n size: __props.size,\n variant: __props.variant,\n \"tab-index\": unref(tabIndexForOption)(index),\n onClick: () => unref(handleClick)(index),\n onKeydown: ($event) => unref(handleKeyDown)($event, index)\n }), null, 16, [\"hide-icons\", \"selected\", \"disabled\", \"size\", \"variant\", \"tab-index\", \"onClick\", \"onKeydown\"]);\n }), 128))\n ], 2)\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"ariaLabel\", \"class\", \"aria-invalid\", \"sub-text\", \"preserve-sub-text-space\", \"error\"]);\n };\n }\n});\n\nconst KdsValueSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$W, [[\"__scopeId\", \"data-v-f6d51795\"]]);\n\nconst kdsRadioButtonGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\"\n};\nconst kdsRadioButtonGroupAlignments = Object.values(\n kdsRadioButtonGroupAlignment\n);\nconst kdsValueSwitchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\"\n};\nconst kdsValueSwitchSizes = Object.values(kdsValueSwitchSize);\nconst kdsValueSwitchVariant = {\n DEFAULT: \"default\",\n MUTED: \"muted\"\n};\nconst kdsValueSwitchVariants = Object.values(kdsValueSwitchVariant);\n\nconst usePointerHandler = (updateFromEvent) => {\n const activePointerId = ref(null);\n const onPointerDown = (event) => {\n if (event.button !== 0) {\n return;\n }\n const target = event.currentTarget;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n activePointerId.value = event.pointerId;\n target.setPointerCapture(event.pointerId);\n updateFromEvent(event);\n };\n const onPointerMove = (event) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n updateFromEvent(event);\n };\n const endPointerInteraction = (event) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n const target = event.currentTarget;\n if (target instanceof HTMLElement && target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n activePointerId.value = null;\n };\n return {\n activePointerId,\n onPointerDown,\n onPointerMove,\n onPointerUp: endPointerInteraction\n };\n};\n\nconst additionalGroupSeparators = [\" \", \" \", \" \"];\nconst decimalSeparatorSample = 1.1;\nconst groupSeparatorSample = 1000.1;\nconst countFractionDigits = (value) => {\n if (!Number.isFinite(value)) {\n return 0;\n }\n const exp = value.toExponential();\n const match = /^[-+]?(\\d+)(?:\\.(\\d+))?e([+-]?\\d+)$/i.exec(exp);\n if (!match) {\n return 0;\n }\n const fractionDigitsInMantissa = match[2]?.length ?? 0;\n const exponent = Number.parseInt(match[3], 10);\n if (exponent >= 0) {\n return Math.max(0, fractionDigitsInMantissa - exponent);\n }\n return fractionDigitsInMantissa + Math.abs(exponent);\n};\nconst createKdsNumberParser = (params) => {\n const formatter = new Intl.NumberFormat(params.locale);\n const decimalSeparator = formatter.formatToParts(decimalSeparatorSample).find((part) => part.type === \"decimal\")?.value ?? \".\";\n const groupSeparator = formatter.formatToParts(groupSeparatorSample).find((part) => part.type === \"group\")?.value ?? \",\";\n const removeGroupingSeparators = (input) => [groupSeparator, ...additionalGroupSeparators].reduce(\n (acc, groupSep) => groupSep.length > 0 ? acc.split(groupSep).join(\"\") : acc,\n input\n );\n const formattersByMaxDecimals = /* @__PURE__ */ new Map();\n const getFormatterForMaxDecimals = (maxDecimals) => {\n const cached = formattersByMaxDecimals.get(maxDecimals);\n if (cached) {\n return cached;\n }\n const created = new Intl.NumberFormat(params.locale, {\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: maxDecimals\n });\n formattersByMaxDecimals.set(maxDecimals, created);\n return created;\n };\n const stepFractionDigits = countFractionDigits(params.step);\n const precisionFactor = Number(`1e${stepFractionDigits}`);\n const formatForDisplay = (value) => {\n if (!Number.isFinite(value)) {\n return \"\";\n }\n const valueDecimals = countFractionDigits(value);\n const maxDecimals = Math.max(stepFractionDigits, valueDecimals);\n return getFormatterForMaxDecimals(maxDecimals).format(value);\n };\n const roundToStep = (value) => {\n if (!Number.isFinite(value)) {\n return Number.NaN;\n }\n const step = params.step;\n if (!Number.isFinite(step) || step <= 0) {\n return value;\n }\n if (!Number.isFinite(precisionFactor) || precisionFactor <= 0) {\n return value;\n }\n const scaledNext = Math.round(value * precisionFactor);\n const scaledStep = Math.round(step * precisionFactor);\n if (scaledStep === 0) {\n return value;\n }\n const roundedScaled = Math.round(scaledNext / scaledStep) * scaledStep;\n return roundedScaled / precisionFactor;\n };\n const isValidNormalizedNumber = (normalized) => (\n // Accept plain decimals as well as scientific notation.\n // Note: whitespace is removed earlier; we don't accept grouping separators here.\n /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?$/.test(normalized)\n );\n const parseWithLocaleDecimal = (input, localeDecimal) => {\n const withoutGrouping = removeGroupingSeparators(input);\n const normalized = withoutGrouping.split(localeDecimal).join(\".\");\n if (!isValidNormalizedNumber(normalized)) {\n return Number.NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : Number.NaN;\n };\n const parseWithFallbackDot = (input) => {\n const lastDotIndex = input.lastIndexOf(\".\");\n const digitsAfterDot = input.slice(lastDotIndex + 1);\n const looksLikeDecimal = digitsAfterDot.length > 0 && digitsAfterDot.length <= 2;\n const normalized = looksLikeDecimal ? `${removeGroupingSeparators(input.slice(0, lastDotIndex))}.${removeGroupingSeparators(\n digitsAfterDot\n )}` : removeGroupingSeparators(input);\n if (!isValidNormalizedNumber(normalized)) {\n return Number.NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : Number.NaN;\n };\n const parseWithoutLocaleDecimal = (input) => {\n const normalized = removeGroupingSeparators(input);\n if (!isValidNormalizedNumber(normalized)) {\n return Number.NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : Number.NaN;\n };\n function parseFromInput(value) {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return Number.NaN;\n }\n const localeDecimal = decimalSeparator;\n const hasLocaleDecimal = localeDecimal.length > 0 && trimmed.includes(localeDecimal);\n if (hasLocaleDecimal) {\n return parseWithLocaleDecimal(trimmed, localeDecimal);\n }\n if (localeDecimal !== \".\" && trimmed.includes(\".\")) {\n return parseWithFallbackDot(trimmed);\n }\n return parseWithoutLocaleDecimal(trimmed);\n }\n return {\n locale: params.locale,\n decimalSeparator,\n groupSeparator,\n stepFractionDigits,\n formatForDisplay,\n parseFromInput,\n roundToStep\n };\n};\n\nconst REPEAT_INITIAL_DELAY_MS = 400;\nconst REPEAT_INTERVAL_MS = 100;\nconst _sfc_main$V = /* @__PURE__ */ defineComponent({\n __name: \"KdsNumberInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n unit: { default: \"\" },\n min: {},\n max: {},\n step: { default: 1 }\n }, {\n \"modelValue\": { default: Number.NaN },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\", \"unit\", \"step\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const isFocused = ref(false);\n const localValue = ref(\"\");\n const numberParser = computed(\n () => createKdsNumberParser({ locale: \"en-US\", step: __props.step })\n );\n const ariaValuenow = computed(\n () => Number.isFinite(modelValue.value) ? modelValue.value : void 0\n );\n const ariaValuetext = computed(() => {\n if (!Number.isFinite(modelValue.value)) {\n return void 0;\n }\n return numberParser.value.formatForDisplay(modelValue.value);\n });\n const clamp = (value) => {\n if (!Number.isFinite(value)) {\n return Number.NaN;\n }\n let result = value;\n if (props.min !== void 0 && !Number.isNaN(props.min)) {\n result = Math.max(props.min, result);\n }\n if (props.max !== void 0 && !Number.isNaN(props.max)) {\n result = Math.min(props.max, result);\n }\n return result;\n };\n watch(\n () => modelValue.value,\n (next) => {\n if (isFocused.value) {\n return;\n }\n localValue.value = numberParser.value.formatForDisplay(next);\n },\n { immediate: true }\n );\n const canDecrease = computed(() => {\n if (__props.disabled) {\n return false;\n }\n if (props.min === void 0 || Number.isNaN(props.min)) {\n return true;\n }\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n return modelValue.value > props.min;\n });\n const canIncrease = computed(() => {\n if (__props.disabled) {\n return false;\n }\n if (props.max === void 0 || Number.isNaN(props.max)) {\n return true;\n }\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n return modelValue.value < props.max;\n });\n const adjustByStep = (direction) => {\n if (__props.step <= 0) {\n return;\n }\n const base = Number.isFinite(modelValue.value) ? modelValue.value : numberParser.value.parseFromInput(localValue.value);\n const nextRaw = Number.isFinite(base) ? base + direction * __props.step : 0;\n const rounded = numberParser.value.roundToStep(nextRaw);\n const next = clamp(rounded);\n modelValue.value = next;\n localValue.value = numberParser.value.formatForDisplay(next);\n };\n const handleKeydown = (event) => {\n if (__props.disabled) {\n return;\n }\n if (event.key === \"ArrowUp\" && canIncrease.value) {\n event.preventDefault();\n adjustByStep(1);\n return;\n }\n if (event.key === \"ArrowDown\" && canDecrease.value) {\n event.preventDefault();\n adjustByStep(-1);\n }\n };\n const handleUpdateModelValue = (value) => {\n localValue.value = value;\n modelValue.value = numberParser.value.parseFromInput(value);\n };\n const baseInput = useTemplateRef(\"baseInput\");\n let repeatTimer = null;\n let isStepping = false;\n const handleBlur = () => {\n if (isStepping) {\n baseInput.value?.focus();\n return;\n }\n isFocused.value = false;\n const parsed = numberParser.value.parseFromInput(localValue.value);\n const normalized = clamp(parsed);\n modelValue.value = normalized;\n localValue.value = numberParser.value.formatForDisplay(normalized);\n };\n const stopRepeating = () => {\n if (repeatTimer !== null) {\n clearTimeout(repeatTimer);\n repeatTimer = null;\n }\n isStepping = false;\n };\n const startRepeating = (direction) => {\n stopRepeating();\n isStepping = true;\n adjustByStep(direction);\n repeatTimer = setTimeout(function tick() {\n adjustByStep(direction);\n repeatTimer = setTimeout(tick, REPEAT_INTERVAL_MS);\n }, REPEAT_INITIAL_DELAY_MS);\n };\n onBeforeUnmount(stopRepeating);\n const handleButtonClick = (direction, event) => {\n if (event.detail !== 0) {\n return;\n }\n adjustByStep(direction);\n };\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n \"model-value\": localValue.value,\n type: \"text\",\n inputmode: Number.isInteger(__props.step) ? \"numeric\" : \"decimal\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: props.autocomplete,\n unit: __props.unit,\n role: \"spinbutton\",\n \"aria-valuenow\": ariaValuenow.value,\n \"aria-valuemin\": props.min,\n \"aria-valuemax\": props.max,\n \"aria-valuetext\": ariaValuetext.value,\n \"onUpdate:modelValue\": handleUpdateModelValue,\n onKeydown: handleKeydown,\n onFocus: _cache[4] || (_cache[4] = ($event) => isFocused.value = true),\n onBlur: handleBlur\n }), {\n trailing: withCtx(() => [\n createVNode(_sfc_main$1s, {\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"minus\",\n ariaLabel: `Decrease ${props.label ?? props.ariaLabel}`,\n disabled: !canDecrease.value,\n onClick: _cache[0] || (_cache[0] = ($event) => handleButtonClick(-1, $event)),\n onPointerdown: _cache[1] || (_cache[1] = ($event) => startRepeating(-1)),\n onPointerup: stopRepeating,\n onPointerleave: stopRepeating,\n onPointercancel: stopRepeating\n }, null, 8, [\"ariaLabel\", \"disabled\"]),\n createVNode(_sfc_main$1s, {\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"plus\",\n ariaLabel: `Increase ${props.label ?? props.ariaLabel}`,\n disabled: !canIncrease.value,\n onClick: _cache[2] || (_cache[2] = ($event) => handleButtonClick(1, $event)),\n onPointerdown: _cache[3] || (_cache[3] = ($event) => startRepeating(1)),\n onPointerup: stopRepeating,\n onPointerleave: stopRepeating,\n onPointercancel: stopRepeating\n }, null, 8, [\"ariaLabel\", \"disabled\"])\n ]),\n _: 1\n }, 16, [\"model-value\", \"inputmode\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\", \"unit\", \"aria-valuenow\", \"aria-valuemin\", \"aria-valuemax\", \"aria-valuetext\"])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst HEX_RADIX = 16;\nconst RGB_MAX = 255;\nconst HUE_MAX_DEG$1 = 360;\nconst HUE_SECTOR_DEG = 60;\nconst HUE_SECTOR_COUNT = 6;\nconst HUE_OFFSET_FOR_MAX_G = 2;\nconst HUE_OFFSET_FOR_MAX_B = 4;\nconst HUE_SECTOR_INDEX_2 = 2;\nconst HUE_SECTOR_INDEX_3 = 3;\nconst HUE_SECTOR_INDEX_4 = 4;\nconst HUE_SECTOR_INDEX_5 = 5;\nconst HEX_PAIR_LENGTH = 2;\nconst HEX_RED_START = 1;\nconst HEX_GREEN_START = HEX_RED_START + HEX_PAIR_LENGTH;\nconst HEX_BLUE_START = HEX_GREEN_START + HEX_PAIR_LENGTH;\nconst HEX_ALPHA_START = HEX_BLUE_START + HEX_PAIR_LENGTH;\nconst FULL_HEX_COLOR_LENGTH = 9;\nconst HEX_WITH_HASH_LENGTH$1 = 7;\nconst clamp = (value, min, max) => Math.min(max, Math.max(min, value));\nconst round = (value) => Math.round(value);\nconst padHex = (value) => value.toString(HEX_RADIX).padStart(2, \"0\");\nconst normalizeHexColor = (value) => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return null;\n }\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n const [r, g, b] = withoutHash.split(\"\");\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n if (/^[0-9a-fA-F]{4}$/.test(withoutHash)) {\n const [r, g, b, a] = withoutHash.split(\"\");\n return `#${r}${r}${g}${g}${b}${b}${a}${a}`.toUpperCase();\n }\n if (/^([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(withoutHash)) {\n return `#${withoutHash}`.toUpperCase();\n }\n return null;\n};\nconst hexToRgba = (hex) => {\n const normalized = normalizeHexColor(hex);\n if (!normalized) {\n return null;\n }\n const r = Number.parseInt(\n normalized.slice(HEX_RED_START, HEX_RED_START + HEX_PAIR_LENGTH),\n HEX_RADIX\n );\n const g = Number.parseInt(\n normalized.slice(HEX_GREEN_START, HEX_GREEN_START + HEX_PAIR_LENGTH),\n HEX_RADIX\n );\n const b = Number.parseInt(\n normalized.slice(HEX_BLUE_START, HEX_BLUE_START + HEX_PAIR_LENGTH),\n HEX_RADIX\n );\n const hasAlpha = normalized.length === FULL_HEX_COLOR_LENGTH;\n const a = hasAlpha ? Number.parseInt(\n normalized.slice(HEX_ALPHA_START, HEX_ALPHA_START + HEX_PAIR_LENGTH),\n HEX_RADIX\n ) / RGB_MAX : 1;\n return { r, g, b, a };\n};\nconst rgbToHex = ({ r, g, b }) => {\n const rr = clamp(round(r), 0, RGB_MAX);\n const gg = clamp(round(g), 0, RGB_MAX);\n const bb = clamp(round(b), 0, RGB_MAX);\n return `#${padHex(rr)}${padHex(gg)}${padHex(bb)}`.toUpperCase();\n};\nconst rgbaToHex = ({ r, g, b, a }) => {\n const alpha = clamp(round(a * RGB_MAX), 0, RGB_MAX);\n return `${rgbToHex({ r, g, b })}${padHex(alpha)}`.toUpperCase();\n};\nconst rgbToHsv = ({ r, g, b }) => {\n const rr = clamp(r / RGB_MAX, 0, 1);\n const gg = clamp(g / RGB_MAX, 0, 1);\n const bb = clamp(b / RGB_MAX, 0, 1);\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const delta = max - min;\n const v = max;\n const s = max === 0 ? 0 : delta / max;\n let h = 0;\n if (delta !== 0) {\n if (max === rr) {\n h = (gg - bb) / delta % HUE_SECTOR_COUNT;\n } else if (max === gg) {\n h = (bb - rr) / delta + HUE_OFFSET_FOR_MAX_G;\n } else {\n h = (rr - gg) / delta + HUE_OFFSET_FOR_MAX_B;\n }\n h *= HUE_SECTOR_DEG;\n if (h < 0) {\n h += HUE_MAX_DEG$1;\n }\n }\n return { h, s, v };\n};\nconst hsvToRgb = ({ h, s, v }) => {\n const hh = (h % HUE_MAX_DEG$1 + HUE_MAX_DEG$1) % HUE_MAX_DEG$1;\n const ss = clamp(s, 0, 1);\n const vv = clamp(v, 0, 1);\n const c = vv * ss;\n const x = c * (1 - Math.abs(hh / HUE_SECTOR_DEG % 2 - 1));\n const m = vv - c;\n let rPrime = 0;\n let gPrime = 0;\n let bPrime = 0;\n if (hh < HUE_SECTOR_DEG) {\n rPrime = c;\n gPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_2 * HUE_SECTOR_DEG) {\n rPrime = x;\n gPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_3 * HUE_SECTOR_DEG) {\n gPrime = c;\n bPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_4 * HUE_SECTOR_DEG) {\n gPrime = x;\n bPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_5 * HUE_SECTOR_DEG) {\n rPrime = x;\n bPrime = c;\n } else {\n rPrime = c;\n bPrime = x;\n }\n return {\n r: round((rPrime + m) * RGB_MAX),\n g: round((gPrime + m) * RGB_MAX),\n b: round((bPrime + m) * RGB_MAX)\n };\n};\nconst removeAlphaFromHexInput = (next) => {\n const trimmed = next.trim();\n const hasHash = trimmed.startsWith(\"#\");\n const withoutHash = hasHash ? trimmed.slice(1) : trimmed;\n if (/^[0-9a-fA-F]{8}$/.test(withoutHash)) {\n const rgbWithoutAlpha = withoutHash.slice(0, HEX_WITH_HASH_LENGTH$1 - 1);\n return hasHash ? `#${rgbWithoutAlpha}` : rgbWithoutAlpha;\n }\n return next;\n};\n\nconst _hoisted_1$C = [\"aria-label\", \"aria-valuenow\", \"aria-valuemin\", \"aria-valuemax\", \"aria-valuetext\"];\nconst _sfc_main$U = /* @__PURE__ */ defineComponent({\n __name: \"ColorPickerSlider\",\n props: /* @__PURE__ */ mergeModels({\n label: {},\n valueNow: {},\n valueMin: {},\n valueMax: {},\n valueText: {},\n min: {},\n max: {},\n step: {},\n largeStep: {}\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v087094b8\": handlePosition.value\n }));\n const props = __props;\n const modelValue = useModel(__props, \"modelValue\");\n const sliderEl = useTemplateRef(\"sliderEl\");\n const setFromPointerEvent = (event) => {\n const el = sliderEl.value;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n const ratio = clamp(x, 0, 1);\n modelValue.value = props.min + ratio * (props.max - props.min);\n };\n const { onPointerDown, onPointerMove, onPointerUp } = usePointerHandler(setFromPointerEvent);\n const onKeyDown = (event) => {\n const delta = event.shiftKey ? props.largeStep : props.step;\n let handled = true;\n switch (event.key) {\n case \"ArrowLeft\":\n modelValue.value = clamp(modelValue.value - delta, props.min, props.max);\n break;\n case \"ArrowRight\":\n modelValue.value = clamp(modelValue.value + delta, props.min, props.max);\n break;\n default:\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n }\n };\n const handlePosition = computed(() => {\n const ratio = (modelValue.value - props.min) / (props.max - props.min);\n return `${clamp(ratio, 0, 1) * 100}%`;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"sliderEl\",\n ref: sliderEl,\n class: \"kds-color-picker-slider\",\n role: \"slider\",\n \"aria-label\": __props.label,\n \"aria-valuenow\": __props.valueNow,\n \"aria-valuemin\": __props.valueMin,\n \"aria-valuemax\": __props.valueMax,\n \"aria-valuetext\": __props.valueText,\n tabindex: \"0\",\n onPointerdown: _cache[0] || (_cache[0] = //@ts-ignore\n (...args) => unref(onPointerDown) && unref(onPointerDown)(...args)),\n onPointermove: _cache[1] || (_cache[1] = withModifiers(\n //@ts-ignore\n (...args) => unref(onPointerMove) && unref(onPointerMove)(...args),\n [\"prevent\"]\n )),\n onPointerup: _cache[2] || (_cache[2] = //@ts-ignore\n (...args) => unref(onPointerUp) && unref(onPointerUp)(...args)),\n onPointercancel: _cache[3] || (_cache[3] = //@ts-ignore\n (...args) => unref(onPointerUp) && unref(onPointerUp)(...args)),\n onLostpointercapture: _cache[4] || (_cache[4] = //@ts-ignore\n (...args) => unref(onPointerUp) && unref(onPointerUp)(...args)),\n onKeydown: onKeyDown\n }, [..._cache[5] || (_cache[5] = [\n createElementVNode(\"div\", { class: \"handle\" }, null, -1)\n ])], 40, _hoisted_1$C);\n };\n }\n});\n\nconst ColorPickerSlider = /* @__PURE__ */ _export_sfc(_sfc_main$U, [[\"__scopeId\", \"data-v-f4be2bd4\"]]);\n\nconst _hoisted_1$B = { class: \"kds-color-picker\" };\nconst _hoisted_2$l = [\"aria-valuetext\"];\nconst _hoisted_3$h = { class: \"value-inputs\" };\nconst DEFAULT_HUE_DEG = 270;\nconst DEFAULT_SATURATION = 0.8;\nconst DEFAULT_VALUE = 0.9;\nconst DEFAULT_ALPHA = 1;\nconst HUE_MAX_DEG = 360;\nconst HUE_MAX_EXCLUSIVE_DEG = 359.999;\nconst PERCENT = 100;\nconst HEX_WITH_HASH_LENGTH = 7;\nconst KEYBOARD_STEP = 0.01;\nconst KEYBOARD_LARGE_STEP = 0.1;\nconst HUE_KEYBOARD_STEP_DEG = 1;\nconst HUE_KEYBOARD_LARGE_STEP_DEG = 10;\nconst TO_BOTTOM_GRADIENT = \"linear-gradient(to bottom, transparent, black)\";\nconst _sfc_main$T = /* @__PURE__ */ defineComponent({\n __name: \"ColorPicker\",\n props: {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n },\n emits: [\"update:modelValue\"],\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v535b907d\": alphaBackgroundImage.value\n }));\n const modelValue = useModel(__props, \"modelValue\");\n const colorspaceEl = ref(null);\n const hue = ref(DEFAULT_HUE_DEG);\n const saturation = ref(DEFAULT_SATURATION);\n const value = ref(DEFAULT_VALUE);\n const alpha = ref(DEFAULT_ALPHA);\n const hasPendingInternalModelUpdate = ref(false);\n const updateHsvFromHex = (hex) => {\n const rgba = hexToRgba(hex);\n if (!rgba) {\n return;\n }\n const hsv = rgbToHsv(rgba);\n hue.value = hsv.h;\n saturation.value = hsv.s;\n value.value = hsv.v;\n alpha.value = rgba.a;\n };\n watch(\n () => modelValue.value,\n (next) => {\n if (hasPendingInternalModelUpdate.value) {\n hasPendingInternalModelUpdate.value = false;\n return;\n }\n updateHsvFromHex(next);\n },\n { immediate: true }\n );\n const hexInputValue = computed(() => removeAlphaFromHexInput(modelValue.value));\n const currentRgb = computed(\n () => hsvToRgb({\n h: hue.value,\n s: saturation.value,\n v: value.value\n })\n );\n const currentHex = computed(() => {\n const hex = rgbaToHex({\n ...currentRgb.value,\n a: alpha.value\n });\n return alpha.value === DEFAULT_ALPHA ? hex.slice(0, HEX_WITH_HASH_LENGTH) : hex;\n });\n const hueRgb = computed(() => hsvToRgb({ h: hue.value, s: 1, v: 1 }));\n const colorspaceBackground = computed(() => {\n const { r, g, b } = hueRgb.value;\n return {\n background: `${TO_BOTTOM_GRADIENT}, linear-gradient(to right, white, rgb(${r}, ${g}, ${b}))`\n };\n });\n const colorspaceHandleStyle = computed(() => ({\n left: `${saturation.value * 100}%`,\n top: `${(1 - value.value) * 100}%`\n }));\n const alphaBackgroundImage = computed(() => {\n const { r, g, b } = currentRgb.value;\n return `\n linear-gradient(to right, rgba(${r}, ${g}, ${b}, 0), rgb(${r}, ${g}, ${b})),\n repeating-conic-gradient(\n var(--kds-color-background-neutral-active) 0 25%,\n var(--kds-color-surface-default) 0 50%\n )\n `;\n });\n const setModelValueFromHsv = () => {\n hasPendingInternalModelUpdate.value = true;\n modelValue.value = currentHex.value;\n };\n const updateFromColorspaceEvent = (event) => {\n const el = colorspaceEl.value;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n const y = (event.clientY - rect.top) / rect.height;\n saturation.value = clamp(x, 0, 1);\n value.value = 1 - clamp(y, 0, 1);\n setModelValueFromHsv();\n };\n const {\n onPointerDown: onColorspacePointerDown,\n onPointerMove: onColorspacePointerMove,\n onPointerUp: onColorspacePointerUp\n } = usePointerHandler(updateFromColorspaceEvent);\n const updateFromTextValue = (next) => {\n modelValue.value = next;\n };\n const onHexInputFocusOut = () => {\n const normalized = normalizeHexColor(modelValue.value);\n if (normalized) {\n modelValue.value = normalized;\n }\n };\n const updateFromAlphaNumberInput = (next) => {\n if (!Number.isFinite(next)) {\n return;\n }\n alpha.value = clamp(next / PERCENT, 0, 1);\n setModelValueFromHsv();\n };\n const saturationPercent = computed(\n () => Math.round(saturation.value * PERCENT)\n );\n const valuePercent = computed(() => Math.round(value.value * PERCENT));\n const colorspaceValueText = computed(\n () => `Saturation ${saturationPercent.value} percent, brightness ${valuePercent.value} percent`\n );\n const hueValueText = computed(() => `${Math.round(hue.value)} degrees`);\n const alphaPercent = computed(() => Math.round(alpha.value * PERCENT));\n const alphaValueText = computed(() => `${alphaPercent.value} percent`);\n const onColorspaceKeyDown = (event) => {\n const step = event.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP;\n let handled = true;\n switch (event.key) {\n case \"ArrowLeft\":\n saturation.value = clamp(saturation.value - step, 0, 1);\n break;\n case \"ArrowRight\":\n saturation.value = clamp(saturation.value + step, 0, 1);\n break;\n case \"ArrowUp\":\n value.value = clamp(value.value + step, 0, 1);\n break;\n case \"ArrowDown\":\n value.value = clamp(value.value - step, 0, 1);\n break;\n default:\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n setModelValueFromHsv();\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$B, [\n createElementVNode(\"div\", {\n ref_key: \"colorspaceEl\",\n ref: colorspaceEl,\n class: \"colorspace\",\n role: \"slider\",\n \"aria-label\": \"Color selection\",\n \"aria-roledescription\": \"2D color slider\",\n \"aria-valuetext\": colorspaceValueText.value,\n style: normalizeStyle(colorspaceBackground.value),\n tabindex: \"0\",\n onPointerdown: _cache[0] || (_cache[0] = //@ts-ignore\n (...args) => unref(onColorspacePointerDown) && unref(onColorspacePointerDown)(...args)),\n onPointermove: _cache[1] || (_cache[1] = withModifiers(\n //@ts-ignore\n (...args) => unref(onColorspacePointerMove) && unref(onColorspacePointerMove)(...args),\n [\"prevent\"]\n )),\n onLostpointercapture: _cache[2] || (_cache[2] = //@ts-ignore\n (...args) => unref(onColorspacePointerUp) && unref(onColorspacePointerUp)(...args)),\n onPointerup: _cache[3] || (_cache[3] = //@ts-ignore\n (...args) => unref(onColorspacePointerUp) && unref(onColorspacePointerUp)(...args)),\n onKeydown: onColorspaceKeyDown\n }, [\n createElementVNode(\"div\", {\n class: \"handle\",\n style: normalizeStyle(colorspaceHandleStyle.value)\n }, null, 4)\n ], 44, _hoisted_2$l),\n createVNode(ColorPickerSlider, {\n modelValue: hue.value,\n \"onUpdate:modelValue\": [\n _cache[4] || (_cache[4] = ($event) => hue.value = $event),\n setModelValueFromHsv\n ],\n class: \"hue\",\n label: \"Hue\",\n \"value-now\": Math.round(hue.value),\n \"value-min\": 0,\n \"value-max\": HUE_MAX_DEG,\n \"value-text\": hueValueText.value,\n min: 0,\n max: HUE_MAX_EXCLUSIVE_DEG,\n step: HUE_KEYBOARD_STEP_DEG,\n \"large-step\": HUE_KEYBOARD_LARGE_STEP_DEG\n }, null, 8, [\"modelValue\", \"value-now\", \"value-text\"]),\n createVNode(ColorPickerSlider, {\n modelValue: alpha.value,\n \"onUpdate:modelValue\": [\n _cache[5] || (_cache[5] = ($event) => alpha.value = $event),\n setModelValueFromHsv\n ],\n class: \"alpha\",\n label: \"Alpha\",\n \"value-now\": alphaPercent.value,\n \"value-min\": 0,\n \"value-max\": PERCENT,\n \"value-text\": alphaValueText.value,\n min: 0,\n max: 1,\n step: KEYBOARD_STEP,\n \"large-step\": KEYBOARD_LARGE_STEP\n }, null, 8, [\"modelValue\", \"value-now\", \"value-text\"]),\n createElementVNode(\"div\", _hoisted_3$h, [\n createVNode(KdsTextInput, {\n \"model-value\": hexInputValue.value,\n ariaLabel: \"Color hex value\",\n placeholder: \"#FFFFFF\",\n \"onUpdate:modelValue\": updateFromTextValue,\n onFocusout: onHexInputFocusOut\n }, null, 8, [\"model-value\"]),\n createVNode(_sfc_main$V, {\n \"model-value\": alphaPercent.value,\n ariaLabel: \"Alpha percentage\",\n min: 0,\n max: PERCENT,\n step: 1,\n unit: \"%\",\n \"onUpdate:modelValue\": updateFromAlphaNumberInput\n }, null, 8, [\"model-value\"])\n ])\n ]);\n };\n }\n});\n\nconst ColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$T, [[\"__scopeId\", \"data-v-2daeaa68\"]]);\n\nconst HEX_LENGTH_1 = 1;\nconst HEX_LENGTH_2 = 2;\nconst HEX_LENGTH_3 = 3;\nconst HEX_LENGTH_4 = 4;\nconst HEX_LENGTH_6 = 6;\nconst HEX_LENGTH_8 = 8;\nconst FULLY_OPAQUE_ALPHA_SUFFIX = \"FF\";\nconst normalizeOpaqueAlpha = (normalizedHexWithHash) => normalizedHexWithHash.length === HEX_LENGTH_8 + 1 && normalizedHexWithHash.endsWith(FULLY_OPAQUE_ALPHA_SUFFIX) ? normalizedHexWithHash.slice(0, HEX_LENGTH_6 + 1) : normalizedHexWithHash;\nconst normalize = (value, fallbackValue) => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return fallbackValue;\n }\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n if (!/^[0-9a-fA-F]+$/.test(withoutHash)) {\n return fallbackValue;\n }\n if (withoutHash.length === HEX_LENGTH_1) {\n return `#${withoutHash.repeat(HEX_LENGTH_6)}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_2) {\n return `#${withoutHash.repeat(HEX_LENGTH_3)}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_3) {\n const [r, g, b] = withoutHash;\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_4) {\n const [r, g, b, a] = withoutHash;\n return normalizeOpaqueAlpha(\n `#${r}${r}${g}${g}${b}${b}${a}${a}`.toUpperCase()\n );\n }\n if (withoutHash.length === HEX_LENGTH_6) {\n return `#${withoutHash}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_8) {\n return normalizeOpaqueAlpha(`#${withoutHash}`.toUpperCase());\n }\n return fallbackValue;\n};\nconst useColorInputValidationOnFocusOut = (modelValue) => {\n const lastValidHexColor = ref(\"\");\n watch(\n modelValue,\n (value) => {\n const withoutHash = value.startsWith(\"#\") ? value.slice(1) : value;\n if ((withoutHash.length === HEX_LENGTH_6 || withoutHash.length === HEX_LENGTH_8) && /^[0-9a-fA-F]+$/.test(withoutHash)) {\n lastValidHexColor.value = normalizeOpaqueAlpha(\n `#${withoutHash.toUpperCase()}`\n );\n }\n },\n { immediate: true }\n );\n const handleFocusOut = (event) => {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement)) {\n return;\n }\n const nextFocusedElement = event.relatedTarget;\n if (nextFocusedElement instanceof Node && currentTarget.contains(nextFocusedElement)) {\n return;\n }\n const normalized = normalize(modelValue.value, lastValidHexColor.value);\n if (normalized !== void 0) {\n modelValue.value = normalized;\n }\n };\n return { handleFocusOut };\n};\n\nconst _sfc_main$S = /* @__PURE__ */ defineComponent({\n __name: \"KdsColorInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: { default: \"#FFFFFF\" },\n disabled: { type: Boolean, default: false },\n autocomplete: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"placeholder\", \"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const open = ref(false);\n const popoverEl = useTemplateRef(\"popoverEl\");\n const swatchColor = computed(\n () => normalizeHexColor(modelValue.value) ?? \"#FFFFFF\"\n );\n const { handleFocusOut } = useColorInputValidationOnFocusOut(modelValue);\n const onClickColorSwatch = () => {\n if (!__props.disabled) {\n open.value = !open.value;\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createElementVNode(\"div\", {\n style: normalizeStyle(popoverEl.value?.anchorStyle),\n onFocusout: _cache[4] || (_cache[4] = //@ts-ignore\n (...args) => unref(handleFocusOut) && unref(handleFocusOut)(...args))\n }, [\n createVNode(BaseInput, mergeProps(slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event),\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: props.autocomplete\n }), {\n leading: withCtx(() => [\n createVNode(KdsColorSwatch, {\n size: \"large\",\n color: swatchColor.value,\n \"aria-hidden\": true,\n style: normalizeStyle({ cursor: __props.disabled ? \"default\" : \"pointer\" }),\n onClick: onClickColorSwatch\n }, null, 8, [\"color\", \"style\"])\n ]),\n trailing: withCtx(() => [\n createVNode(unref(_sfc_main$1p), {\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => open.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"color-picker\",\n ariaLabel: \"Open color picker\",\n \"aria-controls\": popoverEl.value?.popoverId,\n \"aria-haspopup\": \"dialog\",\n disabled: __props.disabled,\n title: open.value ? \"Close color picker\" : \"Open color picker\"\n }, null, 8, [\"modelValue\", \"aria-controls\", \"disabled\", \"title\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => open.value = $event),\n placement: \"bottom-right\",\n role: \"dialog\",\n \"aria-label\": \"Color picker\"\n }, {\n default: withCtx(() => [\n createVNode(ColorPicker, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => modelValue.value = $event)\n }, null, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 36)\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst _sfc_main$R = /* @__PURE__ */ defineComponent({\n __name: \"KdsPasswordInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n variant: { default: \"password\" },\n showVisibilityToggle: { type: Boolean, default: true },\n toggleLabel: {},\n autocomplete: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\", \"variant\", \"showVisibilityToggle\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const showValue = ref(false);\n const preventBlurFromToggle = ref(false);\n const input = useTemplateRef(\"input\");\n const effectiveToggleLabel = computed(\n () => props.toggleLabel ?? (__props.variant === \"key\" ? \"Key\" : \"Password\")\n );\n const handleBlur = () => {\n if (preventBlurFromToggle.value) {\n input.value?.focus();\n }\n };\n __expose({\n focus: (options) => input.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"input\",\n ref: input\n }, slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => modelValue.value = $event),\n type: showValue.value && __props.showVisibilityToggle ? \"text\" : \"password\",\n \"leading-icon\": __props.variant === \"key\" ? \"key\" : \"lock\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: props.autocomplete,\n onBlur: handleBlur\n }), {\n trailing: withCtx(() => [\n __props.showVisibilityToggle ? (openBlock(), createBlock(_sfc_main$1p, {\n key: 0,\n modelValue: showValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => showValue.value = $event),\n variant: \"outlined\",\n size: \"xsmall\",\n \"leading-icon\": \"eye\",\n ariaLabel: showValue.value ? `Hide ${effectiveToggleLabel.value}` : `Show ${effectiveToggleLabel.value}`,\n title: showValue.value ? `Hide ${effectiveToggleLabel.value}` : `Show ${effectiveToggleLabel.value}`,\n disabled: __props.disabled,\n onPointerdown: _cache[1] || (_cache[1] = ($event) => preventBlurFromToggle.value = true),\n onPointerup: _cache[2] || (_cache[2] = ($event) => preventBlurFromToggle.value = false),\n onPointercancel: _cache[3] || (_cache[3] = ($event) => preventBlurFromToggle.value = false),\n onClick: _cache[4] || (_cache[4] = ($event) => preventBlurFromToggle.value = false)\n }, null, 8, [\"modelValue\", \"ariaLabel\", \"title\", \"disabled\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"type\", \"leading-icon\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\"])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst kdsPasswordInputVariant = {\n PASSWORD: \"password\",\n KEY: \"key\"\n};\nconst kdsPasswordInputVariants = Object.values(kdsPasswordInputVariant);\nconst kdsPasswordInputAutocomplete = {\n CURRENT_PASSWORD: \"current-password\",\n NEW_PASSWORD: \"new-password\",\n ONE_TIME_CODE: \"one-time-code\",\n OFF: \"off\"\n};\nconst kdsPasswordInputAutocompletes = Object.values(\n kdsPasswordInputAutocomplete\n);\n\nconst _sfc_main$Q = /* @__PURE__ */ defineComponent({\n __name: \"KdsUsernameInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n autocomplete: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const baseInput = useTemplateRef(\"baseInput\");\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n type: \"text\",\n \"leading-icon\": \"user\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: props.autocomplete\n }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\"])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst kdsUsernameInputAutocomplete = {\n USERNAME: \"username\",\n OFF: \"off\"\n};\nconst kdsUsernameInputAutocompletes = Object.values(\n kdsUsernameInputAutocomplete\n);\n\nfunction clampProp(e, n, t, o, r) {\n return ba(n, ((e, n) => {\n const t = e[n];\n if (void 0 === t) {\n throw new TypeError(missingField(n));\n }\n return t;\n })(e, n), t, o, r);\n}\n\nfunction ba(e, n, t, o, r, i) {\n const a = clampNumber(n, t, o);\n if (r && n !== a) {\n throw new RangeError(numberOutOfRange(e, n, t, o, i));\n }\n return a;\n}\n\nfunction s(e) {\n return null !== e && /object|function/.test(typeof e);\n}\n\nfunction on(e, n = Map) {\n const t = new n;\n return (n, ...o) => {\n if (t.has(n)) {\n return t.get(n);\n }\n const r = e(n, ...o);\n return t.set(n, r), r;\n };\n}\n\nfunction r(e) {\n return n({\n name: e\n }, 1);\n}\n\nfunction n(n, t) {\n return e((e => ({\n value: e,\n configurable: 1,\n writable: !t\n })), n);\n}\n\nfunction t(n) {\n return e((e => ({\n get: e,\n configurable: 1\n })), n);\n}\n\nfunction o(e) {\n return {\n [Symbol.toStringTag]: {\n value: e,\n configurable: 1\n }\n };\n}\n\nfunction zipProps(e, n) {\n const t = {};\n let o = e.length;\n for (const r of n) {\n t[e[--o]] = r;\n }\n return t;\n}\n\nfunction e(e, n, t) {\n const o = {};\n for (const r in n) {\n o[r] = e(n[r], r, t);\n }\n return o;\n}\n\nfunction P(e, n, t) {\n const o = {};\n for (let r = 0; r < n.length; r++) {\n const i = n[r];\n o[i] = e(i, r, t);\n }\n return o;\n}\n\nfunction remapProps(e, n, t) {\n const o = {};\n for (let r = 0; r < e.length; r++) {\n o[n[r]] = t[e[r]];\n }\n return o;\n}\n\nfunction nn(e, n) {\n const t = Object.create(null);\n for (const o of e) {\n t[o] = n[o];\n }\n return t;\n}\n\nfunction hasAnyPropsByName(e, n) {\n for (const t of n) {\n if (t in e) {\n return 1;\n }\n }\n return 0;\n}\n\nfunction allPropsEqual(e, n, t) {\n for (const o of e) {\n if (n[o] !== t[o]) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction zeroOutProps(e, n, t) {\n const o = {\n ...t\n };\n for (let t = 0; t < n; t++) {\n o[e[t]] = 0;\n }\n return o;\n}\n\nfunction gt(e, ...n) {\n return (...t) => e(...n, ...t);\n}\n\nfunction noop() {}\n\nfunction capitalize(e) {\n return e[0].toUpperCase() + e.substring(1);\n}\n\nfunction sortStrings(e) {\n return e.slice().sort();\n}\n\nfunction padNumber(e, n) {\n return String(n).padStart(e, \"0\");\n}\n\nfunction compareNumbers(e, n) {\n return Math.sign(e - n);\n}\n\nfunction clampNumber(e, n, t) {\n return Math.min(Math.max(e, n), t);\n}\n\nfunction divModFloor(e, n) {\n return [ Math.floor(e / n), modFloor(e, n) ];\n}\n\nfunction modFloor(e, n) {\n return (e % n + n) % n;\n}\n\nfunction divModTrunc(e, n) {\n return [ divTrunc(e, n), modTrunc(e, n) ];\n}\n\nfunction divTrunc(e, n) {\n return Math.trunc(e / n) || 0;\n}\n\nfunction modTrunc(e, n) {\n return e % n || 0;\n}\n\nfunction hasHalf(e) {\n return .5 === Math.abs(e % 1);\n}\n\nfunction givenFieldsToBigNano(e, n, t) {\n let o = 0, r = 0;\n for (let i = 0; i <= n; i++) {\n const n = e[t[i]], a = Zu[i], s = go / a, [c, u] = divModTrunc(n, s);\n o += u * a, r += c;\n }\n const [i, a] = divModTrunc(o, go);\n return [ r + i, a ];\n}\n\nfunction nanoToGivenFields(e, n, t) {\n const o = {};\n for (let r = n; r >= 0; r--) {\n const n = Zu[r];\n o[t[r]] = divTrunc(e, n), e = modTrunc(e, n);\n }\n return o;\n}\n\nfunction m(e) {\n if (void 0 !== e) {\n return d(e);\n }\n}\n\nfunction g(e) {\n if (void 0 !== e) {\n return h(e);\n }\n}\n\nfunction S(e) {\n if (void 0 !== e) {\n return T(e);\n }\n}\n\nfunction h(e) {\n return requireNumberIsPositive(T(e));\n}\n\nfunction T(e) {\n return _e(rl(e));\n}\n\nfunction requirePropDefined(e, n) {\n if (null == n) {\n throw new RangeError(missingField(e));\n }\n return n;\n}\n\nfunction oa(e) {\n if (!s(e)) {\n throw new TypeError(ru);\n }\n return e;\n}\n\nfunction requireType(e, n, t = e) {\n if (typeof n !== e) {\n throw new TypeError(invalidEntity(t, n));\n }\n return n;\n}\n\nfunction _e(e, n = \"number\") {\n if (!Number.isInteger(e)) {\n throw new RangeError(expectedInteger(n, e));\n }\n return e || 0;\n}\n\nfunction requireNumberIsPositive(e, n = \"number\") {\n if (e <= 0) {\n throw new RangeError(expectedPositive(n, e));\n }\n return e;\n}\n\nfunction tu(e) {\n if (\"symbol\" == typeof e) {\n throw new TypeError(ou);\n }\n return String(e);\n}\n\nfunction toStringViaPrimitive(e, n) {\n return s(e) ? String(e) : d(e, n);\n}\n\nfunction toBigInt(e) {\n if (\"string\" == typeof e) {\n return BigInt(e);\n }\n if (\"bigint\" != typeof e) {\n throw new TypeError(invalidBigInt(e));\n }\n return e;\n}\n\nfunction toNumber(e, n = \"number\") {\n if (\"bigint\" == typeof e) {\n throw new TypeError(forbiddenBigIntToNumber(n));\n }\n if (e = Number(e), !Number.isFinite(e)) {\n throw new RangeError(expectedFinite(n, e));\n }\n return e;\n}\n\nfunction Za(e, n) {\n return Math.trunc(toNumber(e, n)) || 0;\n}\n\nfunction Ba(e, n) {\n return _e(toNumber(e, n), n);\n}\n\nfunction toPositiveInteger(e, n) {\n return requireNumberIsPositive(Za(e, n), n);\n}\n\nfunction createBigNano(e, n) {\n let [t, o] = divModTrunc(n, go), r = e + t;\n const i = Math.sign(r);\n return i && i === -Math.sign(o) && (r -= i, o += i * go), [ r, o ];\n}\n\nfunction so(e, n, t = 1) {\n return createBigNano(e[0] + n[0] * t, e[1] + n[1] * t);\n}\n\nfunction Ta(e, n) {\n return createBigNano(e[0], e[1] + n);\n}\n\nfunction va(e, n) {\n return so(n, e, -1);\n}\n\nfunction pa(e, n) {\n return compareNumbers(e[0], n[0]) || compareNumbers(e[1], n[1]);\n}\n\nfunction bigNanoOutside(e, n, t) {\n return -1 === pa(e, n) || 1 === pa(e, t);\n}\n\nfunction bigIntToBigNano(e, n = 1) {\n const t = BigInt(go / n);\n return [ Number(e / t), Number(e % t) * n ];\n}\n\nfunction Ge(e, n = 1) {\n const t = go / n, [o, r] = divModTrunc(e, t);\n return [ o, r * n ];\n}\n\nfunction bigNanoToBigInt(e, n = 1) {\n const [t, o] = e, r = Math.floor(o / n), i = go / n;\n return BigInt(t) * BigInt(i) + BigInt(r);\n}\n\nfunction La(e, n = 1, t) {\n const [o, r] = e, [i, a] = divModTrunc(r, n);\n return o * (go / n) + (i + (t ? a / n : 0));\n}\n\nfunction Oa(e) {\n return e[0] + e[1] / go;\n}\n\nfunction divModBigNano(e, n, t = divModFloor) {\n const [o, r] = e, [i, a] = t(r, n);\n return [ o * (go / n) + i, a ];\n}\n\nfunction checkIsoYearMonthInBounds(e) {\n return clampProp(e, \"isoYear\", Nl, yl, 1), e.isoYear === Nl ? clampProp(e, \"isoMonth\", 4, 12, 1) : e.isoYear === yl && clampProp(e, \"isoMonth\", 1, 9, 1), \n e;\n}\n\nfunction To(e) {\n return Do({\n ...e,\n ...At,\n isoHour: 12\n }), e;\n}\n\nfunction Do(e) {\n const n = clampProp(e, \"isoYear\", Nl, yl, 1), t = n === Nl ? 1 : n === yl ? -1 : 0;\n return t && io(ma({\n ...e,\n isoDay: e.isoDay + t,\n isoNanosecond: e.isoNanosecond - t\n })), e;\n}\n\nfunction io(e) {\n if (!e || bigNanoOutside(e, Ml, Tl)) {\n throw new RangeError(Mu);\n }\n return e;\n}\n\nfunction isoTimeFieldsToNano(e) {\n return givenFieldsToBigNano(e, 5, w)[1];\n}\n\nfunction nanoToIsoTimeAndDay(e) {\n const [n, t] = divModFloor(e, go);\n return [ nanoToGivenFields(t, 5, w), n ];\n}\n\nfunction epochNanoToSec(e) {\n return epochNanoToSecMod(e)[0];\n}\n\nfunction epochNanoToSecMod(e) {\n return divModBigNano(e, oo);\n}\n\nfunction isoToEpochMilli(e) {\n return isoArgsToEpochMilli(e.isoYear, e.isoMonth, e.isoDay, e.isoHour, e.isoMinute, e.isoSecond, e.isoMillisecond);\n}\n\nfunction ma(e) {\n const n = isoToEpochMilli(e);\n if (void 0 !== n) {\n const [t, o] = divModTrunc(n, Cu);\n return [ t, o * Ke + (e.isoMicrosecond || 0) * ro + (e.isoNanosecond || 0) ];\n }\n}\n\nfunction isoToEpochNanoWithOffset(e, n) {\n const [t, o] = nanoToIsoTimeAndDay(isoTimeFieldsToNano(e) - n);\n return io(ma({\n ...e,\n isoDay: e.isoDay + o,\n ...t\n }));\n}\n\nfunction isoArgsToEpochSec(...e) {\n return isoArgsToEpochMilli(...e) / ku;\n}\n\nfunction isoArgsToEpochMilli(...e) {\n const [n, t] = isoToLegacyDate(...e), o = n.valueOf();\n if (!isNaN(o)) {\n return o - t * Cu;\n }\n}\n\nfunction isoToLegacyDate(e, n = 1, t = 1, o = 0, r = 0, i = 0, a = 0) {\n const s = e === Nl ? 1 : e === yl ? -1 : 0, c = new Date;\n return c.setUTCHours(o, r, i, a), c.setUTCFullYear(e, n - 1, t + s), [ c, s ];\n}\n\nfunction So(e, n) {\n let [t, o] = Ta(e, n);\n o < 0 && (o += go, t -= 1);\n const [r, i] = divModFloor(o, Ke), [a, s] = divModFloor(i, ro);\n return Pa(t * Cu + r, a, s);\n}\n\nfunction Pa(e, n = 0, t = 0) {\n const o = Math.ceil(Math.max(0, Math.abs(e) - gl) / Cu) * Math.sign(e), r = new Date(e - o * Cu);\n return zipProps(pl, [ r.getUTCFullYear(), r.getUTCMonth() + 1, r.getUTCDate() + o, r.getUTCHours(), r.getUTCMinutes(), r.getUTCSeconds(), r.getUTCMilliseconds(), n, t ]);\n}\n\nfunction hashIntlFormatParts(e, n) {\n if (n < -gl) {\n throw new RangeError(Mu);\n }\n const t = e.formatToParts(n), o = {};\n for (const e of t) {\n o[e.type] = e.value;\n }\n return o;\n}\n\nfunction computeIsoDay(e) {\n return e.isoDay;\n}\n\nfunction computeIsoDateParts(e) {\n return [ e.isoYear, e.isoMonth, e.isoDay ];\n}\n\nfunction computeIsoMonthCodeParts(e, n) {\n return [ n, 0 ];\n}\n\nfunction computeIsoYearMonthForMonthDay(e, n) {\n if (!n) {\n return [ Pl, e ];\n }\n}\n\nfunction computeIsoFieldsFromParts(e, n, t) {\n return {\n isoYear: e,\n isoMonth: n,\n isoDay: t\n };\n}\n\nfunction fo() {\n return 7;\n}\n\nfunction computeIsoMonthsInYear() {\n return Fl;\n}\n\nfunction computeIsoDaysInMonth(e, n) {\n switch (n) {\n case 2:\n return computeIsoInLeapYear(e) ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n }\n return 31;\n}\n\nfunction computeIsoDaysInYear(e) {\n return computeIsoInLeapYear(e) ? 366 : 365;\n}\n\nfunction computeIsoInLeapYear(e) {\n return e % 4 == 0 && (e % 100 != 0 || e % 400 == 0);\n}\n\nfunction Ha(e) {\n const [n, t] = isoToLegacyDate(e.isoYear, e.isoMonth, e.isoDay);\n return modFloor(n.getUTCDay() - t, 7) || 7;\n}\n\nfunction computeIsoEraParts(e) {\n return this.id === Xu ? (({isoYear: e}) => e < 1 ? [ \"gregory-inverse\", 1 - e ] : [ \"gregory\", e ])(e) : this.id === el ? Ol(e) : [];\n}\n\nfunction computeJapaneseEraParts(e) {\n const n = isoToEpochMilli(e);\n if (n < El) {\n const {isoYear: n} = e;\n return n < 1 ? [ \"japanese-inverse\", 1 - n ] : [ \"japanese\", n ];\n }\n const t = hashIntlFormatParts(bf(el), n), {era: o, eraYear: r} = parseIntlYear(t, el);\n return [ o, r ];\n}\n\nfunction checkIsoDateTimeFields(e) {\n return checkIsoDateFields(e), constrainIsoTimeFields(e, 1), e;\n}\n\nfunction checkIsoDateFields(e) {\n return constrainIsoDateFields(e, 1), e;\n}\n\nfunction isIsoDateFieldsValid(e) {\n return allPropsEqual(ml, e, constrainIsoDateFields(e));\n}\n\nfunction constrainIsoDateFields(e, n) {\n const {isoYear: t} = e, o = clampProp(e, \"isoMonth\", 1, computeIsoMonthsInYear(), n);\n return {\n isoYear: t,\n isoMonth: o,\n isoDay: clampProp(e, \"isoDay\", 1, computeIsoDaysInMonth(t, o), n)\n };\n}\n\nfunction constrainIsoTimeFields(e, n) {\n return zipProps(w, [ clampProp(e, \"isoHour\", 0, 23, n), clampProp(e, \"isoMinute\", 0, 59, n), clampProp(e, \"isoSecond\", 0, 59, n), clampProp(e, \"isoMillisecond\", 0, 999, n), clampProp(e, \"isoMicrosecond\", 0, 999, n), clampProp(e, \"isoNanosecond\", 0, 999, n) ]);\n}\n\nfunction dt(e) {\n return void 0 === e ? 0 : Gl(oa(e));\n}\n\nfunction je(e, n = 0) {\n e = normalizeOptions(e);\n const t = Vl(e), o = _l(e, n);\n return [ Gl(e), o, t ];\n}\n\nfunction refineDiffOptions(e, n, t, o = 9, r = 0, i = 4) {\n n = normalizeOptions(n);\n let a = $l(n, o, r), s = parseRoundingIncInteger(n), c = Xl(n, i);\n const u = xl(n, o, r, 1);\n return null == a ? a = Math.max(t, u) : checkLargestSmallestUnit(a, u), s = refineRoundingInc(s, u, 1), \n e && (c = (e => e < 4 ? (e + 2) % 4 : e)(c)), [ a, u, s, c ];\n}\n\nfunction refineRoundingOptions(e, n = 6, t) {\n let o = parseRoundingIncInteger(e = normalizeOptionsOrString(e, bl));\n const r = Xl(e, 7);\n let i = xl(e, n);\n return i = requirePropDefined(bl, i), o = refineRoundingInc(o, i, void 0, t), [ i, o, r ];\n}\n\nfunction refineDateDisplayOptions(e) {\n return Jl(normalizeOptions(e));\n}\n\nfunction refineTimeDisplayOptions(e, n) {\n return refineTimeDisplayTuple(normalizeOptions(e), n);\n}\n\nfunction Ze(e) {\n const n = normalizeOptionsOrString(e, kl), t = refineChoiceOption(kl, Wl, n, 0);\n if (!t) {\n throw new RangeError(invalidEntity(kl, t));\n }\n return t;\n}\n\nfunction refineTimeDisplayTuple(e, n = 4) {\n const t = refineSubsecDigits(e);\n return [ Xl(e, 4), ...refineSmallestUnitAndSubsecDigits(xl(e, n), t) ];\n}\n\nfunction refineSmallestUnitAndSubsecDigits(e, n) {\n return null != e ? [ Zu[e], e < 4 ? 9 - 3 * e : -1 ] : [ void 0 === n ? 1 : 10 ** (9 - n), n ];\n}\n\nfunction parseRoundingIncInteger(e) {\n const n = e[Bl];\n return void 0 === n ? 1 : Za(n, Bl);\n}\n\nfunction refineRoundingInc(e, n, t, o) {\n const r = o ? go : Zu[n + 1];\n if (r) {\n const t = Zu[n];\n if (r % ((e = ba(Bl, e, 1, r / t - (o ? 0 : 1), 1)) * t)) {\n throw new RangeError(invalidEntity(Bl, e));\n }\n } else {\n e = ba(Bl, e, 1, t ? 10 ** 9 : 1, 1);\n }\n return e;\n}\n\nfunction refineSubsecDigits(e) {\n let n = e[Yl];\n if (void 0 !== n) {\n if (\"number\" != typeof n) {\n if (\"auto\" === tu(n)) {\n return;\n }\n throw new RangeError(invalidEntity(Yl, n));\n }\n n = ba(Yl, Math.floor(n), 0, 9, 1);\n }\n return n;\n}\n\nfunction normalizeOptions(e) {\n return void 0 === e ? {} : oa(e);\n}\n\nfunction normalizeOptionsOrString(e, n) {\n return \"string\" == typeof e ? {\n [n]: e\n } : oa(e);\n}\n\nfunction fabricateOverflowOptions(e) {\n return {\n overflow: Rl[e]\n };\n}\n\nfunction refineUnitOption(e, n, t = 9, o = 0, r) {\n let i = n[e];\n if (void 0 === i) {\n return r ? o : void 0;\n }\n if (i = tu(i), \"auto\" === i) {\n return r ? o : null;\n }\n let a = Bu[i];\n if (void 0 === a && (a = ul[i]), void 0 === a) {\n throw new RangeError(invalidChoice(e, i, Bu));\n }\n return ba(e, a, o, t, 1, Yu), a;\n}\n\nfunction refineChoiceOption(e, n, t, o = 0) {\n const r = t[e];\n if (void 0 === r) {\n return o;\n }\n const i = tu(r), a = n[i];\n if (void 0 === a) {\n throw new RangeError(invalidChoice(e, i, n));\n }\n return a;\n}\n\nfunction checkLargestSmallestUnit(e, n) {\n if (n > e) {\n throw new RangeError(Eu);\n }\n}\n\nfunction xe(e) {\n return {\n branding: Re,\n epochNanoseconds: e\n };\n}\n\nfunction Xe(e, n, t) {\n return {\n branding: _,\n calendar: t,\n timeZone: n,\n epochNanoseconds: e\n };\n}\n\nfunction jt(e, n = e.calendar) {\n return {\n branding: x,\n calendar: n,\n ...nn(Il, e)\n };\n}\n\nfunction W(e, n = e.calendar) {\n return {\n branding: G,\n calendar: n,\n ...nn(Ca, e)\n };\n}\n\nfunction createPlainYearMonthSlots(e, n = e.calendar) {\n return {\n branding: Qt,\n calendar: n,\n ...nn(Ca, e)\n };\n}\n\nfunction createPlainMonthDaySlots(e, n = e.calendar) {\n return {\n branding: qt,\n calendar: n,\n ...nn(Ca, e)\n };\n}\n\nfunction St(e) {\n return {\n branding: ft,\n ...nn(hl, e)\n };\n}\n\nfunction pe(e) {\n return {\n branding: A,\n sign: computeDurationSign(e),\n ...nn(il, e)\n };\n}\n\nfunction I(e) {\n return divModBigNano(e.epochNanoseconds, Ke)[0];\n}\n\nfunction b(e) {\n return bigNanoToBigInt(e.epochNanoseconds);\n}\n\nfunction fa(e) {\n return e.epochNanoseconds;\n}\n\nfunction J(e, n, t, o, r) {\n const i = getMaxDurationUnit(o), [a, s] = ((e, n) => {\n const t = n((e = normalizeOptionsOrString(e, Sl))[Cl]);\n let o = Hl(e);\n return o = requirePropDefined(Sl, o), [ o, t ];\n })(r, e), c = Math.max(a, i);\n if (!s && isUniformUnit(c, s)) {\n return totalDayTimeDuration(o, a);\n }\n if (!s) {\n throw new RangeError(vu);\n }\n if (!o.sign) {\n return 0;\n }\n const [u, l, f] = createMarkerSystem(n, t, s), d = createMarkerToEpochNano(f), m = createMoveMarker(f), p = createDiffMarkers(f), h = m(l, u, o);\n isZonedEpochSlots(s) || (Do(u), Do(h));\n const I = p(l, u, h, a);\n return isUniformUnit(a, s) ? totalDayTimeDuration(I, a) : ya(I, d(h), a, l, u, d, m);\n}\n\nfunction ya(e, n, t, o, r, i, a) {\n const s = computeDurationSign(e), [c, u] = clampRelativeDuration(o, dl(t, e), t, s, r, i, a), l = ja(n, c, u);\n return e[O[t]] + l * s;\n}\n\nfunction totalDayTimeDuration(e, n) {\n return La(durationFieldsToBigNano(e), Zu[n], 1);\n}\n\nfunction clampRelativeDuration(e, n, t, o, r, i, a) {\n const s = O[t], c = {\n ...n,\n [s]: n[s] + o\n }, u = a(e, r, n), l = a(e, r, c);\n return [ i(u), i(l) ];\n}\n\nfunction ja(e, n, t) {\n const o = La(va(n, t));\n if (!o) {\n throw new RangeError(du);\n }\n return La(va(n, e)) / o;\n}\n\nfunction Le(e, n) {\n const [t, o, r] = refineRoundingOptions(n, 5, 1);\n return xe(roundBigNano(e.epochNanoseconds, t, o, r, 1));\n}\n\nfunction Ie(e, n, t) {\n let {epochNanoseconds: o, timeZone: r, calendar: i} = n;\n const [a, s, c] = refineRoundingOptions(t);\n if (0 === a && 1 === s) {\n return n;\n }\n const u = e(r);\n if (6 === a) {\n o = uo(computeDayInterval, u, n, c);\n } else {\n const e = u.N(o);\n o = getMatchingInstantFor(u, roundDateTime(So(o, e), a, s, c), e, 2, 0, 1);\n }\n return Xe(o, r, i);\n}\n\nfunction bt(e, n) {\n return jt(roundDateTime(e, ...refineRoundingOptions(n)), e.calendar);\n}\n\nfunction lt(e, n) {\n const [t, o, r] = refineRoundingOptions(n, 5);\n var i;\n return St((i = r, roundTimeToNano(e, computeNanoInc(t, o), i)[0]));\n}\n\nfunction Te(e, n) {\n const t = e(n.timeZone), o = he(n, t), [r, i] = computeDayInterval(o), a = La(va(getStartOfDayInstantFor(t, r), getStartOfDayInstantFor(t, i)), no, 1);\n if (a <= 0) {\n throw new RangeError(du);\n }\n return a;\n}\n\nfunction be(e, n) {\n const {timeZone: t, calendar: o} = n;\n return Xe(lo(ho, e(t), n), t, o);\n}\n\nfunction lo(e, n, t) {\n return getStartOfDayInstantFor(n, e(he(t, n)));\n}\n\nfunction uo(e, n, t, o) {\n const r = he(t, n), [i, a] = e(r), s = t.epochNanoseconds, c = getStartOfDayInstantFor(n, i), u = getStartOfDayInstantFor(n, a);\n if (bigNanoOutside(s, c, u)) {\n throw new RangeError(du);\n }\n return Ea(ja(s, c, u), o) ? u : c;\n}\n\nfunction roundDateTime(e, n, t, o) {\n return roundDateTimeToNano(e, computeNanoInc(n, t), o);\n}\n\nfunction roundDateTimeToNano(e, n, t) {\n const [o, r] = roundTimeToNano(e, n, t);\n return Do({\n ...Ua(e, r),\n ...o\n });\n}\n\nfunction roundTimeToNano(e, n, t) {\n return nanoToIsoTimeAndDay(Da(isoTimeFieldsToNano(e), n, t));\n}\n\nfunction roundToMinute(e) {\n return Da(e, ao, 7);\n}\n\nfunction computeNanoInc(e, n) {\n return Zu[e] * n;\n}\n\nfunction computeDayInterval(e) {\n const n = ho(e);\n return [ n, Ua(n, 1) ];\n}\n\nfunction ho(e) {\n return Ra(6, e);\n}\n\nfunction roundDayTimeDurationByInc(e, n, t) {\n const o = Math.min(getMaxDurationUnit(e), 6);\n return nanoToDurationDayTimeFields(Ya(durationFieldsToBigNano(e, o), n, t), o);\n}\n\nfunction roundRelativeDuration(e, n, t, o, r, i, a, s, c, u) {\n if (0 === o && 1 === r) {\n return e;\n }\n const l = isUniformUnit(o, s) ? isZonedEpochSlots(s) && o < 6 && t >= 6 ? nudgeZonedTimeDuration : nudgeDayTimeDuration : nudgeRelativeDuration;\n let [f, d, m] = l(e, n, t, o, r, i, a, s, c, u);\n return m && 7 !== o && (f = ((e, n, t, o, r, i, a, s) => {\n const c = computeDurationSign(e);\n for (let u = o + 1; u <= t; u++) {\n if (7 === u && 7 !== t) {\n continue;\n }\n const o = dl(u, e);\n o[O[u]] += c;\n const l = La(va(a(s(r, i, o)), n));\n if (l && Math.sign(l) !== c) {\n break;\n }\n e = o;\n }\n return e;\n })(f, d, t, Math.max(6, o), a, s, c, u)), f;\n}\n\nfunction roundBigNano(e, n, t, o, r) {\n return 6 === n ? [ Da(Oa(e), t, o), 0 ] : Ya(e, computeNanoInc(n, t), o, r);\n}\n\nfunction Ya(e, n, t, o) {\n let [r, i] = e;\n o && i < 0 && (i += go, r -= 1);\n const [a, s] = divModFloor(Da(i, n, t), go);\n return createBigNano(r + a, s);\n}\n\nfunction Da(e, n, t) {\n return Ea(e / n, t) * n;\n}\n\nfunction Ea(e, n) {\n return ef[n](e);\n}\n\nfunction nudgeDayTimeDuration(e, n, t, o, r, i) {\n const a = computeDurationSign(e), s = durationFieldsToBigNano(e), c = roundBigNano(s, o, r, i), u = va(s, c), l = Math.sign(c[0] - s[0]) === a, f = nanoToDurationDayTimeFields(c, Math.min(t, 6));\n return [ {\n ...e,\n ...f\n }, so(n, u), l ];\n}\n\nfunction nudgeZonedTimeDuration(e, n, t, o, r, i, a, s, c, u) {\n const l = computeDurationSign(e) || 1, f = La(durationFieldsToBigNano(e, 5)), d = computeNanoInc(o, r);\n let m = Da(f, d, i);\n const [p, h] = clampRelativeDuration(a, {\n ...e,\n ...fl\n }, 6, l, s, c, u), I = m - La(va(p, h));\n let D = 0;\n I && Math.sign(I) !== l ? n = Ta(p, m) : (D += l, m = Da(I, d, i), n = Ta(h, m));\n const g = nanoToDurationTimeFields(m);\n return [ {\n ...e,\n ...g,\n days: e.days + D\n }, n, Boolean(D) ];\n}\n\nfunction nudgeRelativeDuration(e, n, t, o, r, i, a, s, c, u) {\n const l = computeDurationSign(e), f = O[o], d = dl(o, e);\n 7 === o && (e = {\n ...e,\n weeks: e.weeks + Math.trunc(e.days / 7)\n });\n const m = divTrunc(e[f], r) * r;\n d[f] = m;\n const [p, h] = clampRelativeDuration(a, d, o, r * l, s, c, u), I = m + ja(n, p, h) * l * r, D = Da(I, r, i), g = Math.sign(D - I) === l;\n return d[f] = D, [ d, g ? h : p, g ];\n}\n\nfunction ke(e, n, t, o) {\n const [r, i, a, s] = (e => {\n const n = refineTimeDisplayTuple(e = normalizeOptions(e));\n return [ e.timeZone, ...n ];\n })(o), c = void 0 !== r;\n return ((e, n, t, o, r, i) => {\n t = Ya(t, r, o, 1);\n const a = n.N(t);\n return formatIsoDateTimeFields(So(t, a), i) + (e ? Se(roundToMinute(a)) : \"Z\");\n })(c, n(c ? e(r) : nf), t.epochNanoseconds, i, a, s);\n}\n\nfunction Fe(e, n, t) {\n const [o, r, i, a, s, c] = (e => {\n e = normalizeOptions(e);\n const n = Jl(e), t = refineSubsecDigits(e), o = Ql(e), r = Xl(e, 4), i = xl(e, 4);\n return [ n, Kl(e), o, r, ...refineSmallestUnitAndSubsecDigits(i, t) ];\n })(t);\n return ((e, n, t, o, r, i, a, s, c, u) => {\n o = Ya(o, c, s, 1);\n const l = e(t).N(o);\n return formatIsoDateTimeFields(So(o, l), u) + Se(roundToMinute(l), a) + ((e, n) => 1 !== n ? \"[\" + (2 === n ? \"!\" : \"\") + e + \"]\" : \"\")(t, i) + formatCalendar(n, r);\n })(e, n.calendar, n.timeZone, n.epochNanoseconds, o, r, i, a, s, c);\n}\n\nfunction Ft(e, n) {\n const [t, o, r, i] = (e => (e = normalizeOptions(e), [ Jl(e), ...refineTimeDisplayTuple(e) ]))(n);\n return a = e.calendar, s = t, c = i, formatIsoDateTimeFields(roundDateTimeToNano(e, r, o), c) + formatCalendar(a, s);\n var a, s, c;\n}\n\nfunction ce(e, n) {\n return t = e.calendar, o = e, r = refineDateDisplayOptions(n), formatIsoDateFields(o) + formatCalendar(t, r);\n var t, o, r;\n}\n\nfunction Ht(e, n) {\n return formatDateLikeIso(e.calendar, formatIsoYearMonthFields, e, refineDateDisplayOptions(n));\n}\n\nfunction Jt(e, n) {\n return formatDateLikeIso(e.calendar, formatIsoMonthDayFields, e, refineDateDisplayOptions(n));\n}\n\nfunction ct(e, n) {\n const [t, o, r] = refineTimeDisplayOptions(n);\n return i = r, formatIsoTimeFields(roundTimeToNano(e, o, t)[0], i);\n var i;\n}\n\nfunction k(e, n) {\n const [t, o, r] = refineTimeDisplayOptions(n, 3);\n return o > 1 && checkDurationUnits(e = {\n ...e,\n ...roundDayTimeDurationByInc(e, o, t)\n }), ((e, n) => {\n const {sign: t} = e, o = -1 === t ? negateDurationFields(e) : e, {hours: r, minutes: i} = o, [a, s] = divModBigNano(durationFieldsToBigNano(o, 3), oo, divModTrunc);\n checkDurationTimeUnit(a);\n const c = formatSubsecNano(s, n), u = n >= 0 || !t || c;\n return (t < 0 ? \"-\" : \"\") + \"P\" + formatDurationFragments({\n Y: formatDurationNumber(o.years),\n M: formatDurationNumber(o.months),\n W: formatDurationNumber(o.weeks),\n D: formatDurationNumber(o.days)\n }) + (r || i || a || u ? \"T\" + formatDurationFragments({\n H: formatDurationNumber(r),\n M: formatDurationNumber(i),\n S: formatDurationNumber(a, u) + c\n }) : \"\");\n })(e, r);\n}\n\nfunction formatDateLikeIso(e, n, t, o) {\n const r = o > 1 || 0 === o && e !== l;\n return 1 === o ? e === l ? n(t) : formatIsoDateFields(t) : r ? formatIsoDateFields(t) + formatCalendarId(e, 2 === o) : n(t);\n}\n\nfunction formatDurationFragments(e) {\n const n = [];\n for (const t in e) {\n const o = e[t];\n o && n.push(o, t);\n }\n return n.join(\"\");\n}\n\nfunction formatIsoDateTimeFields(e, n) {\n return formatIsoDateFields(e) + \"T\" + formatIsoTimeFields(e, n);\n}\n\nfunction formatIsoDateFields(e) {\n return formatIsoYearMonthFields(e) + \"-\" + wu(e.isoDay);\n}\n\nfunction formatIsoYearMonthFields(e) {\n const {isoYear: n} = e;\n return (n < 0 || n > 9999 ? getSignStr(n) + padNumber(6, Math.abs(n)) : padNumber(4, n)) + \"-\" + wu(e.isoMonth);\n}\n\nfunction formatIsoMonthDayFields(e) {\n return wu(e.isoMonth) + \"-\" + wu(e.isoDay);\n}\n\nfunction formatIsoTimeFields(e, n) {\n const t = [ wu(e.isoHour), wu(e.isoMinute) ];\n return -1 !== n && t.push(wu(e.isoSecond) + ((e, n, t, o) => formatSubsecNano(e * Ke + n * ro + t, o))(e.isoMillisecond, e.isoMicrosecond, e.isoNanosecond, n)), \n t.join(\":\");\n}\n\nfunction Se(e, n = 0) {\n if (1 === n) {\n return \"\";\n }\n const [t, o] = divModFloor(Math.abs(e), no), [r, i] = divModFloor(o, ao), [a, s] = divModFloor(i, oo);\n return getSignStr(e) + wu(t) + \":\" + wu(r) + (a || s ? \":\" + wu(a) + formatSubsecNano(s) : \"\");\n}\n\nfunction formatCalendar(e, n) {\n return 1 !== n && (n > 1 || 0 === n && e !== l) ? formatCalendarId(e, 2 === n) : \"\";\n}\n\nfunction formatCalendarId(e, n) {\n return \"[\" + (n ? \"!\" : \"\") + \"u-ca=\" + e + \"]\";\n}\n\nfunction formatSubsecNano(e, n) {\n let t = padNumber(9, e);\n return t = void 0 === n ? t.replace(af, \"\") : t.slice(0, n), t ? \".\" + t : \"\";\n}\n\nfunction getSignStr(e) {\n return e < 0 ? \"-\" : \"+\";\n}\n\nfunction formatDurationNumber(e, n) {\n return e || n ? e.toLocaleString(\"fullwide\", {\n useGrouping: 0\n }) : \"\";\n}\n\nfunction _zonedEpochSlotsToIso(e, n) {\n const {epochNanoseconds: t} = e, o = (n.N ? n : n(e.timeZone)).N(t), r = So(t, o);\n return {\n calendar: e.calendar,\n ...r,\n offsetNanoseconds: o\n };\n}\n\nfunction getMatchingInstantFor(e, n, t, o = 0, r = 0, i, a) {\n if (void 0 !== t && 1 === o && (1 === o || a)) {\n return isoToEpochNanoWithOffset(n, t);\n }\n const s = e.v(n);\n if (void 0 !== t && 3 !== o) {\n const e = ((e, n, t, o) => {\n const r = ma(n);\n o && (t = roundToMinute(t));\n for (const n of e) {\n let e = La(va(n, r));\n if (o && (e = roundToMinute(e)), e === t) {\n return n;\n }\n }\n })(s, n, t, i);\n if (void 0 !== e) {\n return e;\n }\n if (0 === o) {\n throw new RangeError(gu);\n }\n }\n return a ? ma(n) : $o(e, n, r, s);\n}\n\nfunction $o(e, n, t = 0, o = e.v(n)) {\n if (1 === o.length) {\n return o[0];\n }\n if (1 === t) {\n throw new RangeError(Tu);\n }\n if (o.length) {\n return o[3 === t ? 1 : 0];\n }\n const r = ma(n), i = ((e, n) => {\n const t = e.N(Ta(n, -go));\n return (e => {\n if (e > go) {\n throw new RangeError(Du);\n }\n return e;\n })(e.N(Ta(n, go)) - t);\n })(e, r), a = i * (2 === t ? -1 : 1);\n return (o = e.v(So(r, a)))[2 === t ? 0 : o.length - 1];\n}\n\nfunction getStartOfDayInstantFor(e, n) {\n const t = e.v(n);\n if (t.length) {\n return t[0];\n }\n const o = Ta(ma(n), -go);\n return e.l(o, 1);\n}\n\nfunction Ye(e, n, t) {\n return xe(io(so(n.epochNanoseconds, (e => {\n if (durationHasDateParts(e)) {\n throw new RangeError(Pu);\n }\n return durationFieldsToBigNano(e, 5);\n })(e ? negateDurationFields(t) : t))));\n}\n\nfunction Oe(e, n, t, o, r, i = Object.create(null)) {\n const a = n(o.timeZone), s = e(o.calendar);\n return {\n ...o,\n ...Fa(a, s, o, t ? negateDurationFields(r) : r, i)\n };\n}\n\nfunction wt(e, n, t, o, r = Object.create(null)) {\n const {calendar: i} = t;\n return jt(ka(e(i), t, n ? negateDurationFields(o) : o, r), i);\n}\n\nfunction ne(e, n, t, o, r) {\n const {calendar: i} = t;\n return W(moveDate(e(i), t, n ? negateDurationFields(o) : o, r), i);\n}\n\nfunction Gt(e, n, t, o, r) {\n const i = t.calendar, a = e(i);\n let s = To(Na(a, t));\n n && (o = B(o)), o.sign < 0 && (s = a.P(s, {\n ...ll,\n months: 1\n }), s = Ua(s, -1));\n const c = a.P(s, o, r);\n return createPlainYearMonthSlots(Na(a, c), i);\n}\n\nfunction at(e, n, t) {\n return St(moveTime(n, e ? negateDurationFields(t) : t)[0]);\n}\n\nfunction Fa(e, n, t, o, r) {\n const i = durationFieldsToBigNano(o, 5);\n let a = t.epochNanoseconds;\n if (durationHasDateParts(o)) {\n const s = he(t, e);\n a = so($o(e, {\n ...moveDate(n, s, {\n ...o,\n ...fl\n }, r),\n ...nn(w, s)\n }), i);\n } else {\n a = so(a, i), dt(r);\n }\n return {\n epochNanoseconds: io(a)\n };\n}\n\nfunction ka(e, n, t, o) {\n const [r, i] = moveTime(n, t);\n return Do({\n ...moveDate(e, n, {\n ...t,\n ...fl,\n days: t.days + i\n }, o),\n ...r\n });\n}\n\nfunction moveDate(e, n, t, o) {\n if (t.years || t.months || t.weeks) {\n return e.P(n, t, o);\n }\n dt(o);\n const r = t.days + durationFieldsToBigNano(t, 5)[0];\n return r ? To(Ua(n, r)) : n;\n}\n\nfunction Na(e, n, t = 1) {\n return Ua(n, t - e.day(n));\n}\n\nfunction moveTime(e, n) {\n const [t, o] = durationFieldsToBigNano(n, 5), [r, i] = nanoToIsoTimeAndDay(isoTimeFieldsToNano(e) + o);\n return [ r, t + i ];\n}\n\nfunction nativeDateAdd(e, n, t) {\n const o = dt(t);\n let r, {years: i, months: a, weeks: s, days: c} = n;\n if (c += durationFieldsToBigNano(n, 5)[0], i || a) {\n r = wa(this, e, i, a, o);\n } else {\n if (!s && !c) {\n return e;\n }\n r = isoToEpochMilli(e);\n }\n if (void 0 === r) {\n throw new RangeError(Mu);\n }\n return r += (7 * s + c) * Cu, To(Pa(r));\n}\n\nfunction wa(e, n, t, o, r) {\n let [i, a, s] = e.u(n);\n if (t) {\n const [n, o] = e.m(i, a);\n i += t, a = monthCodeNumberToMonth(n, o, e.F(i)), a = ba(\"month\", a, 1, e.O(i), r);\n }\n return o && ([i, a] = e.p(i, a, o)), s = ba(\"day\", s, 1, e.B(i, a), r), e.M(i, a, s);\n}\n\nfunction isoMonthAdd(e, n, t) {\n return e += divTrunc(t, Fl), (n += modTrunc(t, Fl)) < 1 ? (e--, n += Fl) : n > Fl && (e++, \n n -= Fl), [ e, n ];\n}\n\nfunction intlMonthAdd(e, n, t) {\n if (t) {\n if (n += t, !Number.isSafeInteger(n)) {\n throw new RangeError(Mu);\n }\n if (t < 0) {\n for (;n < 1; ) {\n n += computeIntlMonthsInYear.call(this, --e);\n }\n } else {\n let t;\n for (;n > (t = computeIntlMonthsInYear.call(this, e)); ) {\n n -= t, e++;\n }\n }\n }\n return [ e, n ];\n}\n\nfunction Ua(e, n) {\n return n ? {\n ...e,\n ...Pa(isoToEpochMilli(e) + n * Cu)\n } : e;\n}\n\nfunction createMarkerSystem(e, n, t) {\n const o = e(t.calendar);\n return isZonedEpochSlots(t) ? [ t, o, n(t.timeZone) ] : [ {\n ...t,\n ...At\n }, o ];\n}\n\nfunction createMarkerToEpochNano(e) {\n return e ? fa : ma;\n}\n\nfunction createMoveMarker(e) {\n return e ? gt(Fa, e) : ka;\n}\n\nfunction createDiffMarkers(e) {\n return e ? gt(diffZonedEpochsExact, e) : diffDateTimesExact;\n}\n\nfunction isZonedEpochSlots(e) {\n return e && e.epochNanoseconds;\n}\n\nfunction isUniformUnit(e, n) {\n return e <= 6 - (isZonedEpochSlots(n) ? 1 : 0);\n}\n\nfunction E(e, n, t, o, r, i, a) {\n const s = e(normalizeOptions(a).relativeTo), c = Math.max(getMaxDurationUnit(r), getMaxDurationUnit(i));\n if (isUniformUnit(c, s)) {\n return pe(checkDurationUnits(((e, n, t, o) => {\n const r = so(durationFieldsToBigNano(e), durationFieldsToBigNano(n), o ? -1 : 1);\n if (!Number.isFinite(r[0])) {\n throw new RangeError(Mu);\n }\n return {\n ...ll,\n ...nanoToDurationDayTimeFields(r, t)\n };\n })(r, i, c, o)));\n }\n if (!s) {\n throw new RangeError(vu);\n }\n o && (i = negateDurationFields(i));\n const [u, l, f] = createMarkerSystem(n, t, s), d = createMoveMarker(f), m = createDiffMarkers(f), p = d(l, u, r);\n return pe(m(l, u, d(l, p, i), c));\n}\n\nfunction V(e, n, t, o, r) {\n const i = getMaxDurationUnit(o), [a, s, c, u, l] = ((e, n, t) => {\n e = normalizeOptionsOrString(e, bl);\n let o = $l(e);\n const r = t(e[Cl]);\n let i = parseRoundingIncInteger(e);\n const a = Xl(e, 7);\n let s = xl(e);\n if (void 0 === o && void 0 === s) {\n throw new RangeError(Fu);\n }\n if (null == s && (s = 0), null == o && (o = Math.max(s, n)), checkLargestSmallestUnit(o, s), \n i = refineRoundingInc(i, s, 1), i > 1 && s > 5 && o !== s) {\n throw new RangeError(\"For calendar units with roundingIncrement > 1, use largestUnit = smallestUnit\");\n }\n return [ o, s, i, a, r ];\n })(r, i, e), f = Math.max(i, a);\n if (!l && f <= 6) {\n return pe(checkDurationUnits(((e, n, t, o, r) => {\n const i = roundBigNano(durationFieldsToBigNano(e), t, o, r);\n return {\n ...ll,\n ...nanoToDurationDayTimeFields(i, n)\n };\n })(o, a, s, c, u)));\n }\n if (!isZonedEpochSlots(l) && !o.sign) {\n return o;\n }\n if (!l) {\n throw new RangeError(vu);\n }\n const [d, m, p] = createMarkerSystem(n, t, l), h = createMarkerToEpochNano(p), I = createMoveMarker(p), D = createDiffMarkers(p), g = I(m, d, o);\n isZonedEpochSlots(l) || (Do(d), Do(g));\n let T = D(m, d, g, a);\n const M = o.sign, y = computeDurationSign(T);\n if (M && y && M !== y) {\n throw new RangeError(du);\n }\n return T = roundRelativeDuration(T, h(g), a, s, c, u, m, d, h, I), pe(T);\n}\n\nfunction Y(e) {\n return -1 === e.sign ? B(e) : e;\n}\n\nfunction B(e) {\n return pe(negateDurationFields(e));\n}\n\nfunction negateDurationFields(e) {\n const n = {};\n for (const t of O) {\n n[t] = -1 * e[t] || 0;\n }\n return n;\n}\n\nfunction y(e) {\n return !e.sign;\n}\n\nfunction computeDurationSign(e, n = O) {\n let t = 0;\n for (const o of n) {\n const n = Math.sign(e[o]);\n if (n) {\n if (t && t !== n) {\n throw new RangeError(Nu);\n }\n t = n;\n }\n }\n return t;\n}\n\nfunction checkDurationUnits(e) {\n for (const n of cl) {\n ba(n, e[n], -sf, sf, 1);\n }\n return checkDurationTimeUnit(La(durationFieldsToBigNano(e), oo)), e;\n}\n\nfunction checkDurationTimeUnit(e) {\n if (!Number.isSafeInteger(e)) {\n throw new RangeError(yu);\n }\n}\n\nfunction durationFieldsToBigNano(e, n = 6) {\n return givenFieldsToBigNano(e, n, O);\n}\n\nfunction nanoToDurationDayTimeFields(e, n = 6) {\n const [t, o] = e, r = nanoToGivenFields(o, n, O);\n if (r[O[n]] += t * (go / Zu[n]), !Number.isFinite(r[O[n]])) {\n throw new RangeError(Mu);\n }\n return r;\n}\n\nfunction nanoToDurationTimeFields(e, n = 5) {\n return nanoToGivenFields(e, n, O);\n}\n\nfunction durationHasDateParts(e) {\n return Boolean(computeDurationSign(e, sl));\n}\n\nfunction getMaxDurationUnit(e) {\n let n = 9;\n for (;n > 0 && !e[O[n]]; n--) {}\n return n;\n}\n\nfunction createSplitTuple(e, n) {\n return [ e, n ];\n}\n\nfunction computePeriod(e) {\n const n = Math.floor(e / tf) * tf;\n return [ n, n + tf ];\n}\n\nfunction We(e) {\n const n = parseDateTimeLike(e = toStringViaPrimitive(e));\n if (!n) {\n throw new RangeError(failedParse(e));\n }\n let t;\n if (n.C) {\n t = 0;\n } else {\n if (!n.offset) {\n throw new RangeError(failedParse(e));\n }\n t = parseOffsetNano(n.offset);\n }\n return n.timeZone && parseOffsetNanoMaybe(n.timeZone, 1), xe(isoToEpochNanoWithOffset(checkIsoDateTimeFields(n), t));\n}\n\nfunction $(e) {\n const n = parseDateTimeLike(d(e));\n if (!n) {\n throw new RangeError(failedParse(e));\n }\n if (n.timeZone) {\n return finalizeZonedDateTime(n, n.offset ? parseOffsetNano(n.offset) : void 0);\n }\n if (n.C) {\n throw new RangeError(failedParse(e));\n }\n return finalizeDate(n);\n}\n\nfunction Ne(e, n) {\n const t = parseDateTimeLike(d(e));\n if (!t || !t.timeZone) {\n throw new RangeError(failedParse(e));\n }\n const {offset: o} = t, r = o ? parseOffsetNano(o) : void 0, [, i, a] = je(n);\n return finalizeZonedDateTime(t, r, i, a);\n}\n\nfunction parseOffsetNano(e) {\n const n = parseOffsetNanoMaybe(e);\n if (void 0 === n) {\n throw new RangeError(failedParse(e));\n }\n return n;\n}\n\nfunction Bt(e) {\n const n = parseDateTimeLike(d(e));\n if (!n || n.C) {\n throw new RangeError(failedParse(e));\n }\n return jt(finalizeDateTime(n));\n}\n\nfunction me(e, n, t) {\n let o = parseDateTimeLike(d(e));\n if (!o || o.C) {\n throw new RangeError(failedParse(e));\n }\n return n ? o.calendar === l && (o = -271821 === o.isoYear && 4 === o.isoMonth ? {\n ...o,\n isoDay: 20,\n ...At\n } : {\n ...o,\n isoDay: 1,\n ...At\n }) : t && o.calendar === l && (o = {\n ...o,\n isoYear: Pl\n }), W(o.k ? finalizeDateTime(o) : finalizeDate(o));\n}\n\nfunction Xt(e, n) {\n const t = parseYearMonthOnly(d(n));\n if (t) {\n return requireIsoCalendar(t), createPlainYearMonthSlots(checkIsoYearMonthInBounds(checkIsoDateFields(t)));\n }\n const o = me(n, 1);\n return createPlainYearMonthSlots(Na(e(o.calendar), o));\n}\n\nfunction requireIsoCalendar(e) {\n if (e.calendar !== l) {\n throw new RangeError(invalidSubstring(e.calendar));\n }\n}\n\nfunction xt(e, n) {\n const t = parseMonthDayOnly(d(n));\n if (t) {\n return requireIsoCalendar(t), createPlainMonthDaySlots(checkIsoDateFields(t));\n }\n const o = me(n, 0, 1), {calendar: r} = o, i = e(r), [a, s, c] = i.u(o), [u, l] = i.m(a, s), [f, m] = i.R(u, l, c);\n return createPlainMonthDaySlots(To(i.U(f, m, c)), r);\n}\n\nfunction ht(e) {\n let n, t = (e => {\n const n = Tf.exec(e);\n return n ? (organizeAnnotationParts(n[10]), organizeTimeParts(n)) : void 0;\n })(d(e));\n if (!t) {\n if (t = parseDateTimeLike(e), !t) {\n throw new RangeError(failedParse(e));\n }\n if (!t.k) {\n throw new RangeError(failedParse(e));\n }\n if (t.C) {\n throw new RangeError(invalidSubstring(\"Z\"));\n }\n requireIsoCalendar(t);\n }\n if ((n = parseYearMonthOnly(e)) && isIsoDateFieldsValid(n)) {\n throw new RangeError(failedParse(e));\n }\n if ((n = parseMonthDayOnly(e)) && isIsoDateFieldsValid(n)) {\n throw new RangeError(failedParse(e));\n }\n return St(constrainIsoTimeFields(t, 1));\n}\n\nfunction R(e) {\n const n = (e => {\n const n = Nf.exec(e);\n return n ? (e => {\n function parseUnit(e, r, i) {\n let a = 0, s = 0;\n if (i && ([a, o] = divModFloor(o, Zu[i])), void 0 !== e) {\n if (t) {\n throw new RangeError(invalidSubstring(e));\n }\n s = (e => {\n const n = parseInt(e);\n if (!Number.isFinite(n)) {\n throw new RangeError(invalidSubstring(e));\n }\n return n;\n })(e), n = 1, r && (o = parseSubsecNano(r) * (Zu[i] / oo), t = 1);\n }\n return a + s;\n }\n let n = 0, t = 0, o = 0, r = {\n ...zipProps(O, [ parseUnit(e[2]), parseUnit(e[3]), parseUnit(e[4]), parseUnit(e[5]), parseUnit(e[6], e[7], 5), parseUnit(e[8], e[9], 4), parseUnit(e[10], e[11], 3) ]),\n ...nanoToGivenFields(o, 2, O)\n };\n if (!n) {\n throw new RangeError(noValidFields(O));\n }\n return parseSign(e[1]) < 0 && (r = negateDurationFields(r)), r;\n })(n) : void 0;\n })(d(e));\n if (!n) {\n throw new RangeError(failedParse(e));\n }\n return pe(checkDurationUnits(n));\n}\n\nfunction f(e) {\n const n = parseDateTimeLike(e) || parseYearMonthOnly(e) || parseMonthDayOnly(e);\n return n ? n.calendar : e;\n}\n\nfunction M(e) {\n const n = parseDateTimeLike(e);\n return n && (n.timeZone || n.C && nf || n.offset) || e;\n}\n\nfunction finalizeZonedDateTime(e, n, t = 0, o = 0) {\n const r = Z(e.timeZone), i = L(r);\n let a;\n return checkIsoDateTimeFields(e), a = e.k ? getMatchingInstantFor(i, e, n, t, o, !i.j, e.C) : getStartOfDayInstantFor(i, e), \n Xe(a, r, u(e.calendar));\n}\n\nfunction finalizeDateTime(e) {\n return resolveSlotsCalendar(Do(checkIsoDateTimeFields(e)));\n}\n\nfunction finalizeDate(e) {\n return resolveSlotsCalendar(To(checkIsoDateFields(e)));\n}\n\nfunction resolveSlotsCalendar(e) {\n return {\n ...e,\n calendar: u(e.calendar)\n };\n}\n\nfunction parseDateTimeLike(e) {\n const n = gf.exec(e);\n return n ? (e => {\n const n = e[10], t = \"Z\" === (n || \"\").toUpperCase();\n return {\n isoYear: organizeIsoYearParts(e),\n isoMonth: parseInt(e[4]),\n isoDay: parseInt(e[5]),\n ...organizeTimeParts(e.slice(5)),\n ...organizeAnnotationParts(e[16]),\n k: Boolean(e[6]),\n C: t,\n offset: t ? void 0 : n\n };\n })(n) : void 0;\n}\n\nfunction parseYearMonthOnly(e) {\n const n = If.exec(e);\n return n ? (e => ({\n isoYear: organizeIsoYearParts(e),\n isoMonth: parseInt(e[4]),\n isoDay: 1,\n ...organizeAnnotationParts(e[5])\n }))(n) : void 0;\n}\n\nfunction parseMonthDayOnly(e) {\n const n = Df.exec(e);\n return n ? (e => ({\n isoYear: Pl,\n isoMonth: parseInt(e[1]),\n isoDay: parseInt(e[2]),\n ...organizeAnnotationParts(e[3])\n }))(n) : void 0;\n}\n\nfunction parseOffsetNanoMaybe(e, n) {\n const t = Mf.exec(e);\n return t ? ((e, n) => {\n const t = e[4] || e[5];\n if (n && t) {\n throw new RangeError(invalidSubstring(t));\n }\n return (e => {\n if (Math.abs(e) >= go) {\n throw new RangeError(Iu);\n }\n return e;\n })((parseInt0(e[2]) * no + parseInt0(e[3]) * ao + parseInt0(e[4]) * oo + parseSubsecNano(e[5] || \"\")) * parseSign(e[1]));\n })(t, n) : void 0;\n}\n\nfunction organizeIsoYearParts(e) {\n const n = parseSign(e[1]), t = parseInt(e[2] || e[3]);\n if (n < 0 && !t) {\n throw new RangeError(invalidSubstring(-0));\n }\n return n * t;\n}\n\nfunction organizeTimeParts(e) {\n const n = parseInt0(e[3]);\n return {\n ...nanoToIsoTimeAndDay(parseSubsecNano(e[4] || \"\"))[0],\n isoHour: parseInt0(e[1]),\n isoMinute: parseInt0(e[2]),\n isoSecond: 60 === n ? 59 : n\n };\n}\n\nfunction organizeAnnotationParts(e) {\n let n, t;\n const o = [];\n if (e.replace(yf, ((e, r, i) => {\n const a = Boolean(r), [s, c] = i.split(\"=\").reverse();\n if (c) {\n if (\"u-ca\" === c) {\n o.push(s), n || (n = a);\n } else if (a || /[A-Z]/.test(c)) {\n throw new RangeError(invalidSubstring(e));\n }\n } else {\n if (t) {\n throw new RangeError(invalidSubstring(e));\n }\n t = s;\n }\n return \"\";\n })), o.length > 1 && n) {\n throw new RangeError(invalidSubstring(e));\n }\n return {\n timeZone: t,\n calendar: o[0] || l\n };\n}\n\nfunction parseSubsecNano(e) {\n return parseInt(e.padEnd(9, \"0\"));\n}\n\nfunction createRegExp(e) {\n return new RegExp(`^${e}$`, \"i\");\n}\n\nfunction parseSign(e) {\n return e && \"+\" !== e ? -1 : 1;\n}\n\nfunction parseInt0(e) {\n return void 0 === e ? 0 : parseInt(e);\n}\n\nfunction Me(e) {\n return Z(d(e));\n}\n\nfunction Z(e) {\n const n = getTimeZoneEssence(e);\n return \"number\" == typeof n ? Se(n) : n ? (e => {\n if (Ff.test(e)) {\n throw new RangeError(F(e));\n }\n if (Pf.test(e)) {\n throw new RangeError(hu);\n }\n return e.toLowerCase().split(\"/\").map(((e, n) => (e.length <= 3 || /\\d/.test(e)) && !/etc|yap/.test(e) ? e.toUpperCase() : e.replace(/baja|dumont|[a-z]+/g, ((e, t) => e.length <= 2 && !n || \"in\" === e || \"chat\" === e ? e.toUpperCase() : e.length > 2 || !t ? capitalize(e).replace(/island|noronha|murdo|rivadavia|urville/, capitalize) : e)))).join(\"/\");\n })(e) : nf;\n}\n\nfunction getTimeZoneAtomic(e) {\n const n = getTimeZoneEssence(e);\n return \"number\" == typeof n ? n : n ? n.resolvedOptions().timeZone : nf;\n}\n\nfunction getTimeZoneEssence(e) {\n const n = parseOffsetNanoMaybe(e = e.toUpperCase(), 1);\n return void 0 !== n ? n : e !== nf ? vf(e) : void 0;\n}\n\nfunction He(e, n) {\n return pa(e.epochNanoseconds, n.epochNanoseconds);\n}\n\nfunction Be(e, n) {\n return pa(e.epochNanoseconds, n.epochNanoseconds);\n}\n\nfunction H(e, n, t, o, r, i) {\n const a = e(normalizeOptions(i).relativeTo), s = Math.max(getMaxDurationUnit(o), getMaxDurationUnit(r));\n if (allPropsEqual(O, o, r)) {\n return 0;\n }\n if (isUniformUnit(s, a)) {\n return pa(durationFieldsToBigNano(o), durationFieldsToBigNano(r));\n }\n if (!a) {\n throw new RangeError(vu);\n }\n const [c, u, l] = createMarkerSystem(n, t, a), f = createMarkerToEpochNano(l), d = createMoveMarker(l);\n return pa(f(d(u, c, o)), f(d(u, c, r)));\n}\n\nfunction Yt(e, n) {\n return te(e, n) || Dt(e, n);\n}\n\nfunction te(e, n) {\n return compareNumbers(isoToEpochMilli(e), isoToEpochMilli(n));\n}\n\nfunction Dt(e, n) {\n return compareNumbers(isoTimeFieldsToNano(e), isoTimeFieldsToNano(n));\n}\n\nfunction Ve(e, n) {\n return !He(e, n);\n}\n\nfunction ve(e, n) {\n return !Be(e, n) && !!isTimeZoneIdsEqual(e.timeZone, n.timeZone) && e.calendar === n.calendar;\n}\n\nfunction vt(e, n) {\n return !Yt(e, n) && e.calendar === n.calendar;\n}\n\nfunction re(e, n) {\n return !te(e, n) && e.calendar === n.calendar;\n}\n\nfunction zt(e, n) {\n return !te(e, n) && e.calendar === n.calendar;\n}\n\nfunction Lt(e, n) {\n return !te(e, n) && e.calendar === n.calendar;\n}\n\nfunction st(e, n) {\n return !Dt(e, n);\n}\n\nfunction isTimeZoneIdsEqual(e, n) {\n if (e === n) {\n return 1;\n }\n try {\n return getTimeZoneAtomic(e) === getTimeZoneAtomic(n);\n } catch (e) {}\n}\n\nfunction Ee(e, n, t, o) {\n const r = refineDiffOptions(e, o, 3, 5), i = diffEpochNanos(n.epochNanoseconds, t.epochNanoseconds, ...r);\n return pe(e ? negateDurationFields(i) : i);\n}\n\nfunction we(e, n, t, o, r, i) {\n const a = ha(o.calendar, r.calendar), [s, c, u, l] = refineDiffOptions(t, i, 5), f = o.epochNanoseconds, d = r.epochNanoseconds, m = pa(d, f);\n let p;\n if (m) {\n if (s < 6) {\n p = diffEpochNanos(f, d, s, c, u, l);\n } else {\n const t = n(ga(o.timeZone, r.timeZone)), f = e(a);\n p = diffZonedEpochsBig(f, t, o, r, m, s, i), p = roundRelativeDuration(p, d, s, c, u, l, f, o, fa, gt(Fa, t));\n }\n } else {\n p = ll;\n }\n return pe(t ? negateDurationFields(p) : p);\n}\n\nfunction It(e, n, t, o, r) {\n const i = ha(t.calendar, o.calendar), [a, s, c, u] = refineDiffOptions(n, r, 6), l = ma(t), f = ma(o), d = pa(f, l);\n let m;\n if (d) {\n if (a <= 6) {\n m = diffEpochNanos(l, f, a, s, c, u);\n } else {\n const n = e(i);\n m = diffDateTimesBig(n, t, o, d, a, r), m = roundRelativeDuration(m, f, a, s, c, u, n, t, ma, ka);\n }\n } else {\n m = ll;\n }\n return pe(n ? negateDurationFields(m) : m);\n}\n\nfunction oe(e, n, t, o, r) {\n const i = ha(t.calendar, o.calendar);\n return diffDateLike(n, (() => e(i)), t, o, ...refineDiffOptions(n, r, 6, 9, 6));\n}\n\nfunction _t(e, n, t, o, r) {\n const i = ha(t.calendar, o.calendar), a = refineDiffOptions(n, r, 9, 9, 8), s = e(i), c = Na(s, t), u = Na(s, o);\n return c.isoYear === u.isoYear && c.isoMonth === u.isoMonth && c.isoDay === u.isoDay ? pe(ll) : diffDateLike(n, (() => s), To(c), To(u), ...a, 8);\n}\n\nfunction diffDateLike(e, n, t, o, r, i, a, s, c = 6) {\n const u = ma(t), l = ma(o);\n if (void 0 === u || void 0 === l) {\n throw new RangeError(Mu);\n }\n let f;\n if (pa(l, u)) {\n if (6 === r) {\n f = diffEpochNanos(u, l, r, i, a, s);\n } else {\n const e = n();\n f = e.h(t, o, r), i === c && 1 === a || (f = roundRelativeDuration(f, l, r, i, a, s, e, t, ma, moveDate));\n }\n } else {\n f = ll;\n }\n return pe(e ? negateDurationFields(f) : f);\n}\n\nfunction it(e, n, t, o) {\n const [r, i, a, s] = refineDiffOptions(e, o, 5, 5), c = Da(diffTimes(n, t), computeNanoInc(i, a), s), u = {\n ...ll,\n ...nanoToDurationTimeFields(c, r)\n };\n return pe(e ? negateDurationFields(u) : u);\n}\n\nfunction diffZonedEpochsExact(e, n, t, o, r, i) {\n const a = pa(o.epochNanoseconds, t.epochNanoseconds);\n return a ? r < 6 ? diffEpochNanosExact(t.epochNanoseconds, o.epochNanoseconds, r) : diffZonedEpochsBig(n, e, t, o, a, r, i) : ll;\n}\n\nfunction diffDateTimesExact(e, n, t, o, r) {\n const i = ma(n), a = ma(t), s = pa(a, i);\n return s ? o <= 6 ? diffEpochNanosExact(i, a, o) : diffDateTimesBig(e, n, t, s, o, r) : ll;\n}\n\nfunction diffZonedEpochsBig(e, n, t, o, r, i, a) {\n const [s, c, u] = Sa(n, t, o, r);\n var l, f;\n return {\n ...6 === i ? (l = s, f = c, {\n ...ll,\n days: td(l, f)\n }) : e.h(s, c, i, a),\n ...nanoToDurationTimeFields(u)\n };\n}\n\nfunction diffDateTimesBig(e, n, t, o, r, i) {\n const [a, s, c] = ((e, n, t) => {\n let o = n, r = diffTimes(e, n);\n return Math.sign(r) === -t && (o = Ua(n, -t), r += go * t), [ e, o, r ];\n })(n, t, o);\n return {\n ...e.h(a, s, r, i),\n ...nanoToDurationTimeFields(c)\n };\n}\n\nfunction Sa(e, n, t, o) {\n function updateMid() {\n return l = {\n ...Ua(a, c++ * -o),\n ...i\n }, f = $o(e, l), pa(s, f) === -o;\n }\n const r = he(n, e), i = nn(w, r), a = he(t, e), s = t.epochNanoseconds;\n let c = 0;\n const u = diffTimes(r, a);\n let l, f;\n if (Math.sign(u) === -o && c++, updateMid() && (-1 === o || updateMid())) {\n throw new RangeError(du);\n }\n const d = La(va(f, s));\n return [ r, l, d ];\n}\n\nfunction diffEpochNanos(e, n, t, o, r, i) {\n return {\n ...ll,\n ...nanoToDurationDayTimeFields(roundBigNano(va(e, n), o, r, i), t)\n };\n}\n\nfunction diffEpochNanosExact(e, n, t) {\n return {\n ...ll,\n ...nanoToDurationDayTimeFields(va(e, n), t)\n };\n}\n\nfunction td(e, n) {\n return diffEpochMilliByDay(isoToEpochMilli(e), isoToEpochMilli(n));\n}\n\nfunction diffEpochMilliByDay(e, n) {\n return Math.trunc((n - e) / Cu);\n}\n\nfunction diffTimes(e, n) {\n return isoTimeFieldsToNano(n) - isoTimeFieldsToNano(e);\n}\n\nfunction nativeDateUntil(e, n, t) {\n if (t <= 7) {\n let o = 0, r = td({\n ...e,\n ...At\n }, {\n ...n,\n ...At\n });\n return 7 === t && ([o, r] = divModTrunc(r, 7)), {\n ...ll,\n weeks: o,\n days: r\n };\n }\n const o = this.u(e), r = this.u(n);\n let [i, a, s] = ((e, n, t, o, r, i, a) => {\n let s = r - n, c = i - t, u = a - o;\n if (s || c) {\n const l = Math.sign(s || c);\n let f = e.B(r, i), d = 0;\n if (Math.sign(u) === -l) {\n const o = f;\n [r, i] = e.p(r, i, -l), s = r - n, c = i - t, f = e.B(r, i), d = l < 0 ? -o : f;\n }\n if (u = a - Math.min(o, f) + d, s) {\n const [o, a] = e.m(n, t), [u, f] = e.m(r, i);\n if (c = u - o || Number(f) - Number(a), Math.sign(c) === -l) {\n const t = l < 0 && -e.O(r);\n s = (r -= l) - n, c = i - monthCodeNumberToMonth(o, a, e.F(r)) + (t || e.O(r));\n }\n }\n }\n return [ s, c, u ];\n })(this, ...o, ...r);\n return 8 === t && (a += this.q(i, o[0]), i = 0), {\n ...ll,\n years: i,\n months: a,\n days: s\n };\n}\n\nfunction computeIsoMonthsInYearSpan(e) {\n return e * Fl;\n}\n\nfunction computeIntlMonthsInYearSpan(e, n) {\n const t = n + e, o = Math.sign(e), r = o < 0 ? -1 : 0;\n let i = 0;\n for (let e = n; e !== t; e += o) {\n i += computeIntlMonthsInYear.call(this, e + r);\n }\n return i;\n}\n\nfunction ha(e, n) {\n if (e !== n) {\n throw new RangeError(mu);\n }\n return e;\n}\n\nfunction ga(e, n) {\n if (!isTimeZoneIdsEqual(e, n)) {\n throw new RangeError(pu);\n }\n return e;\n}\n\nfunction computeNativeWeekOfYear(e) {\n return this.I(e)[0];\n}\n\nfunction computeNativeYearOfWeek(e) {\n return this.I(e)[1];\n}\n\nfunction computeNativeInLeapYear(e) {\n const [n] = this.u(e);\n return this.L(n);\n}\n\nfunction computeNativeMonthsInYear(e) {\n const [n] = this.u(e);\n return this.O(n);\n}\n\nfunction computeNativeDaysInMonth(e) {\n const [n, t] = this.u(e);\n return this.B(n, t);\n}\n\nfunction computeNativeDaysInYear(e) {\n const [n] = this.u(e);\n return this.G(n);\n}\n\nfunction computeNativeDayOfYear(e) {\n const [n] = this.u(e);\n return diffEpochMilliByDay(this.M(n), isoToEpochMilli(e)) + 1;\n}\n\nfunction parseMonthCode(e) {\n const n = Ef.exec(e);\n if (!n) {\n throw new RangeError(invalidMonthCode(e));\n }\n return [ parseInt(n[1]), Boolean(n[2]) ];\n}\n\nfunction sa(e, n) {\n return \"M\" + wu(e) + (n ? \"L\" : \"\");\n}\n\nfunction monthCodeNumberToMonth(e, n, t) {\n return e + (n || t && e >= t ? 1 : 0);\n}\n\nfunction monthToMonthCodeNumber(e, n) {\n return e - (n && e >= n ? 1 : 0);\n}\n\nfunction eraYearToYear(e, n) {\n return (n + e) * (Math.sign(n) || 1) || 0;\n}\n\nfunction getCalendarEraOrigins(e) {\n return nl[getCalendarIdBase(e)];\n}\n\nfunction getCalendarLeapMonthMeta(e) {\n return ol[getCalendarIdBase(e)];\n}\n\nfunction getCalendarIdBase(e) {\n return computeCalendarIdBase(e.id || l);\n}\n\nfunction createIntlCalendar(e) {\n function epochMilliToIntlFields(e) {\n return ((e, n) => ({\n ...parseIntlYear(e, n),\n V: e.month,\n day: parseInt(e.day)\n }))(hashIntlFormatParts(n, e), t);\n }\n const n = bf(e), t = computeCalendarIdBase(e);\n return {\n id: e,\n _: createIntlFieldCache(epochMilliToIntlFields),\n J: createIntlYearDataCache(epochMilliToIntlFields)\n };\n}\n\nfunction createIntlFieldCache(e) {\n return on((n => {\n const t = isoToEpochMilli(n);\n return e(t);\n }), WeakMap);\n}\n\nfunction createIntlYearDataCache(e) {\n const n = e(0).year - vl;\n return on((t => {\n let o, r = isoArgsToEpochMilli(t - n), i = 0;\n const a = [], s = [];\n do {\n r += 400 * Cu;\n } while ((o = e(r)).year <= t);\n do {\n if (r += (1 - o.day) * Cu, o.year === t && (a.push(r), s.push(o.V)), r -= Cu, ++i > 100 || r < -gl) {\n throw new RangeError(du);\n }\n } while ((o = e(r)).year >= t);\n return {\n K: a.reverse(),\n X: bu(s.reverse())\n };\n }));\n}\n\nfunction parseIntlYear(e, n) {\n let t, o, r = parseIntlPartsYear(e);\n if (e.era) {\n const i = nl[n], a = tl[n] || {};\n void 0 !== i && (t = \"islamic\" === n ? \"ah\" : e.era.normalize(\"NFD\").toLowerCase().replace(/[^a-z0-9]/g, \"\"), \n \"bc\" === t || \"b\" === t ? t = \"bce\" : \"ad\" === t || \"a\" === t ? t = \"ce\" : \"beforeroc\" === t && (t = \"broc\"), \n t = a[t] || t, o = r, r = eraYearToYear(o, i[t] || 0));\n }\n return {\n era: t,\n eraYear: o,\n year: r\n };\n}\n\nfunction parseIntlPartsYear(e) {\n return parseInt(e.relatedYear || e.year);\n}\n\nfunction computeIntlDay(e) {\n return this._(e).day;\n}\n\nfunction computeIntlDateParts(e) {\n const {year: n, V: t, day: o} = this._(e), {X: r} = this.J(n);\n return [ n, r[t] + 1, o ];\n}\n\nfunction computeIsoFieldsFromIntlParts(e, n, t) {\n return Pa(computeIntlEpochMilli.call(this, e, n, t));\n}\n\nfunction computeIntlEpochMilli(e, n = 1, t = 1) {\n return this.J(e).K[n - 1] + (t - 1) * Cu;\n}\n\nfunction computeIntlMonthCodeParts(e, n) {\n const t = computeIntlLeapMonth.call(this, e);\n return [ monthToMonthCodeNumber(n, t), t === n ];\n}\n\nfunction computeIntlLeapMonth(e) {\n const n = queryMonthStrings(this, e), t = queryMonthStrings(this, e - 1), o = n.length;\n if (o > t.length) {\n const e = getCalendarLeapMonthMeta(this);\n if (e < 0) {\n return -e;\n }\n for (let e = 0; e < o; e++) {\n if (n[e] !== t[e]) {\n return e + 1;\n }\n }\n }\n}\n\nfunction computeIntlInLeapYear(e) {\n const n = computeIntlDaysInYear.call(this, e);\n return n > computeIntlDaysInYear.call(this, e - 1) && n > computeIntlDaysInYear.call(this, e + 1);\n}\n\nfunction computeIntlDaysInYear(e) {\n return diffEpochMilliByDay(computeIntlEpochMilli.call(this, e), computeIntlEpochMilli.call(this, e + 1));\n}\n\nfunction computeIntlDaysInMonth(e, n) {\n const {K: t} = this.J(e);\n let o = n + 1, r = t;\n return o > t.length && (o = 1, r = this.J(e + 1).K), diffEpochMilliByDay(t[n - 1], r[o - 1]);\n}\n\nfunction computeIntlMonthsInYear(e) {\n return this.J(e).K.length;\n}\n\nfunction computeIntlEraParts(e) {\n const n = this._(e);\n return [ n.era, n.eraYear ];\n}\n\nfunction computeIntlYearMonthForMonthDay(e, n, t) {\n const o = this.id && \"chinese\" === computeCalendarIdBase(this.id) ? ((e, n, t) => {\n if (n) {\n switch (e) {\n case 1:\n return 1651;\n\n case 2:\n return t < 30 ? 1947 : 1765;\n\n case 3:\n return t < 30 ? 1966 : 1955;\n\n case 4:\n return t < 30 ? 1963 : 1944;\n\n case 5:\n return t < 30 ? 1971 : 1952;\n\n case 6:\n return t < 30 ? 1960 : 1941;\n\n case 7:\n return t < 30 ? 1968 : 1938;\n\n case 8:\n return t < 30 ? 1957 : 1718;\n\n case 9:\n return 1832;\n\n case 10:\n return 1870;\n\n case 11:\n return 1814;\n\n case 12:\n return 1890;\n }\n }\n return 1972;\n })(e, n, t) : Pl;\n let [r, i, a] = computeIntlDateParts.call(this, {\n isoYear: o,\n isoMonth: Fl,\n isoDay: 31\n });\n const s = computeIntlLeapMonth.call(this, r), c = i === s;\n 1 === (compareNumbers(e, monthToMonthCodeNumber(i, s)) || compareNumbers(Number(n), Number(c)) || compareNumbers(t, a)) && r--;\n for (let o = 0; o < 100; o++) {\n const i = r - o, a = computeIntlLeapMonth.call(this, i), s = monthCodeNumberToMonth(e, n, a);\n if (n === (s === a) && t <= computeIntlDaysInMonth.call(this, i, s)) {\n return [ i, s ];\n }\n }\n}\n\nfunction queryMonthStrings(e, n) {\n return Object.keys(e.J(n).X);\n}\n\nfunction Zt(e) {\n return u(d(e));\n}\n\nfunction u(e) {\n if ((e = e.toLowerCase()) !== l && e !== Xu) {\n const n = bf(e).resolvedOptions().calendar;\n if (computeCalendarIdBase(e) !== computeCalendarIdBase(n)) {\n throw new RangeError(c(e));\n }\n return n;\n }\n return e;\n}\n\nfunction computeCalendarIdBase(e) {\n return \"islamicc\" === e && (e = \"islamic\"), e.split(\"-\")[0];\n}\n\nfunction createNativeOpsCreator(e, n) {\n return t => t === l ? e : t === Xu || t === el ? Object.assign(Object.create(e), {\n id: t\n }) : Object.assign(Object.create(n), Of(t));\n}\n\nfunction z(e, n, t, o) {\n const r = refineCalendarFields(t, o, _u, [], ju);\n if (void 0 !== r.timeZone) {\n const o = t.ee(r), i = refineTimeBag(r), a = e(r.timeZone);\n return {\n epochNanoseconds: getMatchingInstantFor(n(a), {\n ...o,\n ...i\n }, void 0 !== r.offset ? parseOffsetNano(r.offset) : void 0),\n timeZone: a\n };\n }\n return {\n ...t.ee(r),\n ...At\n };\n}\n\nfunction Ae(e, n, t, o, r, i) {\n const a = refineCalendarFields(t, r, _u, Au, ju), s = e(a.timeZone), [c, u, l] = je(i), f = t.ee(a, fabricateOverflowOptions(c)), d = refineTimeBag(a, c);\n return Xe(getMatchingInstantFor(n(s), {\n ...f,\n ...d\n }, void 0 !== a.offset ? parseOffsetNano(a.offset) : void 0, u, l), s, o);\n}\n\nfunction Nt(e, n, t) {\n const o = refineCalendarFields(e, n, _u, [], p), r = dt(t);\n return jt(Do({\n ...e.ee(o, fabricateOverflowOptions(r)),\n ...refineTimeBag(o, r)\n }));\n}\n\nfunction de(e, n, t, o = []) {\n const r = refineCalendarFields(e, n, _u, o);\n return e.ee(r, t);\n}\n\nfunction Ut(e, n, t, o) {\n const r = refineCalendarFields(e, n, Gu, o);\n return e.ne(r, t);\n}\n\nfunction Rt(e, n, t, o) {\n const r = refineCalendarFields(e, t, _u, Hu);\n return n && void 0 !== r.month && void 0 === r.monthCode && void 0 === r.year && (r.year = Pl), \n e.te(r, o);\n}\n\nfunction Tt(e, n) {\n return St(refineTimeBag(refineFields(e, Ru, [], 1), dt(n)));\n}\n\nfunction q(e) {\n const n = refineFields(e, il);\n return pe(checkDurationUnits({\n ...ll,\n ...n\n }));\n}\n\nfunction refineCalendarFields(e, n, t, o = [], r = []) {\n return refineFields(n, [ ...e.fields(t), ...r ].sort(), o);\n}\n\nfunction refineFields(e, n, t, o = !t) {\n const r = {};\n let i, a = 0;\n for (const o of n) {\n if (o === i) {\n throw new RangeError(duplicateFields(o));\n }\n if (\"constructor\" === o || \"__proto__\" === o) {\n throw new RangeError(forbiddenField(o));\n }\n let n = e[o];\n if (void 0 !== n) {\n a = 1, Rm[o] && (n = Rm[o](n, o)), r[o] = n;\n } else if (t) {\n if (t.includes(o)) {\n throw new TypeError(missingField(o));\n }\n r[o] = Qu[o];\n }\n i = o;\n }\n if (o && !a) {\n throw new TypeError(noValidFields(n));\n }\n return r;\n}\n\nfunction refineTimeBag(e, n) {\n return constrainIsoTimeFields(zm({\n ...Qu,\n ...e\n }), n);\n}\n\nfunction De(e, n, t, o, r) {\n const {calendar: i, timeZone: a} = t, s = e(i), c = n(a), u = [ ...s.fields(_u), ...Uu ].sort(), l = (e => {\n const n = he(e, L), t = Se(n.offsetNanoseconds), o = ra(e.calendar), [r, i, a] = o.u(n), [s, c] = o.m(r, i), u = sa(s, c);\n return {\n ...Ga(n),\n year: r,\n monthCode: u,\n day: a,\n offset: t\n };\n })(t), f = refineFields(o, u), d = s.oe(l, f), m = {\n ...l,\n ...f\n }, [p, h, I] = je(r, 2);\n return Xe(getMatchingInstantFor(c, {\n ...s.ee(d, fabricateOverflowOptions(p)),\n ...constrainIsoTimeFields(zm(m), p)\n }, parseOffsetNano(m.offset), h, I), a, i);\n}\n\nfunction Pt(e, n, t, o) {\n const r = e(n.calendar), i = [ ...r.fields(_u), ...p ].sort(), a = {\n ...computeDateEssentials(s = n),\n hour: s.isoHour,\n minute: s.isoMinute,\n second: s.isoSecond,\n millisecond: s.isoMillisecond,\n microsecond: s.isoMicrosecond,\n nanosecond: s.isoNanosecond\n };\n var s;\n const c = refineFields(t, i), u = dt(o), l = r.oe(a, c), f = {\n ...a,\n ...c\n };\n return jt(Do({\n ...r.ee(l, fabricateOverflowOptions(u)),\n ...constrainIsoTimeFields(zm(f), u)\n }));\n}\n\nfunction ee(e, n, t, o) {\n const r = e(n.calendar), i = r.fields(_u).sort(), a = computeDateEssentials(n), s = refineFields(t, i), c = r.oe(a, s);\n return r.ee(c, o);\n}\n\nfunction Wt(e, n, t, o) {\n const r = e(n.calendar), i = r.fields(Gu).sort(), a = (e => {\n const n = ra(e.calendar), [t, o] = n.u(e), [r, i] = n.m(t, o);\n return {\n year: t,\n monthCode: sa(r, i)\n };\n })(n), s = refineFields(t, i), c = r.oe(a, s);\n return r.ne(c, o);\n}\n\nfunction Et(e, n, t, o) {\n const r = e(n.calendar), i = r.fields(_u).sort(), a = (e => {\n const n = ra(e.calendar), [t, o, r] = n.u(e), [i, a] = n.m(t, o);\n return {\n monthCode: sa(i, a),\n day: r\n };\n })(n), s = refineFields(t, i), c = r.oe(a, s);\n return r.te(c, o);\n}\n\nfunction rt(e, n, t) {\n return St(((e, n, t) => refineTimeBag({\n ...nn(Ru, e),\n ...refineFields(n, Ru)\n }, dt(t)))(e, n, t));\n}\n\nfunction N(e, n) {\n return pe((t = e, o = n, checkDurationUnits({\n ...t,\n ...refineFields(o, il)\n })));\n var t, o;\n}\n\nfunction convertToPlainMonthDay(e, n) {\n const t = refineCalendarFields(e, n, Ku);\n return e.te(t);\n}\n\nfunction convertToPlainYearMonth(e, n, t) {\n const o = refineCalendarFields(e, n, Vu);\n return e.ne(o, t);\n}\n\nfunction convertToIso(e, n, t, o, r) {\n n = nn(t = e.fields(t), n), o = refineFields(o, r = e.fields(r), []);\n let i = e.oe(n, o);\n return i = refineFields(i, [ ...t, ...r ].sort(), []), e.ee(i);\n}\n\nfunction nativeDateFromFields(e, n) {\n const t = dt(n), o = refineYear(this, e), r = refineMonth(this, e, o, t), i = refineDay(this, e, r, o, t);\n return W(To(this.U(o, r, i)), this.id || l);\n}\n\nfunction nativeYearMonthFromFields(e, n) {\n const t = dt(n), o = refineYear(this, e), r = refineMonth(this, e, o, t);\n return createPlainYearMonthSlots(checkIsoYearMonthInBounds(this.U(o, r, 1)), this.id || l);\n}\n\nfunction nativeMonthDayFromFields(e, n) {\n const t = dt(n);\n let o, r, i, a = void 0 !== e.eraYear || void 0 !== e.year ? refineYear(this, e) : void 0;\n const s = !this.id;\n if (void 0 === a && s && (a = Pl), void 0 !== a) {\n const n = refineMonth(this, e, a, t);\n o = refineDay(this, e, n, a, t);\n const s = this.F(a);\n r = monthToMonthCodeNumber(n, s), i = n === s;\n } else {\n if (void 0 === e.monthCode) {\n throw new TypeError(lu);\n }\n if ([r, i] = parseMonthCode(e.monthCode), this.id && this.id !== Xu && this.id !== el) {\n if (this.id && \"coptic\" === computeCalendarIdBase(this.id) && 0 === t) {\n const n = i || 13 !== r ? 30 : 6;\n o = e.day, o = clampNumber(o, 1, n);\n } else if (this.id && \"chinese\" === computeCalendarIdBase(this.id) && 0 === t) {\n const n = !i || 1 !== r && 9 !== r && 10 !== r && 11 !== r && 12 !== r ? 30 : 29;\n o = e.day, o = clampNumber(o, 1, n);\n } else {\n o = e.day;\n }\n } else {\n o = refineDay(this, e, refineMonth(this, e, Pl, t), Pl, t);\n }\n }\n const c = this.R(r, i, o);\n if (!c) {\n throw new RangeError(\"Cannot guess year\");\n }\n const [u, f] = c;\n return createPlainMonthDaySlots(To(this.U(u, f, o)), this.id || l);\n}\n\nfunction nativeFieldsMethod(e) {\n return getCalendarEraOrigins(this) && e.includes(\"year\") ? [ ...e, ...qu ] : e;\n}\n\nfunction nativeMergeFields(e, n) {\n const t = Object.assign(Object.create(null), e);\n return spliceFields(t, n, $u), getCalendarEraOrigins(this) && (spliceFields(t, n, Lu), \n this.id === el && spliceFields(t, n, Ju, qu)), t;\n}\n\nfunction refineYear(e, n) {\n const t = getCalendarEraOrigins(e), o = tl[e.id || \"\"] || {};\n let {era: r, eraYear: i, year: a} = n;\n if (void 0 !== r || void 0 !== i) {\n if (void 0 === r || void 0 === i) {\n throw new TypeError(su);\n }\n if (!t) {\n throw new RangeError(iu);\n }\n const e = t[o[r] || r];\n if (void 0 === e) {\n throw new RangeError(invalidEra(r));\n }\n const n = eraYearToYear(i, e);\n if (void 0 !== a && a !== n) {\n throw new RangeError(cu);\n }\n a = n;\n } else if (void 0 === a) {\n throw new TypeError(missingYear(t));\n }\n return a;\n}\n\nfunction refineMonth(e, n, t, o) {\n let {month: r, monthCode: i} = n;\n if (void 0 !== i) {\n const n = ((e, n, t, o) => {\n const r = e.F(t), [i, a] = parseMonthCode(n);\n let s = monthCodeNumberToMonth(i, a, r);\n if (a) {\n const n = getCalendarLeapMonthMeta(e);\n if (void 0 === n) {\n throw new RangeError(fu);\n }\n if (n > 0) {\n if (s > n) {\n throw new RangeError(fu);\n }\n if (void 0 === r) {\n if (1 === o) {\n throw new RangeError(fu);\n }\n s--;\n }\n } else {\n if (s !== -n) {\n throw new RangeError(fu);\n }\n if (void 0 === r && 1 === o) {\n throw new RangeError(fu);\n }\n }\n }\n return s;\n })(e, i, t, o);\n if (void 0 !== r && r !== n) {\n throw new RangeError(uu);\n }\n r = n, o = 1;\n } else if (void 0 === r) {\n throw new TypeError(lu);\n }\n return ba(\"month\", r, 1, e.O(t), o);\n}\n\nfunction refineDay(e, n, t, o, r) {\n return clampProp(n, \"day\", 1, e.B(o, t), r);\n}\n\nfunction spliceFields(e, n, t, o) {\n let r = 0;\n const i = [];\n for (const e of t) {\n void 0 !== n[e] ? r = 1 : i.push(e);\n }\n if (Object.assign(e, n), r) {\n for (const n of o || i) {\n delete e[n];\n }\n }\n}\n\nfunction computeDateEssentials(e) {\n const n = ra(e.calendar), [t, o, r] = n.u(e), [i, a] = n.m(t, o);\n return {\n year: t,\n monthCode: sa(i, a),\n day: r\n };\n}\n\nfunction qe(e) {\n return xe(io(bigIntToBigNano(toBigInt(e))));\n}\n\nfunction ye(e, n, t, o, r = l) {\n return Xe(io(bigIntToBigNano(toBigInt(t))), n(o), e(r));\n}\n\nfunction Mt(n, t, o, r, i = 0, a = 0, s = 0, c = 0, u = 0, f = 0, d = l) {\n return jt(Do(checkIsoDateTimeFields(e(Za, zipProps(pl, [ t, o, r, i, a, s, c, u, f ])))), n(d));\n}\n\nfunction ue(n, t, o, r, i = l) {\n return W(To(checkIsoDateFields(e(Za, {\n isoYear: t,\n isoMonth: o,\n isoDay: r\n }))), n(i));\n}\n\nfunction Kt(e, n, t, o = l, r = 1) {\n const i = Za(n), a = Za(t), s = e(o);\n return createPlainYearMonthSlots(checkIsoYearMonthInBounds(checkIsoDateFields({\n isoYear: i,\n isoMonth: a,\n isoDay: Za(r)\n })), s);\n}\n\nfunction kt(e, n, t, o = l, r = Pl) {\n const i = Za(n), a = Za(t), s = e(o);\n return createPlainMonthDaySlots(To(checkIsoDateFields({\n isoYear: Za(r),\n isoMonth: i,\n isoDay: a\n })), s);\n}\n\nfunction ut(n = 0, t = 0, o = 0, r = 0, i = 0, a = 0) {\n return St(constrainIsoTimeFields(e(Za, zipProps(w, [ n, t, o, r, i, a ])), 1));\n}\n\nfunction j(n = 0, t = 0, o = 0, r = 0, i = 0, a = 0, s = 0, c = 0, u = 0, l = 0) {\n return pe(checkDurationUnits(e(Ba, zipProps(O, [ n, t, o, r, i, a, s, c, u, l ]))));\n}\n\nfunction Je(e, n, t = l) {\n return Xe(e.epochNanoseconds, n, t);\n}\n\nfunction Ce(e) {\n return xe(e.epochNanoseconds);\n}\n\nfunction yt(e, n) {\n return jt(he(n, e));\n}\n\nfunction fe(e, n) {\n return W(he(n, e));\n}\n\nfunction mt(e, n) {\n return St(he(n, e));\n}\n\nfunction Ct(e, n, t, o) {\n const r = ((e, n, t, o) => {\n const r = (e => Vl(normalizeOptions(e)))(o);\n return $o(e(n), t, r);\n })(e, t, n, o);\n return Xe(io(r), t, n.calendar);\n}\n\nfunction ae(e, n, t, o, r) {\n const i = e(r.timeZone), a = r.plainTime, s = void 0 !== a ? n(a) : void 0, c = t(i);\n let u;\n return u = s ? $o(c, {\n ...o,\n ...s\n }) : getStartOfDayInstantFor(c, {\n ...o,\n ...At\n }), Xe(u, i, o.calendar);\n}\n\nfunction ie(e, n = At) {\n return jt(Do({\n ...e,\n ...n\n }));\n}\n\nfunction le(e, n, t) {\n return convertToPlainYearMonth(e(n.calendar), t);\n}\n\nfunction se(e, n, t) {\n return convertToPlainMonthDay(e(n.calendar), t);\n}\n\nfunction $t(e, n, t, o) {\n return ((e, n, t) => convertToIso(e, n, Vu, oa(t), Hu))(e(n.calendar), t, o);\n}\n\nfunction Vt(e, n, t, o) {\n return ((e, n, t) => convertToIso(e, n, Ku, oa(t), Wu))(e(n.calendar), t, o);\n}\n\nfunction ze(e) {\n return xe(io(Ge(Ba(e), Ke)));\n}\n\nfunction $e(e) {\n return xe(io(bigIntToBigNano(toBigInt(e))));\n}\n\nfunction createOptionsTransformer(e, n, t) {\n const o = new Set(t);\n return (r, i) => {\n const a = t && hasAnyPropsByName(r, t);\n if (!hasAnyPropsByName(r = ((e, n) => {\n const t = {};\n for (const o in n) {\n e.has(o) || (t[o] = n[o]);\n }\n return t;\n })(o, r), e)) {\n if (i && a) {\n throw new TypeError(\"Invalid formatting options\");\n }\n r = {\n ...n,\n ...r\n };\n }\n return t && (r.timeZone = nf, [ \"full\", \"long\" ].includes(r.ie) && (r.ie = \"medium\")), \n r;\n };\n}\n\nfunction K(e, n = an, t = 0) {\n const [o, , , r] = e;\n return (i, a = mp, ...s) => {\n const c = n(r && r(...s), i, a, o, t), u = c.resolvedOptions();\n return [ c, ...toEpochMillis(e, u, s) ];\n };\n}\n\nfunction an(e, n, t, o, r) {\n if (t = o(t, r), e) {\n if (void 0 !== t.timeZone) {\n throw new TypeError(Ou);\n }\n t.timeZone = e;\n }\n return new en(n, t);\n}\n\nfunction computeNonBuggyIsoResolve() {\n return new en(void 0, {\n calendar: l\n }).resolvedOptions().calendar === l;\n}\n\nfunction toEpochMillis(e, n, t) {\n const [, o, r] = e;\n return t.map((e => (e.calendar && ((e, n, t) => {\n if ((t || e !== l) && e !== n) {\n throw new RangeError(mu);\n }\n })(e.calendar, n.calendar, r), o(e, n))));\n}\n\nfunction Pe(e, n, t) {\n const o = n.timeZone, r = e(o), i = {\n ...he(n, r),\n ...t || At\n };\n let a;\n return a = t ? getMatchingInstantFor(r, i, i.offsetNanoseconds, 2) : getStartOfDayInstantFor(r, i), \n Xe(a, o, n.calendar);\n}\n\nfunction pt(e, n = At) {\n return jt(Do({\n ...e,\n ...n\n }));\n}\n\nfunction Ot(e, n) {\n return {\n ...e,\n calendar: n\n };\n}\n\nfunction ge(e, n) {\n return {\n ...e,\n timeZone: n\n };\n}\n\nfunction tn(e) {\n const n = Ue();\n return So(n, e.N(n));\n}\n\nfunction Ue() {\n return Ge(Date.now(), Ke);\n}\n\nfunction Qe() {\n return (new en).resolvedOptions().timeZone;\n}\n\nconst expectedInteger = (e, n) => `Non-integer ${e}: ${n}`, expectedPositive = (e, n) => `Non-positive ${e}: ${n}`, expectedFinite = (e, n) => `Non-finite ${e}: ${n}`, forbiddenBigIntToNumber = e => `Cannot convert bigint to ${e}`, invalidBigInt = e => `Invalid bigint: ${e}`, ou = \"Cannot convert Symbol to string\", ru = \"Invalid object\", numberOutOfRange = (e, n, t, o, r) => r ? numberOutOfRange(e, r[n], r[t], r[o]) : invalidEntity(e, n) + `; must be between ${t}-${o}`, invalidEntity = (e, n) => `Invalid ${e}: ${n}`, missingField = e => `Missing ${e}`, forbiddenField = e => `Invalid field ${e}`, duplicateFields = e => `Duplicate field ${e}`, noValidFields = e => \"No valid fields: \" + e.join(), i = \"Invalid bag\", invalidChoice = (e, n, t) => invalidEntity(e, n) + \"; must be \" + Object.keys(t).join(), C = \"Cannot use valueOf\", a = \"Invalid calling context\", iu = \"Forbidden era/eraYear\", su = \"Mismatching era/eraYear\", cu = \"Mismatching year/eraYear\", invalidEra = e => `Invalid era: ${e}`, missingYear = e => \"Missing year\" + (e ? \"/era/eraYear\" : \"\"), invalidMonthCode = e => `Invalid monthCode: ${e}`, uu = \"Mismatching month/monthCode\", lu = \"Missing month/monthCode\", fu = \"Invalid leap month\", du = \"Invalid protocol results\", c = e => invalidEntity(\"Calendar\", e), mu = \"Mismatching Calendars\", F = e => invalidEntity(\"TimeZone\", e), pu = \"Mismatching TimeZones\", hu = \"Forbidden ICU TimeZone\", Iu = \"Out-of-bounds offset\", Du = \"Out-of-bounds TimeZone gap\", gu = \"Invalid TimeZone offset\", Tu = \"Ambiguous offset\", Mu = \"Out-of-bounds date\", yu = \"Out-of-bounds duration\", Nu = \"Cannot mix duration signs\", vu = \"Missing relativeTo\", Pu = \"Cannot use large units\", Fu = \"Required smallestUnit or largestUnit\", Eu = \"smallestUnit > largestUnit\", failedParse = e => `Cannot parse: ${e}`, invalidSubstring = e => `Invalid substring: ${e}`, rn = e => `Cannot format ${e}`, ln = \"Mismatching types for formatting\", Ou = \"Cannot specify TimeZone\", bu = /*@__PURE__*/ gt(P, ((e, n) => n)), Su = /*@__PURE__*/ gt(P, ((e, n, t) => t)), wu = /*@__PURE__*/ gt(padNumber, 2), Bu = {\n nanosecond: 0,\n microsecond: 1,\n millisecond: 2,\n second: 3,\n minute: 4,\n hour: 5,\n day: 6,\n week: 7,\n month: 8,\n year: 9\n}, Yu = /*@__PURE__*/ Object.keys(Bu), Cu = 864e5, ku = 1e3, ro = 1e3, Ke = 1e6, oo = 1e9, ao = 6e10, no = 36e11, go = 864e11, Zu = [ 1, ro, Ke, oo, ao, no, go ], p = /*@__PURE__*/ Yu.slice(0, 6), Ru = /*@__PURE__*/ sortStrings(p), zu = [ \"offset\" ], Au = [ \"timeZone\" ], Uu = /*@__PURE__*/ p.concat(zu), ju = /*@__PURE__*/ Uu.concat(Au), qu = [ \"era\", \"eraYear\" ], Lu = /*@__PURE__*/ qu.concat([ \"year\" ]), Wu = [ \"year\" ], xu = [ \"monthCode\" ], $u = /*@__PURE__*/ [ \"month\" ].concat(xu), Hu = [ \"day\" ], Gu = /*@__PURE__*/ $u.concat(Wu), Vu = /*@__PURE__*/ xu.concat(Wu), _u = /*@__PURE__*/ Hu.concat(Gu), Ju = /*@__PURE__*/ Hu.concat($u), Ku = /*@__PURE__*/ Hu.concat(xu), Qu = /*@__PURE__*/ Su(p, 0), l = \"iso8601\", Xu = \"gregory\", el = \"japanese\", nl = {\n [Xu]: {\n \"gregory-inverse\": -1,\n gregory: 0\n },\n [el]: {\n \"japanese-inverse\": -1,\n japanese: 0,\n meiji: 1867,\n taisho: 1911,\n showa: 1925,\n heisei: 1988,\n reiwa: 2018\n },\n ethiopic: {\n ethioaa: 0,\n ethiopic: 5500\n },\n coptic: {\n \"coptic-inverse\": -1,\n coptic: 0\n },\n roc: {\n \"roc-inverse\": -1,\n roc: 0\n },\n buddhist: {\n be: 0\n },\n islamic: {\n ah: 0\n },\n indian: {\n saka: 0\n },\n persian: {\n ap: 0\n }\n}, tl = {\n [Xu]: {\n bce: \"gregory-inverse\",\n ce: \"gregory\"\n },\n [el]: {\n bce: \"japanese-inverse\",\n ce: \"japanese\"\n },\n ethiopic: {\n era0: \"ethioaa\",\n era1: \"ethiopic\"\n },\n coptic: {\n era0: \"coptic-inverse\",\n era1: \"coptic\"\n },\n roc: {\n broc: \"roc-inverse\",\n minguo: \"roc\"\n }\n}, ol = {\n chinese: 13,\n dangi: 13,\n hebrew: -6\n}, d = /*@__PURE__*/ gt(requireType, \"string\"), D = /*@__PURE__*/ gt(requireType, \"boolean\"), rl = /*@__PURE__*/ gt(requireType, \"number\"), O = /*@__PURE__*/ Yu.map((e => e + \"s\")), il = /*@__PURE__*/ sortStrings(O), al = /*@__PURE__*/ O.slice(0, 6), sl = /*@__PURE__*/ O.slice(6), cl = /*@__PURE__*/ sl.slice(1), ul = /*@__PURE__*/ bu(O), ll = /*@__PURE__*/ Su(O, 0), fl = /*@__PURE__*/ Su(al, 0), dl = /*@__PURE__*/ gt(zeroOutProps, O), w = [ \"isoNanosecond\", \"isoMicrosecond\", \"isoMillisecond\", \"isoSecond\", \"isoMinute\", \"isoHour\" ], ml = [ \"isoDay\", \"isoMonth\", \"isoYear\" ], pl = /*@__PURE__*/ w.concat(ml), Ca = /*@__PURE__*/ sortStrings(ml), hl = /*@__PURE__*/ sortStrings(w), Il = /*@__PURE__*/ sortStrings(pl), At = /*@__PURE__*/ Su(hl, 0), Ra = /*@__PURE__*/ gt(zeroOutProps, pl), Dl = 1e8, gl = Dl * Cu, Tl = [ Dl, 0 ], Ml = [ -Dl, 0 ], yl = 275760, Nl = -271821, en = Intl.DateTimeFormat, vl = 1970, Pl = 1972, Fl = 12, El = /*@__PURE__*/ isoArgsToEpochMilli(1868, 9, 8), Ol = /*@__PURE__*/ on(computeJapaneseEraParts, WeakMap), bl = \"smallestUnit\", Sl = \"unit\", wl = \"roundingMode\", Bl = \"roundingIncrement\", Yl = \"fractionalSecondDigits\", Cl = \"relativeTo\", kl = \"direction\", Zl = {\n constrain: 0,\n reject: 1\n}, Rl = /*@__PURE__*/ Object.keys(Zl), zl = {\n compatible: 0,\n reject: 1,\n earlier: 2,\n later: 3\n}, Al = {\n reject: 0,\n use: 1,\n prefer: 2,\n ignore: 3\n}, Ul = {\n auto: 0,\n never: 1,\n critical: 2,\n always: 3\n}, jl = {\n auto: 0,\n never: 1,\n critical: 2\n}, ql = {\n auto: 0,\n never: 1\n}, Ll = {\n floor: 0,\n halfFloor: 1,\n ceil: 2,\n halfCeil: 3,\n trunc: 4,\n halfTrunc: 5,\n expand: 6,\n halfExpand: 7,\n halfEven: 8\n}, Wl = {\n previous: -1,\n next: 1\n}, xl = /*@__PURE__*/ gt(refineUnitOption, bl), $l = /*@__PURE__*/ gt(refineUnitOption, \"largestUnit\"), Hl = /*@__PURE__*/ gt(refineUnitOption, Sl), Gl = /*@__PURE__*/ gt(refineChoiceOption, \"overflow\", Zl), Vl = /*@__PURE__*/ gt(refineChoiceOption, \"disambiguation\", zl), _l = /*@__PURE__*/ gt(refineChoiceOption, \"offset\", Al), Jl = /*@__PURE__*/ gt(refineChoiceOption, \"calendarName\", Ul), Kl = /*@__PURE__*/ gt(refineChoiceOption, \"timeZoneName\", jl), Ql = /*@__PURE__*/ gt(refineChoiceOption, \"offset\", ql), Xl = /*@__PURE__*/ gt(refineChoiceOption, wl, Ll), Qt = \"PlainYearMonth\", qt = \"PlainMonthDay\", G = \"PlainDate\", x = \"PlainDateTime\", ft = \"PlainTime\", _ = \"ZonedDateTime\", Re = \"Instant\", A = \"Duration\", ef = [ Math.floor, e => hasHalf(e) ? Math.floor(e) : Math.round(e), Math.ceil, e => hasHalf(e) ? Math.ceil(e) : Math.round(e), Math.trunc, e => hasHalf(e) ? Math.trunc(e) || 0 : Math.round(e), e => e < 0 ? Math.floor(e) : Math.ceil(e), e => Math.sign(e) * Math.round(Math.abs(e)) || 0, e => hasHalf(e) ? (e = Math.trunc(e) || 0) + e % 2 : Math.round(e) ], nf = \"UTC\", tf = 5184e3, of = /*@__PURE__*/ isoArgsToEpochSec(1847), rf = /*@__PURE__*/ isoArgsToEpochSec((() => {\n const e = new Date;\n return (0 === e.getTime() ? 2040 : e.getUTCFullYear()) + 10;\n})()), af = /0+$/, he = /*@__PURE__*/ on(_zonedEpochSlotsToIso, WeakMap), sf = 2 ** 32 - 1, L = /*@__PURE__*/ on((e => {\n const n = getTimeZoneEssence(e);\n return \"object\" == typeof n ? new IntlTimeZone(n) : new FixedTimeZone(n || 0);\n}));\n\nclass FixedTimeZone {\n constructor(e) {\n this.j = e;\n }\n N() {\n return this.j;\n }\n v(e) {\n return (e => {\n const n = ma({\n ...e,\n ...At\n });\n if (!n || Math.abs(n[0]) > 1e8) {\n throw new RangeError(Mu);\n }\n })(e), [ isoToEpochNanoWithOffset(e, this.j) ];\n }\n l() {}\n}\n\nclass IntlTimeZone {\n constructor(e) {\n this.ae = (e => {\n function getOffsetSec(e) {\n const i = clampNumber(e, o, r), [a, s] = computePeriod(i), c = n(a), u = n(s);\n return c === u ? c : pinch(t(a, s), c, u, e);\n }\n function pinch(n, t, o, r) {\n let i, a;\n for (;(void 0 === r || void 0 === (i = r < n[0] ? t : r >= n[1] ? o : void 0)) && (a = n[1] - n[0]); ) {\n const t = n[0] + Math.floor(a / 2);\n e(t) === o ? n[1] = t : n[0] = t + 1;\n }\n return i;\n }\n const n = on(e), t = on(createSplitTuple);\n let o = of, r = rf;\n return {\n se(e) {\n const n = getOffsetSec(e - 86400), t = getOffsetSec(e + 86400), o = e - n, r = e - t;\n if (n === t) {\n return [ o ];\n }\n const i = getOffsetSec(o);\n return i === getOffsetSec(r) ? [ e - i ] : n > t ? [ o, r ] : [];\n },\n ue: getOffsetSec,\n l(e, i) {\n const a = clampNumber(e, o, r);\n let [s, c] = computePeriod(a);\n const u = tf * i, l = i < 0 ? () => c > o || (o = a, 0) : () => s < r || (r = a, \n 0);\n for (;l(); ) {\n const o = n(s), r = n(c);\n if (o !== r) {\n const n = t(s, c);\n pinch(n, o, r);\n const a = n[0];\n if ((compareNumbers(a, e) || 1) === i) {\n return a;\n }\n }\n s += u, c += u;\n }\n }\n };\n })((e => n => {\n const t = hashIntlFormatParts(e, n * ku);\n return isoArgsToEpochSec(parseIntlPartsYear(t), parseInt(t.month), parseInt(t.day), parseInt(t.hour), parseInt(t.minute), parseInt(t.second)) - n;\n })(e));\n }\n N(e) {\n return this.ae.ue(epochNanoToSec(e)) * oo;\n }\n v(e) {\n const [n, t] = [ isoArgsToEpochSec((o = e).isoYear, o.isoMonth, o.isoDay, o.isoHour, o.isoMinute, o.isoSecond), o.isoMillisecond * Ke + o.isoMicrosecond * ro + o.isoNanosecond ];\n var o;\n return this.ae.se(n).map((e => io(Ta(Ge(e, oo), t))));\n }\n l(e, n) {\n const [t, o] = epochNanoToSecMod(e), r = this.ae.l(t + (n > 0 || o ? 1 : 0), n);\n if (void 0 !== r) {\n return Ge(r, oo);\n }\n }\n}\n\nconst cf = \"([+-])\", uf = \"(?:[.,](\\\\d{1,9}))?\", lf = `(?:(?:${cf}(\\\\d{6}))|(\\\\d{4}))-?(\\\\d{2})`, ff = \"(\\\\d{2})(?::?(\\\\d{2})(?::?(\\\\d{2})\" + uf + \")?)?\", df = cf + ff, mf = lf + \"-?(\\\\d{2})(?:[T ]\" + ff + \"(Z|\" + df + \")?)?\", pf = \"\\\\[(!?)([^\\\\]]*)\\\\]\", hf = `((?:${pf}){0,9})`, If = /*@__PURE__*/ createRegExp(lf + hf), Df = /*@__PURE__*/ createRegExp(\"(?:--)?(\\\\d{2})-?(\\\\d{2})\" + hf), gf = /*@__PURE__*/ createRegExp(mf + hf), Tf = /*@__PURE__*/ createRegExp(\"T?\" + ff + \"(?:\" + df + \")?\" + hf), Mf = /*@__PURE__*/ createRegExp(df), yf = /*@__PURE__*/ new RegExp(pf, \"g\"), Nf = /*@__PURE__*/ createRegExp(`${cf}?P(\\\\d+Y)?(\\\\d+M)?(\\\\d+W)?(\\\\d+D)?(?:T(?:(\\\\d+)${uf}H)?(?:(\\\\d+)${uf}M)?(?:(\\\\d+)${uf}S)?)?`), vf = /*@__PURE__*/ on((e => new en(\"en\", {\n calendar: l,\n timeZone: e,\n era: \"short\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n hour12: 0\n}))), Pf = /^(AC|AE|AG|AR|AS|BE|BS|CA|CN|CS|CT|EA|EC|IE|IS|JS|MI|NE|NS|PL|PN|PR|PS|SS|VS)T$/, Ff = /[^\\w\\/:+-]+/, Ef = /^M(\\d{2})(L?)$/, Of = /*@__PURE__*/ on(createIntlCalendar), bf = /*@__PURE__*/ on((e => new en(\"en\", {\n calendar: e,\n timeZone: nf,\n era: \"short\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour12: 0\n}))), kf = {\n P: nativeDateAdd,\n h: nativeDateUntil,\n ee: nativeDateFromFields,\n ne: nativeYearMonthFromFields,\n te: nativeMonthDayFromFields,\n fields: nativeFieldsMethod,\n oe: nativeMergeFields,\n inLeapYear: computeNativeInLeapYear,\n monthsInYear: computeNativeMonthsInYear,\n daysInMonth: computeNativeDaysInMonth,\n daysInYear: computeNativeDaysInYear,\n dayOfYear: computeNativeDayOfYear,\n era(e) {\n return this.$(e)[0];\n },\n eraYear(e) {\n return this.$(e)[1];\n },\n monthCode(e) {\n const [n, t] = this.u(e), [o, r] = this.m(n, t);\n return sa(o, r);\n },\n dayOfWeek: Ha,\n daysInWeek: fo\n}, Kf = {\n u: computeIsoDateParts,\n $: computeIsoEraParts,\n m: computeIsoMonthCodeParts\n}, tm = {\n dayOfYear: computeNativeDayOfYear,\n u: computeIsoDateParts,\n M: isoArgsToEpochMilli\n}, om = /*@__PURE__*/ Object.assign({}, tm, {\n weekOfYear: computeNativeWeekOfYear,\n yearOfWeek: computeNativeYearOfWeek,\n I(e) {\n function computeWeekShift(e) {\n return (7 - e < n ? 7 : 0) - e;\n }\n function computeWeeksInYear(e) {\n const n = computeIsoDaysInYear(l + e), t = e || 1, o = computeWeekShift(modFloor(a + n * t, 7));\n return c = (n + (o - s) * t) / 7;\n }\n const n = this.id ? 1 : 4, t = Ha(e), o = this.dayOfYear(e), r = modFloor(t - 1, 7), i = o - 1, a = modFloor(r - i, 7), s = computeWeekShift(a);\n let c, u = Math.floor((i - s) / 7) + 1, l = e.isoYear;\n return u ? u > computeWeeksInYear(0) && (u = 1, l++) : (u = computeWeeksInYear(-1), \n l--), [ u, l, c ];\n }\n}), im = /*@__PURE__*/ Object.assign({}, kf, om, {\n u: computeIsoDateParts,\n $: computeIsoEraParts,\n m: computeIsoMonthCodeParts,\n R: computeIsoYearMonthForMonthDay,\n L: computeIsoInLeapYear,\n F: noop,\n O: computeIsoMonthsInYear,\n q: computeIsoMonthsInYearSpan,\n B: computeIsoDaysInMonth,\n G: computeIsoDaysInYear,\n U: computeIsoFieldsFromParts,\n M: isoArgsToEpochMilli,\n p: isoMonthAdd,\n year(e) {\n return e.isoYear;\n },\n month(e) {\n return e.isoMonth;\n },\n day: computeIsoDay\n}), Nm = {\n u: computeIntlDateParts,\n $: computeIntlEraParts,\n m: computeIntlMonthCodeParts\n}, Om = {\n dayOfYear: computeNativeDayOfYear,\n u: computeIntlDateParts,\n M: computeIntlEpochMilli\n}, bm = {\n I() {\n return [];\n }\n}, Sm = /*@__PURE__*/ Object.assign({}, Om, bm, {\n weekOfYear: computeNativeWeekOfYear,\n yearOfWeek: computeNativeYearOfWeek\n}), Bm = /*@__PURE__*/ Object.assign({}, kf, Sm, {\n u: computeIntlDateParts,\n $: computeIntlEraParts,\n m: computeIntlMonthCodeParts,\n R: computeIntlYearMonthForMonthDay,\n L: computeIntlInLeapYear,\n F: computeIntlLeapMonth,\n O: computeIntlMonthsInYear,\n q: computeIntlMonthsInYearSpan,\n B: computeIntlDaysInMonth,\n G: computeIntlDaysInYear,\n U: computeIsoFieldsFromIntlParts,\n M: computeIntlEpochMilli,\n p: intlMonthAdd,\n year(e) {\n return this._(e).year;\n },\n month(e) {\n const {year: n, V: t} = this._(e), {X: o} = this.J(n);\n return o[t] + 1;\n },\n day: computeIntlDay\n}), ra = /*@__PURE__*/ createNativeOpsCreator(Kf, Nm), v = /*@__PURE__*/ createNativeOpsCreator(im, Bm), Ym = {\n era: toStringViaPrimitive,\n eraYear: Za,\n year: Za,\n month: toPositiveInteger,\n monthCode(e) {\n const n = toStringViaPrimitive(e);\n return parseMonthCode(n), n;\n },\n day: toPositiveInteger\n}, Cm = /*@__PURE__*/ Su(p, Za), km = /*@__PURE__*/ Su(O, Ba), Zm = {\n offset(e) {\n const n = toStringViaPrimitive(e);\n return parseOffsetNano(n), n;\n }\n}, Rm = /*@__PURE__*/ Object.assign({}, Ym, Cm, km, Zm), zm = /*@__PURE__*/ gt(remapProps, p, w), Ga = /*@__PURE__*/ gt(remapProps, w, p), Am = \"numeric\", Um = [ \"timeZoneName\" ], jm = {\n month: Am,\n day: Am\n}, qm = {\n year: Am,\n month: Am\n}, Lm = /*@__PURE__*/ Object.assign({}, qm, {\n day: Am\n}), Wm = {\n hour: Am,\n minute: Am,\n second: Am\n}, xm = /*@__PURE__*/ Object.assign({}, Lm, Wm), $m = /*@__PURE__*/ Object.assign({}, xm, {\n timeZoneName: \"short\"\n}), Hm = /*@__PURE__*/ Object.keys(qm), Gm = /*@__PURE__*/ Object.keys(jm), Vm = /*@__PURE__*/ Object.keys(Lm), _m = /*@__PURE__*/ Object.keys(Wm), Jm = [ \"dateStyle\" ], Km = /*@__PURE__*/ Hm.concat(Jm), Qm = /*@__PURE__*/ Gm.concat(Jm), Xm = /*@__PURE__*/ Vm.concat(Jm, [ \"weekday\" ]), ep = /*@__PURE__*/ _m.concat([ \"dayPeriod\", \"timeStyle\", \"fractionalSecondDigits\" ]), np = /*@__PURE__*/ Xm.concat(ep), tp = /*@__PURE__*/ Um.concat(ep), op = /*@__PURE__*/ Um.concat(Xm), rp = /*@__PURE__*/ Um.concat([ \"day\", \"weekday\" ], ep), ip = /*@__PURE__*/ Um.concat([ \"year\", \"weekday\" ], ep), ap = /*@__PURE__*/ createOptionsTransformer(np, xm), sp = /*@__PURE__*/ createOptionsTransformer(np, $m), cp = /*@__PURE__*/ createOptionsTransformer(np, xm, Um), up = /*@__PURE__*/ createOptionsTransformer(Xm, Lm, tp), lp = /*@__PURE__*/ createOptionsTransformer(ep, Wm, op), fp = /*@__PURE__*/ createOptionsTransformer(Km, qm, rp), dp = /*@__PURE__*/ createOptionsTransformer(Qm, jm, ip), mp = {}, pp = /*@__PURE__*/ computeNonBuggyIsoResolve(), Q = [ ap, I ], ot = [ sp, I, 0, (e, n) => {\n const t = e.timeZone;\n if (n && n.timeZone !== t) {\n throw new RangeError(pu);\n }\n return t;\n} ], U = [ cp, isoToEpochMilli ], X = [ up, isoToEpochMilli ], tt = [ lp, e => isoTimeFieldsToNano(e) / Ke ], et = [ fp, isoToEpochMilli, pp ], nt = [ dp, isoToEpochMilli, pp ];\n\nfunction createSlotClass(i, l, s, c, u, f) {\n function Class(...t) {\n if (!(this instanceof Class)) {\n throw new TypeError(a);\n }\n {\n const e = l(...t);\n un(this, e), dbg(this, e, f);\n }\n }\n function bindMethod(t, e) {\n return Object.defineProperties((function(...e) {\n return t.call(this, getSpecificSlots(this), ...e);\n }), r(e));\n }\n function getSpecificSlots(t) {\n const e = cn(t);\n if (!e || e.branding !== i) {\n throw new TypeError(a);\n }\n return e;\n }\n return Object.defineProperties(Class.prototype, {\n ...t(e(bindMethod, s)),\n ...n(e(bindMethod, c)),\n ...o(\"Temporal.\" + i)\n }), Object.defineProperties(Class, {\n ...n(u),\n ...r(i)\n }), [ Class, t => {\n const e = Object.create(Class.prototype);\n return un(e, t), dbg(e, t, f), e;\n }, getSpecificSlots ];\n}\n\nfunction rejectInvalidBag(t) {\n if (cn(t) || void 0 !== t.calendar || void 0 !== t.timeZone) {\n throw new TypeError(i);\n }\n return t;\n}\n\nfunction dbg(t, e, n) {\n \"dbg\" === dbg.name && Object.defineProperty(t, \"o\", {\n value: n(e),\n writable: 0,\n enumerable: 0,\n configurable: 0\n });\n}\n\nfunction getCalendarIdFromBag(t) {\n return extractCalendarIdFromBag(t) || l;\n}\n\nfunction extractCalendarIdFromBag(t) {\n const {calendar: e} = t;\n if (void 0 !== e) {\n return refineCalendarArg(e);\n }\n}\n\nfunction refineCalendarArg(t) {\n if (s(t)) {\n const {calendar: e} = cn(t) || {};\n if (!e) {\n throw new TypeError(c(t));\n }\n return e;\n }\n return (t => u(f(d(t))))(t);\n}\n\nfunction createCalendarGetters(t) {\n const e = {};\n for (const n in t) {\n e[n] = t => {\n const {calendar: e} = t;\n return v(e)[n](t);\n };\n }\n return e;\n}\n\nfunction neverValueOf() {\n throw new TypeError(C);\n}\n\nfunction refineTimeZoneArg(t) {\n if (s(t)) {\n const {timeZone: e} = cn(t) || {};\n if (!e) {\n throw new TypeError(F(t));\n }\n return e;\n }\n return (t => Z(M(d(t))))(t);\n}\n\nfunction toDurationSlots(t) {\n if (s(t)) {\n const e = cn(t);\n return e && e.branding === A ? e : q(t);\n }\n return R(t);\n}\n\nfunction refinePublicRelativeTo(t) {\n if (void 0 !== t) {\n if (s(t)) {\n const e = cn(t) || {};\n switch (e.branding) {\n case _:\n case G:\n return e;\n\n case x:\n return W(e);\n }\n const n = getCalendarIdFromBag(t);\n return {\n ...z(refineTimeZoneArg, L, v(n), t),\n calendar: n\n };\n }\n return $(t);\n }\n}\n\nfunction toPlainTimeSlots(t, e) {\n if (s(t)) {\n const n = cn(t) || {};\n switch (n.branding) {\n case ft:\n return dt(e), n;\n\n case x:\n return dt(e), St(n);\n\n case _:\n return dt(e), mt(L, n);\n }\n return Tt(t, e);\n }\n const n = ht(t);\n return dt(e), n;\n}\n\nfunction optionalToPlainTimeFields(t) {\n return void 0 === t ? void 0 : toPlainTimeSlots(t);\n}\n\nfunction toPlainDateTimeSlots(t, e) {\n if (s(t)) {\n const n = cn(t) || {};\n switch (n.branding) {\n case x:\n return dt(e), n;\n\n case G:\n return dt(e), jt({\n ...n,\n ...At\n });\n\n case _:\n return dt(e), yt(L, n);\n }\n return Nt(v(getCalendarIdFromBag(t)), t, e);\n }\n const n = Bt(t);\n return dt(e), n;\n}\n\nfunction toPlainMonthDaySlots(t, e) {\n if (s(t)) {\n const n = cn(t);\n if (n && n.branding === qt) {\n return dt(e), n;\n }\n const o = extractCalendarIdFromBag(t);\n return Rt(v(o || l), !o, t, e);\n }\n const n = xt(v, t);\n return dt(e), n;\n}\n\nfunction toPlainYearMonthSlots(t, e) {\n if (s(t)) {\n const n = cn(t);\n return n && n.branding === Qt ? (dt(e), n) : Ut(v(getCalendarIdFromBag(t)), t, e);\n }\n const n = Xt(v, t);\n return dt(e), n;\n}\n\nfunction toPlainDateSlots(t, e) {\n if (s(t)) {\n const n = cn(t) || {};\n switch (n.branding) {\n case G:\n return dt(e), n;\n\n case x:\n return dt(e), W(n);\n\n case _:\n return dt(e), fe(L, n);\n }\n return de(v(getCalendarIdFromBag(t)), t, e);\n }\n const n = me(t);\n return dt(e), n;\n}\n\nfunction toZonedDateTimeSlots(t, e) {\n if (s(t)) {\n const n = cn(t);\n if (n && n.branding === _) {\n return je(e), n;\n }\n const o = getCalendarIdFromBag(t);\n return Ae(refineTimeZoneArg, L, v(o), o, t, e);\n }\n return Ne(t, e);\n}\n\nfunction adaptDateMethods(t) {\n return e((t => e => t(slotsToIso(e))), t);\n}\n\nfunction slotsToIso(t) {\n return he(t, L);\n}\n\nfunction toInstantSlots(t) {\n if (s(t)) {\n const e = cn(t);\n if (e) {\n switch (e.branding) {\n case Re:\n return e;\n\n case _:\n return xe(e.epochNanoseconds);\n }\n }\n }\n return We(t);\n}\n\nfunction createDateTimeFormatClass() {\n function DateTimeFormatFunc(t, e) {\n return new DateTimeFormatNew(t, e);\n }\n function DateTimeFormatNew(t, e = Object.create(null)) {\n to.set(this, ((t, e) => {\n const n = new en(t, e), o = n.resolvedOptions(), r = o.locale, a = nn(Object.keys(e), o), i = on(createFormatPrepperForBranding), prepFormat = (t, ...e) => {\n if (t) {\n if (2 !== e.length) {\n throw new TypeError(ln);\n }\n for (const t of e) {\n if (void 0 === t) {\n throw new TypeError(ln);\n }\n }\n }\n t || void 0 !== e[0] || (e = []);\n const o = e.map((t => cn(t) || Number(t)));\n let l, s = 0;\n for (const t of o) {\n const e = \"object\" == typeof t ? t.branding : void 0;\n if (s++ && e !== l) {\n throw new TypeError(ln);\n }\n l = e;\n }\n return l ? i(l)(r, a, ...o) : [ n, ...o ];\n };\n return prepFormat.i = n, prepFormat;\n })(t, e));\n }\n const t = en.prototype, e = Object.getOwnPropertyDescriptors(t), n = Object.getOwnPropertyDescriptors(en);\n for (const t in e) {\n const n = e[t], o = t.startsWith(\"format\") && createFormatMethod(t);\n \"function\" == typeof n.value ? n.value = \"constructor\" === t ? DateTimeFormatFunc : o || createProxiedMethod(t) : o && (n.get = function() {\n if (!to.has(this)) {\n throw new TypeError(a);\n }\n return (...t) => o.apply(this, t);\n }, Object.defineProperties(n.get, r(`get ${t}`)));\n }\n return n.prototype.value = DateTimeFormatNew.prototype = Object.create({}, e), Object.defineProperties(DateTimeFormatFunc, n), \n DateTimeFormatFunc;\n}\n\nfunction createFormatMethod(t) {\n return Object.defineProperties((function(...e) {\n const n = to.get(this), [o, ...r] = n(t.includes(\"Range\"), ...e);\n return o[t](...r);\n }), r(t));\n}\n\nfunction createProxiedMethod(t) {\n return Object.defineProperties((function(...e) {\n return to.get(this).i[t](...e);\n }), r(t));\n}\n\nfunction createFormatPrepperForBranding(t) {\n const e = vn[t];\n if (!e) {\n throw new TypeError(rn(t));\n }\n return K(e, on(an), 1);\n}\n\nconst sn = /*@__PURE__*/ new WeakMap, cn = /*@__PURE__*/ sn.get.bind(sn), un = /*@__PURE__*/ sn.set.bind(sn), fn = {\n era: m,\n eraYear: S,\n year: T,\n month: h,\n daysInMonth: h,\n daysInYear: h,\n inLeapYear: D,\n monthsInYear: h\n}, dn = {\n monthCode: d\n}, mn = {\n day: h\n}, Sn = {\n dayOfWeek: h,\n dayOfYear: h,\n weekOfYear: g,\n yearOfWeek: S,\n daysInWeek: h\n}, Tn = /*@__PURE__*/ createCalendarGetters(/*@__PURE__*/ Object.assign({}, fn, dn, mn, Sn)), hn = /*@__PURE__*/ createCalendarGetters({\n ...fn,\n ...dn\n}), Dn = /*@__PURE__*/ createCalendarGetters({\n ...dn,\n ...mn\n}), gn = {\n calendarId: t => t.calendar\n}, Pn = /*@__PURE__*/ P((t => e => e[t]), O.concat(\"sign\")), On = /*@__PURE__*/ P(((t, e) => t => t[w[e]]), p), pn = {\n epochMilliseconds: I,\n epochNanoseconds: b\n}, [wn, In] = createSlotClass(A, j, {\n ...Pn,\n blank: y\n}, {\n with: (t, e) => In(N(t, e)),\n negated: t => In(B(t)),\n abs: t => In(Y(t)),\n add: (t, e, n) => In(E(refinePublicRelativeTo, v, L, 0, t, toDurationSlots(e), n)),\n subtract: (t, e, n) => In(E(refinePublicRelativeTo, v, L, 1, t, toDurationSlots(e), n)),\n round: (t, e) => In(V(refinePublicRelativeTo, v, L, t, e)),\n total: (t, e) => J(refinePublicRelativeTo, v, L, t, e),\n toLocaleString(t, e, n) {\n return Intl.DurationFormat ? new Intl.DurationFormat(e, n).format(this) : k(t);\n },\n toString: k,\n toJSON: t => k(t),\n valueOf: neverValueOf\n}, {\n from: t => In(toDurationSlots(t)),\n compare: (t, e, n) => H(refinePublicRelativeTo, v, L, toDurationSlots(t), toDurationSlots(e), n)\n}, k), vn = {\n Instant: Q,\n PlainDateTime: U,\n PlainDate: X,\n PlainTime: tt,\n PlainYearMonth: et,\n PlainMonthDay: nt\n}, Cn = /*@__PURE__*/ K(Q), Fn = /*@__PURE__*/ K(ot), Zn = /*@__PURE__*/ K(U), Mn = /*@__PURE__*/ K(X), yn = /*@__PURE__*/ K(tt), jn = /*@__PURE__*/ K(et), An = /*@__PURE__*/ K(nt), [Nn, Bn] = createSlotClass(ft, ut, On, {\n with(t, e, n) {\n return Bn(rt(this, rejectInvalidBag(e), n));\n },\n add: (t, e) => Bn(at(0, t, toDurationSlots(e))),\n subtract: (t, e) => Bn(at(1, t, toDurationSlots(e))),\n until: (t, e, n) => In(it(0, t, toPlainTimeSlots(e), n)),\n since: (t, e, n) => In(it(1, t, toPlainTimeSlots(e), n)),\n round: (t, e) => Bn(lt(t, e)),\n equals: (t, e) => st(t, toPlainTimeSlots(e)),\n toLocaleString(t, e, n) {\n const [o, r] = yn(e, n, t);\n return o.format(r);\n },\n toString: ct,\n toJSON: t => ct(t),\n valueOf: neverValueOf\n}, {\n from: (t, e) => Bn(toPlainTimeSlots(t, e)),\n compare: (t, e) => Dt(toPlainTimeSlots(t), toPlainTimeSlots(e))\n}, ct), [Yn, En] = createSlotClass(x, gt(Mt, Zt), {\n ...gn,\n ...Tn,\n ...On\n}, {\n with: (t, e, n) => En(Pt(v, t, rejectInvalidBag(e), n)),\n withCalendar: (t, e) => En(Ot(t, refineCalendarArg(e))),\n withPlainTime: (t, e) => En(pt(t, optionalToPlainTimeFields(e))),\n add: (t, e, n) => En(wt(v, 0, t, toDurationSlots(e), n)),\n subtract: (t, e, n) => En(wt(v, 1, t, toDurationSlots(e), n)),\n until: (t, e, n) => In(It(v, 0, t, toPlainDateTimeSlots(e), n)),\n since: (t, e, n) => In(It(v, 1, t, toPlainDateTimeSlots(e), n)),\n round: (t, e) => En(bt(t, e)),\n equals: (t, e) => vt(t, toPlainDateTimeSlots(e)),\n toZonedDateTime: (t, e, n) => zn(Ct(L, t, refineTimeZoneArg(e), n)),\n toPlainDate: t => Wn(W(t)),\n toPlainTime: t => Bn(St(t)),\n toLocaleString(t, e, n) {\n const [o, r] = Zn(e, n, t);\n return o.format(r);\n },\n toString: Ft,\n toJSON: t => Ft(t),\n valueOf: neverValueOf\n}, {\n from: (t, e) => En(toPlainDateTimeSlots(t, e)),\n compare: (t, e) => Yt(toPlainDateTimeSlots(t), toPlainDateTimeSlots(e))\n}, Ft), [Ln, Vn] = createSlotClass(qt, gt(kt, Zt), {\n ...gn,\n ...Dn\n}, {\n with: (t, e, n) => Vn(Et(v, t, rejectInvalidBag(e), n)),\n equals: (t, e) => Lt(t, toPlainMonthDaySlots(e)),\n toPlainDate(t, e) {\n return Wn(Vt(v, t, this, e));\n },\n toLocaleString(t, e, n) {\n const [o, r] = An(e, n, t);\n return o.format(r);\n },\n toString: Jt,\n toJSON: t => Jt(t),\n valueOf: neverValueOf\n}, {\n from: (t, e) => Vn(toPlainMonthDaySlots(t, e))\n}, Jt), [kn, qn] = createSlotClass(Qt, gt(Kt, Zt), {\n ...gn,\n ...hn\n}, {\n with: (t, e, n) => qn(Wt(v, t, rejectInvalidBag(e), n)),\n add: (t, e, n) => qn(Gt(v, 0, t, toDurationSlots(e), n)),\n subtract: (t, e, n) => qn(Gt(v, 1, t, toDurationSlots(e), n)),\n until: (t, e, n) => In(_t(v, 0, t, toPlainYearMonthSlots(e), n)),\n since: (t, e, n) => In(_t(v, 1, t, toPlainYearMonthSlots(e), n)),\n equals: (t, e) => zt(t, toPlainYearMonthSlots(e)),\n toPlainDate(t, e) {\n return Wn($t(v, t, this, e));\n },\n toLocaleString(t, e, n) {\n const [o, r] = jn(e, n, t);\n return o.format(r);\n },\n toString: Ht,\n toJSON: t => Ht(t),\n valueOf: neverValueOf\n}, {\n from: (t, e) => qn(toPlainYearMonthSlots(t, e)),\n compare: (t, e) => te(toPlainYearMonthSlots(t), toPlainYearMonthSlots(e))\n}, Ht), [xn, Wn] = createSlotClass(G, gt(ue, Zt), {\n ...gn,\n ...Tn\n}, {\n with: (t, e, n) => Wn(ee(v, t, rejectInvalidBag(e), n)),\n withCalendar: (t, e) => Wn(Ot(t, refineCalendarArg(e))),\n add: (t, e, n) => Wn(ne(v, 0, t, toDurationSlots(e), n)),\n subtract: (t, e, n) => Wn(ne(v, 1, t, toDurationSlots(e), n)),\n until: (t, e, n) => In(oe(v, 0, t, toPlainDateSlots(e), n)),\n since: (t, e, n) => In(oe(v, 1, t, toPlainDateSlots(e), n)),\n equals: (t, e) => re(t, toPlainDateSlots(e)),\n toZonedDateTime(t, e) {\n const n = s(e) ? e : {\n timeZone: e\n };\n return zn(ae(refineTimeZoneArg, toPlainTimeSlots, L, t, n));\n },\n toPlainDateTime: (t, e) => En(ie(t, optionalToPlainTimeFields(e))),\n toPlainYearMonth(t) {\n return qn(le(v, t, this));\n },\n toPlainMonthDay(t) {\n return Vn(se(v, t, this));\n },\n toLocaleString(t, e, n) {\n const [o, r] = Mn(e, n, t);\n return o.format(r);\n },\n toString: ce,\n toJSON: t => ce(t),\n valueOf: neverValueOf\n}, {\n from: (t, e) => Wn(toPlainDateSlots(t, e)),\n compare: (t, e) => te(toPlainDateSlots(t), toPlainDateSlots(e))\n}, ce), [_n, zn] = createSlotClass(_, gt(ye, Zt, Me), {\n ...pn,\n ...gn,\n ...adaptDateMethods(Tn),\n ...adaptDateMethods(On),\n offset: t => Se(slotsToIso(t).offsetNanoseconds),\n offsetNanoseconds: t => slotsToIso(t).offsetNanoseconds,\n timeZoneId: t => t.timeZone,\n hoursInDay: t => Te(L, t)\n}, {\n with: (t, e, n) => zn(De(v, L, t, rejectInvalidBag(e), n)),\n withCalendar: (t, e) => zn(Ot(t, refineCalendarArg(e))),\n withTimeZone: (t, e) => zn(ge(t, refineTimeZoneArg(e))),\n withPlainTime: (t, e) => zn(Pe(L, t, optionalToPlainTimeFields(e))),\n add: (t, e, n) => zn(Oe(v, L, 0, t, toDurationSlots(e), n)),\n subtract: (t, e, n) => zn(Oe(v, L, 1, t, toDurationSlots(e), n)),\n until: (t, e, n) => In(pe(we(v, L, 0, t, toZonedDateTimeSlots(e), n))),\n since: (t, e, n) => In(pe(we(v, L, 1, t, toZonedDateTimeSlots(e), n))),\n round: (t, e) => zn(Ie(L, t, e)),\n startOfDay: t => zn(be(L, t)),\n equals: (t, e) => ve(t, toZonedDateTimeSlots(e)),\n toInstant: t => Hn(Ce(t)),\n toPlainDateTime: t => En(yt(L, t)),\n toPlainDate: t => Wn(fe(L, t)),\n toPlainTime: t => Bn(mt(L, t)),\n toLocaleString(t, e, n = {}) {\n const [o, r] = Fn(e, n, t);\n return o.format(r);\n },\n toString: (t, e) => Fe(L, t, e),\n toJSON: t => Fe(L, t),\n valueOf: neverValueOf,\n getTimeZoneTransition(t, e) {\n const {timeZone: n, epochNanoseconds: o} = t, r = Ze(e), a = L(n).l(o, r);\n return a ? zn({\n ...t,\n epochNanoseconds: a\n }) : null;\n }\n}, {\n from: (t, e) => zn(toZonedDateTimeSlots(t, e)),\n compare: (t, e) => Be(toZonedDateTimeSlots(t), toZonedDateTimeSlots(e))\n}, (t => Fe(L, t))), [$n, Hn] = createSlotClass(Re, qe, pn, {\n add: (t, e) => Hn(Ye(0, t, toDurationSlots(e))),\n subtract: (t, e) => Hn(Ye(1, t, toDurationSlots(e))),\n until: (t, e, n) => In(Ee(0, t, toInstantSlots(e), n)),\n since: (t, e, n) => In(Ee(1, t, toInstantSlots(e), n)),\n round: (t, e) => Hn(Le(t, e)),\n equals: (t, e) => Ve(t, toInstantSlots(e)),\n toZonedDateTimeISO: (t, e) => zn(Je(t, refineTimeZoneArg(e))),\n toLocaleString(t, e, n) {\n const [o, r] = Cn(e, n, t);\n return o.format(r);\n },\n toString: (t, e) => ke(refineTimeZoneArg, L, t, e),\n toJSON: t => ke(refineTimeZoneArg, L, t),\n valueOf: neverValueOf\n}, {\n from: t => Hn(toInstantSlots(t)),\n fromEpochMilliseconds: t => Hn(ze(t)),\n fromEpochNanoseconds: t => Hn($e(t)),\n compare: (t, e) => He(toInstantSlots(t), toInstantSlots(e))\n}, (t => ke(refineTimeZoneArg, L, t))), Qn = /*@__PURE__*/ Object.defineProperties({}, {\n ...o(\"Temporal.Now\"),\n ...n({\n timeZoneId: () => Qe(),\n instant: () => Hn(xe(Ue())),\n zonedDateTimeISO: (t = Qe()) => zn(Xe(Ue(), refineTimeZoneArg(t), l)),\n plainDateTimeISO: (t = Qe()) => En(jt(tn(L(refineTimeZoneArg(t))), l)),\n plainDateISO: (t = Qe()) => Wn(W(tn(L(refineTimeZoneArg(t))), l)),\n plainTimeISO: (t = Qe()) => Bn(St(tn(L(refineTimeZoneArg(t)))))\n })\n}), Un = /*@__PURE__*/ Object.defineProperties({}, {\n ...o(\"Temporal\"),\n ...n({\n PlainYearMonth: kn,\n PlainMonthDay: Ln,\n PlainDate: xn,\n PlainTime: Nn,\n PlainDateTime: Yn,\n ZonedDateTime: _n,\n Instant: $n,\n Duration: wn,\n Now: Qn\n })\n}), Xn = /*@__PURE__*/ createDateTimeFormatClass(), to = /*@__PURE__*/ new WeakMap; /*@__PURE__*/ Object.defineProperties(Object.create(Intl), n({\n DateTimeFormat: Xn\n}));\n\nconst _hoisted_1$A = {\n role: \"row\",\n class: \"kds-date-picker-header-row\"\n};\nconst _hoisted_2$k = [\"aria-label\"];\nconst _hoisted_3$g = { class: \"kds-date-picker-day-grid\" };\nconst _hoisted_4$e = [\"aria-selected\", \"aria-disabled\", \"aria-label\", \"disabled\", \"tabindex\", \"onClick\", \"onFocus\"];\nconst REFERENCE_YEAR$2 = 2024;\nconst DAYS_PER_WEEK = 7;\nconst TOTAL_CELLS = 42;\nconst _sfc_main$P = /* @__PURE__ */ defineComponent({\n __name: \"DatePickerDayGrid\",\n props: {\n modelValue: {},\n minDate: {},\n maxDate: {},\n focusYear: {},\n focusMonth: {}\n },\n emits: [\"dateSelect\", \"update:focusYear\", \"update:focusMonth\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const dayShortFormatter = new Intl.DateTimeFormat(\"en-US\", {\n weekday: \"short\"\n });\n const dayLongFormatter = new Intl.DateTimeFormat(\"en-US\", {\n weekday: \"long\"\n });\n const monthLongFormatter = new Intl.DateTimeFormat(\"en-US\", { month: \"long\" });\n const DAY_LABELS = Array.from({ length: DAYS_PER_WEEK }, (_, i) => {\n const label = dayShortFormatter.format(new Date(REFERENCE_YEAR$2, 0, 1 + i));\n return label.replace(/\\.$/, \"\").slice(0, 2);\n });\n const DAY_FULL_LABELS = Array.from(\n { length: DAYS_PER_WEEK },\n (_, i) => dayLongFormatter.format(new Date(REFERENCE_YEAR$2, 0, 1 + i))\n );\n const MONTH_LONG_LABELS = Array.from(\n { length: 12 },\n (_, i) => monthLongFormatter.format(new Date(REFERENCE_YEAR$2, i))\n );\n const props = __props;\n const emit = __emit;\n const today = () => Un.Now.plainDateISO();\n const isSameDay = (a, b) => Un.PlainDate.compare(a, b) === 0;\n const isDateDisabled = (date) => {\n if (props.minDate && Un.PlainDate.compare(date, props.minDate) < 0) {\n return true;\n }\n if (props.maxDate && Un.PlainDate.compare(date, props.maxDate) > 0) {\n return true;\n }\n return false;\n };\n const clampDate = (date) => {\n if (props.minDate && Un.PlainDate.compare(date, props.minDate) < 0) {\n return props.minDate;\n }\n if (props.maxDate && Un.PlainDate.compare(date, props.maxDate) > 0) {\n return props.maxDate;\n }\n return date;\n };\n const focusedDate = ref(null);\n watch(\n () => [props.focusYear, props.focusMonth],\n ([focusYear, focusMonth]) => {\n if (focusedDate.value && (focusedDate.value.year !== focusYear || focusedDate.value.month !== focusMonth)) {\n focusedDate.value = null;\n }\n }\n );\n const formatDayLabel = (date) => {\n const dayIndex = date.dayOfWeek - 1;\n return `${DAY_FULL_LABELS[dayIndex]}, ${MONTH_LONG_LABELS[date.month - 1]} ${date.day}, ${date.year}`;\n };\n const calendarDays = computed(() => {\n const { focusYear, focusMonth, modelValue } = props;\n const t = today();\n const firstOfMonth = Un.PlainDate.from({\n year: focusYear,\n month: focusMonth,\n day: 1\n });\n const startOffset = firstOfMonth.dayOfWeek - 1;\n const daysInMonth = firstOfMonth.daysInMonth;\n const prevMonth = firstOfMonth.subtract({ months: 1 });\n const prevMonthDays = prevMonth.daysInMonth;\n const days = [];\n for (let i = startOffset - 1; i >= 0; i--) {\n const d = prevMonthDays - i;\n const date = Un.PlainDate.from({\n year: prevMonth.year,\n month: prevMonth.month,\n day: d\n });\n days.push({\n date,\n day: d,\n isCurrentMonth: false,\n isDisabled: isDateDisabled(date),\n isSelected: modelValue !== null && isSameDay(date, modelValue),\n isToday: isSameDay(date, t),\n label: formatDayLabel(date)\n });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n const date = Un.PlainDate.from({\n year: focusYear,\n month: focusMonth,\n day: d\n });\n days.push({\n date,\n day: d,\n isCurrentMonth: true,\n isDisabled: isDateDisabled(date),\n isSelected: modelValue !== null && isSameDay(date, modelValue),\n isToday: isSameDay(date, t),\n label: formatDayLabel(date)\n });\n }\n const nextMonth = firstOfMonth.add({ months: 1 });\n while (days.length < TOTAL_CELLS) {\n const d = days.length - startOffset - daysInMonth + 1;\n const date = Un.PlainDate.from({\n year: nextMonth.year,\n month: nextMonth.month,\n day: d\n });\n days.push({\n date,\n day: d,\n isCurrentMonth: false,\n isDisabled: isDateDisabled(date),\n isSelected: modelValue !== null && isSameDay(date, modelValue),\n isToday: isSameDay(date, t),\n label: formatDayLabel(date)\n });\n }\n return days;\n });\n const weeks = computed(() => {\n const rows = [];\n for (let i = 0; i < calendarDays.value.length; i += DAYS_PER_WEEK) {\n rows.push(calendarDays.value.slice(i, i + DAYS_PER_WEEK));\n }\n return rows;\n });\n const gridRef = useTemplateRef(\"gridRef\");\n const focusTabindexZero = async () => {\n await nextTick();\n gridRef.value?.querySelector('[tabindex=\"0\"]')?.focus();\n };\n watch(focusedDate, (date) => {\n if (date) {\n focusTabindexZero();\n }\n });\n const getFocusableDate = () => {\n const { modelValue, focusYear, focusMonth } = props;\n if (modelValue && !isDateDisabled(modelValue)) {\n const sameView = modelValue.year === focusYear && modelValue.month === focusMonth;\n if (sameView) {\n return modelValue;\n }\n }\n const t = today();\n if (t.month === focusMonth && t.year === focusYear && !isDateDisabled(t)) {\n return t;\n }\n const clamped = clampDate(t);\n if (clamped.month === focusMonth && clamped.year === focusYear && !isDateDisabled(clamped)) {\n return clamped;\n }\n const firstSelectable = calendarDays.value.find(\n (d) => d.isCurrentMonth && !d.isDisabled\n );\n if (firstSelectable) {\n return firstSelectable.date;\n }\n const firstOfMonth = Un.PlainDate.from({\n year: focusYear,\n month: focusMonth,\n day: 1\n });\n return clampDate(firstOfMonth);\n };\n const selectDate = (day) => {\n if (day.isDisabled) {\n return;\n }\n if (!day.isCurrentMonth) {\n emit(\"update:focusMonth\", day.date.month);\n emit(\"update:focusYear\", day.date.year);\n }\n emit(\"dateSelect\", day.date);\n };\n const moveFocusByPeriod = (duration) => {\n const current = focusedDate.value ?? getFocusableDate();\n if (!current) {\n return;\n }\n const next = clampDate(current.add(duration));\n emit(\"update:focusMonth\", next.month);\n emit(\"update:focusYear\", next.year);\n focusedDate.value = null;\n focusedDate.value = next;\n };\n const moveFocus = (offset) => {\n const current = focusedDate.value ?? getFocusableDate();\n if (!current) {\n return;\n }\n const next = clampDate(current.add({ days: offset }));\n if (isSameDay(next, current)) {\n return;\n }\n if (next.month !== props.focusMonth || next.year !== props.focusYear) {\n emit(\"update:focusMonth\", next.month);\n emit(\"update:focusYear\", next.year);\n }\n focusedDate.value = next;\n };\n const onDayKeydown = (event) => {\n let handled = true;\n switch (event.key) {\n case \"ArrowRight\":\n moveFocus(1);\n break;\n case \"ArrowLeft\":\n moveFocus(-1);\n break;\n case \"ArrowDown\":\n moveFocus(DAYS_PER_WEEK);\n break;\n case \"ArrowUp\":\n moveFocus(-DAYS_PER_WEEK);\n break;\n case \"Home\": {\n const baseDate = focusedDate.value ?? getFocusableDate() ?? today();\n moveFocus(-(baseDate.dayOfWeek - 1));\n break;\n }\n case \"End\": {\n const baseDate = focusedDate.value ?? getFocusableDate() ?? today();\n moveFocus(DAYS_PER_WEEK - baseDate.dayOfWeek);\n break;\n }\n case \"PageUp\":\n moveFocusByPeriod(event.shiftKey ? { years: -1 } : { months: -1 });\n break;\n case \"PageDown\":\n moveFocusByPeriod(event.shiftKey ? { years: 1 } : { months: 1 });\n break;\n case \"Enter\":\n case \" \": {\n const focused = focusedDate.value;\n if (focused) {\n const cell = calendarDays.value.find((d) => isSameDay(d.date, focused));\n if (cell) {\n selectDate(cell);\n }\n }\n break;\n }\n default:\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n const getDayTabIndex = (day) => {\n if (!day.isCurrentMonth) {\n return -1;\n }\n if (focusedDate.value && isSameDay(day.date, focusedDate.value)) {\n return 0;\n }\n if (!focusedDate.value) {\n const focusable = getFocusableDate();\n if (focusable && isSameDay(day.date, focusable)) {\n return 0;\n }\n }\n return -1;\n };\n const onDayFocus = (day) => {\n if (!focusedDate.value || Un.PlainDate.compare(focusedDate.value, day.date) !== 0) {\n focusedDate.value = day.date;\n }\n };\n const focus = () => {\n focusTabindexZero();\n };\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"gridRef\",\n ref: gridRef,\n class: \"kds-date-picker-grid\",\n role: \"grid\",\n \"aria-label\": \"Calendar\"\n }, [\n createElementVNode(\"div\", _hoisted_1$A, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(DAY_LABELS), (day, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: day,\n role: \"columnheader\",\n \"aria-label\": unref(DAY_FULL_LABELS)[i],\n class: \"kds-date-picker-weekday\"\n }, toDisplayString(day), 9, _hoisted_2$k);\n }), 128))\n ]),\n createElementVNode(\"div\", _hoisted_3$g, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(weeks.value, (week, wi) => {\n return openBlock(), createElementBlock(\"div\", {\n key: wi,\n role: \"row\",\n class: \"kds-date-picker-row\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(week, (day) => {\n return openBlock(), createElementBlock(\"button\", {\n key: day.date.toString(),\n type: \"button\",\n role: \"gridcell\",\n \"aria-selected\": day.isCurrentMonth ? day.isSelected : void 0,\n \"aria-disabled\": day.isDisabled || void 0,\n \"aria-label\": day.label,\n disabled: day.isDisabled,\n tabindex: getDayTabIndex(day),\n class: normalizeClass([\n \"kds-date-picker-day\",\n {\n \"kds-date-picker-day-offset\": !day.isCurrentMonth,\n \"kds-date-picker-day-disabled\": day.isDisabled,\n \"kds-date-picker-day-selected\": day.isSelected,\n \"kds-date-picker-day-today\": day.isToday\n }\n ]),\n onClick: ($event) => selectDate(day),\n onKeydown: onDayKeydown,\n onFocus: ($event) => onDayFocus(day)\n }, toDisplayString(day.day), 43, _hoisted_4$e);\n }), 128))\n ]);\n }), 128))\n ])\n ], 512);\n };\n }\n});\n\nconst DatePickerDayGrid = /* @__PURE__ */ _export_sfc(_sfc_main$P, [[\"__scopeId\", \"data-v-51807b35\"]]);\n\nconst _hoisted_1$z = [\"aria-selected\", \"aria-disabled\", \"aria-label\", \"disabled\", \"tabindex\", \"onClick\", \"onKeydown\", \"onFocus\"];\nconst REFERENCE_YEAR$1 = 2024;\nconst MONTHS_PER_YEAR$1 = 12;\nconst MONTH_GRID_COLS = 3;\nconst _sfc_main$O = /* @__PURE__ */ defineComponent({\n __name: \"DatePickerMonthGrid\",\n props: {\n modelValue: {},\n minDate: {},\n maxDate: {},\n focusYear: {},\n focusMonth: {}\n },\n emits: [\"monthSelect\", \"update:focusYear\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const monthLongFormatter = new Intl.DateTimeFormat(\"en-US\", { month: \"long\" });\n const monthShortFormatter = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\"\n });\n const MONTH_LONG_LABELS = Array.from(\n { length: MONTHS_PER_YEAR$1 },\n (_, i) => monthLongFormatter.format(new Date(REFERENCE_YEAR$1, i))\n );\n const MONTH_SHORT_LABELS = Array.from(\n { length: MONTHS_PER_YEAR$1 },\n (_, i) => monthShortFormatter.format(new Date(REFERENCE_YEAR$1, i))\n );\n const props = __props;\n const emit = __emit;\n const isMonthDisabled = (year, month) => {\n const { minDate, maxDate } = props;\n if (minDate) {\n if (year < minDate.year) {\n return true;\n }\n if (year === minDate.year && month < minDate.month) {\n return true;\n }\n }\n if (maxDate) {\n if (year > maxDate.year) {\n return true;\n }\n if (year === maxDate.year && month > maxDate.month) {\n return true;\n }\n }\n return false;\n };\n const focusedCell = ref(null);\n watch(\n () => props.focusYear,\n (focusYear) => {\n if (focusedCell.value !== null && isMonthDisabled(focusYear, focusedCell.value)) {\n focusedCell.value = null;\n }\n }\n );\n const monthCells = computed(\n () => MONTH_SHORT_LABELS.map((label, i) => {\n const month = i + 1;\n return {\n month,\n label,\n disabled: isMonthDisabled(props.focusYear, month),\n isSelected: props.modelValue !== null && props.modelValue.year === props.focusYear && props.modelValue.month === month,\n ariaLabel: `${MONTH_LONG_LABELS[i]} ${props.focusYear}`\n };\n })\n );\n const monthRows = computed(() => {\n const rows = [];\n for (let i = 0; i < monthCells.value.length; i += MONTH_GRID_COLS) {\n rows.push(monthCells.value.slice(i, i + MONTH_GRID_COLS));\n }\n return rows;\n });\n const gridRef = useTemplateRef(\"gridRef\");\n const focusTabindexZero = async () => {\n await nextTick();\n gridRef.value?.querySelector('[tabindex=\"0\"]')?.focus();\n };\n watch(focusedCell, (val) => {\n if (val !== null) {\n focusTabindexZero();\n }\n });\n const getFocusableMonth = () => {\n if (focusedCell.value !== null && !isMonthDisabled(props.focusYear, focusedCell.value)) {\n return focusedCell.value;\n }\n const { modelValue, focusYear, focusMonth } = props;\n if (modelValue && modelValue.year === focusYear && !isMonthDisabled(focusYear, modelValue.month)) {\n return modelValue.month;\n }\n if (!isMonthDisabled(focusYear, focusMonth)) {\n return focusMonth;\n }\n return monthCells.value.find((m) => !m.disabled)?.month ?? focusMonth;\n };\n const getTabIndex = (month) => month === getFocusableMonth() ? 0 : -1;\n const moveFocus = (offset) => {\n const current = getFocusableMonth();\n let next = current + offset;\n let yearDelta = 0;\n while (next < 1) {\n yearDelta -= 1;\n next += MONTHS_PER_YEAR$1;\n }\n while (next > MONTHS_PER_YEAR$1) {\n yearDelta += 1;\n next -= MONTHS_PER_YEAR$1;\n }\n const targetYear = props.focusYear + yearDelta;\n if (isMonthDisabled(targetYear, next)) {\n return;\n }\n if (yearDelta !== 0) {\n emit(\"update:focusYear\", targetYear);\n }\n focusedCell.value = null;\n focusedCell.value = next;\n };\n const selectMonth = (month) => {\n if (isMonthDisabled(props.focusYear, month)) {\n return;\n }\n emit(\"monthSelect\", props.focusYear, month);\n };\n const onKeydown = (event, month) => {\n let handled = true;\n switch (event.key) {\n case \"ArrowRight\":\n moveFocus(1);\n break;\n case \"ArrowLeft\":\n moveFocus(-1);\n break;\n case \"ArrowDown\":\n moveFocus(MONTH_GRID_COLS);\n break;\n case \"ArrowUp\":\n moveFocus(-MONTH_GRID_COLS);\n break;\n case \"Enter\":\n case \" \":\n selectMonth(month);\n break;\n default:\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n const focus = () => {\n focusTabindexZero();\n };\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"gridRef\",\n ref: gridRef,\n class: \"kds-date-picker-grid-simple\",\n role: \"grid\",\n \"aria-label\": \"Month selection\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(monthRows.value, (row, ri) => {\n return openBlock(), createElementBlock(\"div\", {\n key: ri,\n role: \"row\",\n class: \"kds-date-picker-grid-row\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell) => {\n return openBlock(), createElementBlock(\"button\", {\n key: cell.month,\n type: \"button\",\n role: \"gridcell\",\n \"aria-selected\": cell.isSelected,\n \"aria-disabled\": cell.disabled || void 0,\n \"aria-label\": cell.ariaLabel,\n disabled: cell.disabled,\n tabindex: getTabIndex(cell.month),\n class: normalizeClass([\n \"kds-date-picker-cell\",\n {\n \"kds-date-picker-cell-disabled\": cell.disabled,\n \"kds-date-picker-cell-selected\": cell.isSelected\n }\n ]),\n onClick: ($event) => selectMonth(cell.month),\n onKeydown: ($event) => onKeydown($event, cell.month),\n onFocus: ($event) => focusedCell.value = cell.month\n }, toDisplayString(cell.label), 43, _hoisted_1$z);\n }), 128))\n ]);\n }), 128))\n ], 512);\n };\n }\n});\n\nconst DatePickerMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$O, [[\"__scopeId\", \"data-v-63d96e84\"]]);\n\nconst _hoisted_1$y = [\"aria-selected\", \"aria-disabled\", \"aria-label\", \"disabled\", \"tabindex\", \"onClick\", \"onKeydown\", \"onFocus\"];\nconst YEAR_PAGE_SIZE$1 = 15;\nconst YEAR_GRID_COLS = 3;\nconst _sfc_main$N = /* @__PURE__ */ defineComponent({\n __name: \"DatePickerYearGrid\",\n props: {\n modelValue: {},\n minDate: {},\n maxDate: {},\n focusYear: {}\n },\n emits: [\"yearSelect\", \"update:focusYear\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const isYearDisabled = (year) => {\n if (props.minDate && year < props.minDate.year) {\n return true;\n }\n if (props.maxDate && year > props.maxDate.year) {\n return true;\n }\n return false;\n };\n const pageStart = computed(() => props.focusYear);\n const focusedCell = ref(null);\n watch(pageStart, (start) => {\n if (focusedCell.value !== null && focusedCell.value >= start && focusedCell.value < start + YEAR_PAGE_SIZE$1) {\n return;\n }\n focusedCell.value = null;\n });\n const yearCells = computed(() => {\n const start = pageStart.value;\n return Array.from({ length: YEAR_PAGE_SIZE$1 }, (_, i) => {\n const year = start + i;\n return {\n year,\n label: String(year),\n disabled: isYearDisabled(year),\n isSelected: props.modelValue !== null && props.modelValue.year === year\n };\n });\n });\n const yearRows = computed(() => {\n const rows = [];\n for (let i = 0; i < yearCells.value.length; i += YEAR_GRID_COLS) {\n rows.push(yearCells.value.slice(i, i + YEAR_GRID_COLS));\n }\n return rows;\n });\n const gridRef = useTemplateRef(\"gridRef\");\n const focusTabindexZero = async () => {\n await nextTick();\n gridRef.value?.querySelector('[tabindex=\"0\"]')?.focus();\n };\n watch(focusedCell, (val) => {\n if (val !== null) {\n focusTabindexZero();\n }\n });\n const getFocusableYear = () => {\n if (focusedCell.value !== null) {\n return focusedCell.value;\n }\n const { modelValue, focusYear } = props;\n const start = pageStart.value;\n const end = start + YEAR_PAGE_SIZE$1;\n if (modelValue && !isYearDisabled(modelValue.year) && modelValue.year >= start && modelValue.year < end) {\n return modelValue.year;\n }\n if (!isYearDisabled(focusYear)) {\n return focusYear;\n }\n return yearCells.value.find((y) => !y.disabled)?.year ?? focusYear;\n };\n const getTabIndex = (year) => year === getFocusableYear() ? 0 : -1;\n const moveFocus = (offset) => {\n const current = getFocusableYear();\n const next = current + offset;\n if (isYearDisabled(next)) {\n return;\n }\n const start = pageStart.value;\n if (next < start || next >= start + YEAR_PAGE_SIZE$1) {\n emit(\"update:focusYear\", next);\n }\n focusedCell.value = null;\n focusedCell.value = next;\n };\n const selectYear = (year) => {\n if (isYearDisabled(year)) {\n return;\n }\n emit(\"yearSelect\", year);\n };\n const onKeydown = (event, year) => {\n let handled = true;\n switch (event.key) {\n case \"ArrowRight\":\n moveFocus(1);\n break;\n case \"ArrowLeft\":\n moveFocus(-1);\n break;\n case \"ArrowDown\":\n moveFocus(YEAR_GRID_COLS);\n break;\n case \"ArrowUp\":\n moveFocus(-YEAR_GRID_COLS);\n break;\n case \"Enter\":\n case \" \":\n selectYear(year);\n break;\n default:\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n const focus = () => {\n focusTabindexZero();\n };\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"gridRef\",\n ref: gridRef,\n class: \"kds-date-picker-grid-simple\",\n role: \"grid\",\n \"aria-label\": \"Year selection\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(yearRows.value, (row, ri) => {\n return openBlock(), createElementBlock(\"div\", {\n key: ri,\n role: \"row\",\n class: \"kds-date-picker-grid-row\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell) => {\n return openBlock(), createElementBlock(\"button\", {\n key: cell.year,\n type: \"button\",\n role: \"gridcell\",\n \"aria-selected\": cell.isSelected,\n \"aria-disabled\": cell.disabled || void 0,\n \"aria-label\": cell.label,\n disabled: cell.disabled,\n tabindex: getTabIndex(cell.year),\n class: normalizeClass([\n \"kds-date-picker-cell\",\n {\n \"kds-date-picker-cell-disabled\": cell.disabled,\n \"kds-date-picker-cell-selected\": cell.isSelected\n }\n ]),\n onClick: ($event) => selectYear(cell.year),\n onKeydown: ($event) => onKeydown($event, cell.year),\n onFocus: ($event) => focusedCell.value = cell.year\n }, toDisplayString(cell.label), 43, _hoisted_1$y);\n }), 128))\n ]);\n }), 128))\n ], 512);\n };\n }\n});\n\nconst DatePickerYearGrid = /* @__PURE__ */ _export_sfc(_sfc_main$N, [[\"__scopeId\", \"data-v-270d55b9\"]]);\n\nconst _hoisted_1$x = { class: \"kds-date-picker\" };\nconst _hoisted_2$j = { class: \"kds-date-picker-header\" };\nconst _hoisted_3$f = { class: \"kds-date-picker-nav-block\" };\nconst _hoisted_4$d = {\n key: 1,\n class: \"kds-date-picker-header-static-label\",\n \"aria-live\": \"polite\"\n};\nconst _hoisted_5$6 = { class: \"kds-date-picker-nav-block\" };\nconst _hoisted_6$4 = { class: \"kds-date-picker-body\" };\nconst MONTHS_PER_YEAR = 12;\nconst YEAR_PAGE_SIZE = 15;\nconst REFERENCE_YEAR = 2024;\nconst _sfc_main$M = /* @__PURE__ */ defineComponent({\n __name: \"KdsDatePicker\",\n props: /* @__PURE__ */ mergeModels({\n minDate: {},\n maxDate: {},\n startView: { default: \"day\" }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const monthLongFormatter = new Intl.DateTimeFormat(\"en-US\", {\n month: \"long\"\n });\n const MONTH_LONG_LABELS = Array.from(\n { length: MONTHS_PER_YEAR },\n (_, i) => monthLongFormatter.format(new Date(REFERENCE_YEAR, i))\n );\n const modelValue = useModel(__props, \"modelValue\");\n const today = () => Un.Now.plainDateISO();\n const clampDate = (date) => {\n if (__props.minDate && Un.PlainDate.compare(date, __props.minDate) < 0) {\n return __props.minDate;\n }\n if (__props.maxDate && Un.PlainDate.compare(date, __props.maxDate) > 0) {\n return __props.maxDate;\n }\n return date;\n };\n const initialDate = clampDate(modelValue.value ?? today());\n const focusMonth = ref(initialDate.month);\n const focusYear = ref(initialDate.year);\n const view = ref(__props.startView);\n watch(modelValue, (val) => {\n if (val) {\n const focusDate = clampDate(val);\n focusMonth.value = focusDate.month;\n focusYear.value = focusDate.year;\n }\n });\n watch(\n () => [__props.minDate, __props.maxDate],\n () => {\n const clamped = clampDate(\n Un.PlainDate.from({\n year: focusYear.value,\n month: focusMonth.value,\n day: 1\n })\n );\n focusMonth.value = clamped.month;\n focusYear.value = clamped.year;\n }\n );\n const headerLabel = computed(() => {\n if (view.value === \"day\") {\n return `${MONTH_LONG_LABELS[focusMonth.value - 1]} ${focusYear.value}`;\n }\n if (view.value === \"month\") {\n return String(focusYear.value);\n }\n return `${focusYear.value} - ${focusYear.value + YEAR_PAGE_SIZE - 1}`;\n });\n const prevDisabled = computed(() => {\n if (view.value === \"day\") {\n if (!__props.minDate) {\n return false;\n }\n const prev = Un.PlainDate.from({\n year: focusYear.value,\n month: focusMonth.value,\n day: 1\n }).subtract({ months: 1 });\n const lastOfPrev = prev.add({ days: prev.daysInMonth - 1 });\n return Un.PlainDate.compare(lastOfPrev, __props.minDate) < 0;\n }\n if (view.value === \"month\") {\n return __props.minDate ? focusYear.value - 1 < __props.minDate.year : false;\n }\n return __props.minDate ? focusYear.value - YEAR_PAGE_SIZE < __props.minDate.year : false;\n });\n const nextDisabled = computed(() => {\n if (view.value === \"day\") {\n if (!__props.maxDate) {\n return false;\n }\n const next = Un.PlainDate.from({\n year: focusYear.value,\n month: focusMonth.value,\n day: 1\n }).add({ months: 1 });\n return Un.PlainDate.compare(next, __props.maxDate) > 0;\n }\n if (view.value === \"month\") {\n return __props.maxDate ? focusYear.value + 1 > __props.maxDate.year : false;\n }\n return __props.maxDate ? focusYear.value + YEAR_PAGE_SIZE > __props.maxDate.year : false;\n });\n const prevYearDisabled = computed(\n () => __props.minDate ? focusYear.value - 1 < __props.minDate.year : false\n );\n const nextYearDisabled = computed(\n () => __props.maxDate ? focusYear.value + 1 > __props.maxDate.year : false\n );\n const prevLabel = computed(() => {\n if (view.value === \"day\") {\n return \"Previous month\";\n }\n if (view.value === \"month\") {\n return \"Previous year\";\n }\n return \"Previous years\";\n });\n const nextLabel = computed(() => {\n if (view.value === \"day\") {\n return \"Next month\";\n }\n if (view.value === \"month\") {\n return \"Next year\";\n }\n return \"Next years\";\n });\n const onPrev = () => {\n if (view.value === \"day\") {\n const prev = Un.PlainDate.from({\n year: focusYear.value,\n month: focusMonth.value,\n day: 1\n }).subtract({ months: 1 });\n focusMonth.value = prev.month;\n focusYear.value = prev.year;\n } else if (view.value === \"month\") {\n focusYear.value -= 1;\n } else {\n focusYear.value -= YEAR_PAGE_SIZE;\n }\n };\n const onNext = () => {\n if (view.value === \"day\") {\n const next = Un.PlainDate.from({\n year: focusYear.value,\n month: focusMonth.value,\n day: 1\n }).add({ months: 1 });\n focusMonth.value = next.month;\n focusYear.value = next.year;\n } else if (view.value === \"month\") {\n focusYear.value += 1;\n } else {\n focusYear.value += YEAR_PAGE_SIZE;\n }\n };\n const onPrevYear = () => {\n focusYear.value -= 1;\n };\n const onNextYear = () => {\n focusYear.value += 1;\n };\n const onHeaderLabelClick = () => {\n if (view.value === \"day\") {\n view.value = \"month\";\n } else if (view.value === \"month\") {\n view.value = \"year\";\n }\n };\n const dayGridRef = useTemplateRef(\"dayGridRef\");\n const monthGridRef = useTemplateRef(\"monthGridRef\");\n const yearGridRef = useTemplateRef(\"yearGridRef\");\n const onSelectDate = (date) => {\n modelValue.value = date;\n };\n const onSelectMonth = (year, month) => {\n focusYear.value = year;\n focusMonth.value = month;\n view.value = \"day\";\n };\n const onSelectYear = (year) => {\n focusYear.value = year;\n view.value = \"month\";\n };\n const focus = () => {\n if (view.value === \"day\") {\n dayGridRef.value?.focus();\n } else if (view.value === \"month\") {\n monthGridRef.value?.focus();\n } else {\n yearGridRef.value?.focus();\n }\n };\n watch(view, async () => {\n await nextTick();\n focus();\n });\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$x, [\n createElementVNode(\"div\", _hoisted_2$j, [\n createElementVNode(\"div\", _hoisted_3$f, [\n view.value === \"day\" ? (openBlock(), createBlock(_sfc_main$1s, {\n key: 0,\n variant: \"transparent\",\n size: \"small\",\n \"leading-icon\": \"chevron-left-double\",\n ariaLabel: \"Previous year\",\n disabled: prevYearDisabled.value,\n onClick: onPrevYear\n }, null, 8, [\"disabled\"])) : createCommentVNode(\"\", true),\n createVNode(_sfc_main$1s, {\n variant: \"transparent\",\n size: \"small\",\n \"leading-icon\": \"chevron-left\",\n ariaLabel: prevLabel.value,\n disabled: prevDisabled.value,\n onClick: onPrev\n }, null, 8, [\"ariaLabel\", \"disabled\"])\n ]),\n view.value !== \"year\" ? (openBlock(), createBlock(_sfc_main$1s, {\n key: 0,\n class: \"kds-date-picker-header-label\",\n variant: \"transparent\",\n size: \"small\",\n label: headerLabel.value,\n onClick: onHeaderLabelClick\n }, null, 8, [\"label\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$d, toDisplayString(headerLabel.value), 1)),\n createElementVNode(\"div\", _hoisted_5$6, [\n createVNode(_sfc_main$1s, {\n variant: \"transparent\",\n size: \"small\",\n \"leading-icon\": \"chevron-right\",\n ariaLabel: nextLabel.value,\n disabled: nextDisabled.value,\n onClick: onNext\n }, null, 8, [\"ariaLabel\", \"disabled\"]),\n view.value === \"day\" ? (openBlock(), createBlock(_sfc_main$1s, {\n key: 0,\n variant: \"transparent\",\n size: \"small\",\n \"leading-icon\": \"chevron-right-double\",\n ariaLabel: \"Next year\",\n disabled: nextYearDisabled.value,\n onClick: onNextYear\n }, null, 8, [\"disabled\"])) : createCommentVNode(\"\", true)\n ])\n ]),\n createElementVNode(\"div\", _hoisted_6$4, [\n view.value === \"day\" ? (openBlock(), createBlock(DatePickerDayGrid, {\n key: 0,\n ref_key: \"dayGridRef\",\n ref: dayGridRef,\n \"model-value\": modelValue.value,\n \"min-date\": __props.minDate,\n \"max-date\": __props.maxDate,\n \"focus-year\": focusYear.value,\n \"focus-month\": focusMonth.value,\n onDateSelect: onSelectDate,\n \"onUpdate:focusYear\": _cache[0] || (_cache[0] = ($event) => focusYear.value = $event),\n \"onUpdate:focusMonth\": _cache[1] || (_cache[1] = ($event) => focusMonth.value = $event)\n }, null, 8, [\"model-value\", \"min-date\", \"max-date\", \"focus-year\", \"focus-month\"])) : view.value === \"month\" ? (openBlock(), createBlock(DatePickerMonthGrid, {\n key: 1,\n ref_key: \"monthGridRef\",\n ref: monthGridRef,\n \"model-value\": modelValue.value,\n \"min-date\": __props.minDate,\n \"max-date\": __props.maxDate,\n \"focus-year\": focusYear.value,\n \"focus-month\": focusMonth.value,\n onMonthSelect: onSelectMonth,\n \"onUpdate:focusYear\": _cache[2] || (_cache[2] = ($event) => focusYear.value = $event)\n }, null, 8, [\"model-value\", \"min-date\", \"max-date\", \"focus-year\", \"focus-month\"])) : (openBlock(), createBlock(DatePickerYearGrid, {\n key: 2,\n ref_key: \"yearGridRef\",\n ref: yearGridRef,\n \"model-value\": modelValue.value,\n \"min-date\": __props.minDate,\n \"max-date\": __props.maxDate,\n \"focus-year\": focusYear.value,\n onYearSelect: onSelectYear,\n \"onUpdate:focusYear\": _cache[3] || (_cache[3] = ($event) => focusYear.value = $event)\n }, null, 8, [\"model-value\", \"min-date\", \"max-date\", \"focus-year\"]))\n ])\n ]);\n };\n }\n});\n\nconst KdsDatePicker = /* @__PURE__ */ _export_sfc(_sfc_main$M, [[\"__scopeId\", \"data-v-e46d7e18\"]]);\n\nconst YEAR_END_INDEX = 4;\nconst MONTH_START_INDEX = 4;\nconst MONTH_END_INDEX = 6;\nconst DAY_START_INDEX = 6;\nconst MASK_CONFIG = {\n template: [\"Y\", \"Y\", \"Y\", \"Y\", \"-\", \"M\", \"M\", \"-\", \"D\", \"D\"],\n segments: [\n {\n start: 0,\n end: 3,\n template: [\"Y\", \"Y\", \"Y\", \"Y\"],\n min: 0,\n max: 9999\n },\n {\n start: 5,\n end: 6,\n template: [\"M\", \"M\"],\n min: 1,\n max: 12\n },\n {\n start: 8,\n end: 9,\n template: [\"D\", \"D\"],\n min: 1,\n max: 31\n }\n ],\n parsePastedText: (text) => {\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(text)) {\n return text;\n }\n if (/^\\d{8}$/.test(text)) {\n return `${text.slice(0, YEAR_END_INDEX)}-${text.slice(MONTH_START_INDEX, MONTH_END_INDEX)}-${text.slice(DAY_START_INDEX)}`;\n }\n return null;\n }\n};\nconst EMPTY_DISPLAY_VALUE = getInputSegmentsTemplateValue(MASK_CONFIG);\nconst useDateInputMask = (modelValue) => {\n const displayValue = ref(\n modelValue.value?.toString({ calendarName: \"never\" }) ?? EMPTY_DISPLAY_VALUE\n );\n let syncingFromDisplay = false;\n let syncingFromModel = false;\n const isEmpty = computed(\n () => isInputSegmentsEmpty(displayValue.value, MASK_CONFIG)\n );\n const isComplete = computed(\n () => isInputSegmentsComplete(displayValue.value, MASK_CONFIG)\n );\n const parsedDate = computed(() => {\n if (!isComplete.value) {\n return null;\n }\n try {\n return Un.PlainDate.from(displayValue.value, {\n overflow: \"reject\"\n });\n } catch {\n return null;\n }\n });\n const isValidDate = computed(() => parsedDate.value !== null);\n watch(modelValue, (value) => {\n if (syncingFromDisplay) {\n return;\n }\n syncingFromModel = true;\n displayValue.value = value?.toString({ calendarName: \"never\" }) ?? EMPTY_DISPLAY_VALUE;\n nextTick(() => {\n syncingFromModel = false;\n });\n });\n watch(displayValue, () => {\n if (syncingFromModel) {\n return;\n }\n syncingFromDisplay = true;\n if (isEmpty.value || !isComplete.value) {\n modelValue.value = null;\n } else if (parsedDate.value !== null) {\n modelValue.value = parsedDate.value;\n }\n nextTick(() => {\n syncingFromDisplay = false;\n });\n });\n return {\n displayValue,\n isEmpty,\n isComplete,\n isValidDate,\n parsedDate,\n segments: MASK_CONFIG\n };\n};\n\nconst incompleteDateMessage = \"Invalid date format. Please provide year (YYYY), month (MM), and day (DD).\";\nconst MONTH_NAME_SAMPLE_YEAR = 2001;\nconst _sfc_main$L = /* @__PURE__ */ defineComponent({\n __name: \"KdsDateInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean },\n preserveSubTextSpace: { type: Boolean },\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n minDate: {},\n maxDate: {}\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const baseInput = useTemplateRef(\"baseInput\");\n const popoverIsVisible = ref(false);\n const popoverRef = useTemplateRef(\"popoverRef\");\n const datePickerRef = useTemplateRef(\"datePickerRef\");\n const { displayValue, isEmpty, isComplete, isValidDate, parsedDate, segments } = useDateInputMask(modelValue);\n const clampToRange = (date) => {\n if (__props.minDate && Un.PlainDate.compare(date, __props.minDate) < 0) {\n return __props.minDate;\n }\n if (__props.maxDate && Un.PlainDate.compare(date, __props.maxDate) > 0) {\n return __props.maxDate;\n }\n return date;\n };\n const inputError = ref(false);\n const monthFormatter = new Intl.DateTimeFormat(\"en-US\", {\n month: \"long\",\n timeZone: \"UTC\"\n });\n const invalidDateMessage = computed(() => {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(displayValue.value);\n if (!match) {\n return \"This date doesn't exist.\";\n }\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n try {\n const yearMonth = Un.PlainYearMonth.from({ year, month });\n if (day > yearMonth.daysInMonth) {\n const monthName = monthFormatter.format(\n Date.UTC(MONTH_NAME_SAMPLE_YEAR, month - 1, 1)\n );\n return `${monthName} ${year} only has ${yearMonth.daysInMonth} days.`;\n }\n } catch {\n }\n return \"This date doesn't exist.\";\n });\n const effectiveError = computed(() => __props.error || inputError.value);\n const effectiveSubText = computed(() => {\n if (!inputError.value) {\n return __props.subText;\n }\n return isComplete.value ? invalidDateMessage.value : incompleteDateMessage;\n });\n const onDatePickerInput = (date) => {\n modelValue.value = date;\n inputError.value = false;\n popoverIsVisible.value = false;\n };\n watch(popoverIsVisible, async (visible) => {\n if (visible) {\n await nextTick();\n datePickerRef.value?.focus();\n }\n });\n const isToggling = ref(false);\n const onTextInputBlur = () => {\n if (isToggling.value) {\n baseInput.value?.focus();\n return;\n }\n if (isEmpty.value) {\n inputError.value = false;\n return;\n }\n const valid = isComplete.value && isValidDate.value;\n inputError.value = !valid;\n if (valid && parsedDate.value) {\n const clamped = clampToRange(parsedDate.value);\n if (!parsedDate.value.equals(clamped)) {\n displayValue.value = clamped.toString({ calendarName: \"never\" });\n }\n }\n };\n watch([isEmpty, isComplete, isValidDate], () => {\n if (inputError.value && (isEmpty.value || isComplete.value && isValidDate.value)) {\n inputError.value = false;\n }\n });\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(_ctx.$props, {\n error: effectiveError.value,\n \"sub-text\": effectiveSubText.value\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: unref(displayValue),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => isRef(displayValue) ? displayValue.value = $event : null),\n segments: unref(segments),\n type: \"text\",\n inputmode: \"numeric\",\n disabled: __props.disabled,\n error: effectiveError.value,\n autocomplete: __props.autocomplete,\n style: popoverRef.value?.anchorStyle,\n \"aria-controls\": popoverRef.value?.popoverId,\n onBlur: onTextInputBlur\n }), {\n trailing: withCtx(() => [\n createVNode(_sfc_main$1p, {\n modelValue: popoverIsVisible.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => popoverIsVisible.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"calendar\",\n ariaLabel: \"Date picker\",\n disabled: __props.disabled,\n \"aria-controls\": popoverRef.value?.popoverId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": popoverIsVisible.value,\n title: popoverIsVisible.value ? \"Close date picker\" : \"Open date picker\",\n onPointerdown: _cache[1] || (_cache[1] = ($event) => isToggling.value = true),\n onPointerup: _cache[2] || (_cache[2] = ($event) => isToggling.value = false),\n onPointerleave: _cache[3] || (_cache[3] = ($event) => isToggling.value = false),\n onPointercancel: _cache[4] || (_cache[4] = ($event) => isToggling.value = false)\n }, null, 8, [\"modelValue\", \"disabled\", \"aria-controls\", \"aria-expanded\", \"title\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"segments\", \"disabled\", \"error\", \"autocomplete\", \"style\", \"aria-controls\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverRef\",\n ref: popoverRef,\n modelValue: popoverIsVisible.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event) => popoverIsVisible.value = $event),\n placement: \"bottom-right\",\n role: \"dialog\",\n \"aria-label\": \"Date picker\"\n }, {\n default: withCtx(() => [\n popoverIsVisible.value ? (openBlock(), createBlock(KdsDatePicker, {\n key: 0,\n ref_key: \"datePickerRef\",\n ref: datePickerRef,\n \"model-value\": modelValue.value,\n \"min-date\": __props.minDate,\n \"max-date\": __props.maxDate,\n \"onUpdate:modelValue\": onDatePickerInput\n }, null, 8, [\"model-value\", \"min-date\", \"max-date\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 16, [\"error\", \"sub-text\"]);\n };\n }\n});\n\nconst _hoisted_1$w = { class: \"kds-date-time-format-popover\" };\nconst _sfc_main$K = /* @__PURE__ */ defineComponent({\n __name: \"DateTimeFormatPopover\",\n props: /* @__PURE__ */ mergeModels({\n allDefaultFormats: {},\n allowedFormats: {}\n }, {\n \"selection\": { default: \"\" },\n \"selectionModifiers\": {}\n }),\n emits: [\"update:selection\"],\n setup(__props) {\n const props = __props;\n const selection = useModel(__props, \"selection\");\n const temporalTypeToModeLabel = {\n DATE: \"Date\",\n DATE_TIME: \"Date & Time\",\n TIME: \"Time\",\n ZONED_DATE_TIME: \"Zoned Date & Time\"\n };\n const categoryToLocaleLabel = {\n RECENT: \"Recent\",\n STANDARD: \"ISO\",\n EUROPEAN: \"European\",\n AMERICAN: \"United States\"\n };\n const typedDateFormats = computed(() => {\n const entries = props.allDefaultFormats;\n if (props.allowedFormats === void 0) {\n return entries;\n }\n if (props.allowedFormats.length === 0) {\n return [];\n }\n const allowed = new Set(props.allowedFormats);\n return entries.filter((entry) => allowed.has(entry.temporalType));\n });\n const modeOptions = computed(() => {\n const seen = /* @__PURE__ */ new Set();\n const options = [];\n for (const entry of typedDateFormats.value) {\n const label = temporalTypeToModeLabel[entry.temporalType];\n if (!seen.has(label)) {\n seen.add(label);\n options.push(label);\n }\n }\n return options;\n });\n const localeOptions = computed(() => {\n const recent = categoryToLocaleLabel.RECENT;\n const seen = /* @__PURE__ */ new Set();\n const options = [recent];\n seen.add(recent);\n for (const entry of typedDateFormats.value) {\n const label = categoryToLocaleLabel[entry.category];\n if (!seen.has(label)) {\n seen.add(label);\n options.push(label);\n }\n }\n return options;\n });\n const selectedFormatEntry = computed(() => {\n if (!selection.value) {\n return null;\n }\n return typedDateFormats.value.find((entry) => entry.format === selection.value) ?? null;\n });\n const selectedMode = ref(void 0);\n const selectedLocale = ref(void 0);\n const selectedModeFromModel = computed(() => {\n const entry = selectedFormatEntry.value;\n return entry ? temporalTypeToModeLabel[entry.temporalType] : null;\n });\n const selectedLocaleFromModel = computed(() => {\n const entry = selectedFormatEntry.value;\n return entry ? categoryToLocaleLabel[entry.category] : null;\n });\n const effectiveSelectedMode = computed(() => {\n const modes = modeOptions.value;\n if (modes.length === 0) {\n return \"\";\n }\n const manual = selectedMode.value;\n if (manual && modes.includes(manual)) {\n return manual;\n }\n const fromModel = selectedModeFromModel.value;\n if (fromModel && modes.includes(fromModel)) {\n return fromModel;\n }\n return modes[0];\n });\n const effectiveSelectedLocale = computed(() => {\n const locales = localeOptions.value;\n if (locales.length === 0) {\n return \"\";\n }\n const manual = selectedLocale.value;\n if (manual && locales.includes(manual)) {\n return manual;\n }\n const fromModel = selectedLocaleFromModel.value;\n if (fromModel && locales.includes(fromModel)) {\n return fromModel;\n }\n return locales[0];\n });\n const internalOptionsByModeAndLocale = computed(() => {\n const map = /* @__PURE__ */ new Map();\n for (const entry of typedDateFormats.value) {\n const modeLabel = temporalTypeToModeLabel[entry.temporalType];\n const localeLabel = categoryToLocaleLabel[entry.category];\n const key = `${modeLabel}__${localeLabel}`;\n const options = map.get(key) ?? [];\n options.push({\n id: encodeURIComponent(entry.format),\n text: entry.format,\n subText: entry.example\n });\n map.set(key, options);\n }\n return map;\n });\n const possibleFormats = computed(() => {\n const mode = effectiveSelectedMode.value;\n const locale = effectiveSelectedLocale.value;\n if (!mode || !locale) {\n return [];\n }\n const key = `${mode}__${locale}`;\n const options = internalOptionsByModeAndLocale.value.get(key) ?? [];\n return options.map((option) => ({\n ...option,\n selected: option.id === encodeURIComponent(selection.value)\n }));\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$w, [\n modeOptions.value.length > 1 ? (openBlock(), createBlock(KdsValueSwitch, {\n key: 0,\n \"model-value\": effectiveSelectedMode.value,\n size: \"small\",\n \"possible-values\": modeOptions.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = (value) => {\n selectedMode.value = value;\n })\n }, null, 8, [\"model-value\", \"possible-values\"])) : createCommentVNode(\"\", true),\n localeOptions.value.length > 1 ? (openBlock(), createBlock(KdsValueSwitch, {\n key: 1,\n \"model-value\": effectiveSelectedLocale.value,\n size: \"small\",\n \"possible-values\": localeOptions.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = (value) => {\n selectedLocale.value = value;\n })\n }, null, 8, [\"model-value\", \"possible-values\"])) : createCommentVNode(\"\", true),\n createVNode(unref(KdsListContainer), {\n class: \"kds-date-time-format-popover-list\",\n \"aria-label\": \"Date/time formats\",\n variant: \"large\",\n \"possible-values\": possibleFormats.value,\n \"empty-text\": \"No recently used formats\",\n onItemClick: _cache[2] || (_cache[2] = ($event) => $event && (selection.value = decodeURIComponent($event)))\n }, null, 8, [\"possible-values\"])\n ]);\n };\n }\n});\n\nconst DateTimeFormatPopover = /* @__PURE__ */ _export_sfc(_sfc_main$K, [[\"__scopeId\", \"data-v-8c697d02\"]]);\n\nconst _sfc_main$J = /* @__PURE__ */ defineComponent({\n __name: \"KdsDateTimeFormatInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: { default: \"Format\" },\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n allowedFormats: {},\n allDefaultFormats: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\", \"placeholder\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const open = ref(false);\n const popoverEl = useTemplateRef(\"popoverEl\");\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createElementVNode(\"div\", {\n style: normalizeStyle(popoverEl.value?.anchorStyle)\n }, [\n createVNode(BaseInput, mergeProps(slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event),\n type: \"text\",\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n validating: __props.validating,\n autocomplete: props.autocomplete\n }), {\n trailing: withCtx(() => [\n createVNode(unref(_sfc_main$1p), {\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => open.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"date-time\",\n ariaLabel: \"Open date/time format picker\",\n \"aria-controls\": popoverEl.value?.popoverId,\n \"aria-expanded\": open.value,\n \"aria-haspopup\": \"dialog\",\n disabled: __props.disabled,\n title: open.value ? \"Close date/time format picker\" : \"Open date/time format picker\"\n }, null, 8, [\"modelValue\", \"aria-controls\", \"aria-expanded\", \"disabled\", \"title\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"validating\", \"autocomplete\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => open.value = $event),\n placement: \"bottom-right\",\n \"aria-label\": \"Date time format selection dialog\"\n }, {\n default: withCtx(() => [\n createVNode(DateTimeFormatPopover, {\n selection: modelValue.value,\n \"all-default-formats\": props.allDefaultFormats,\n \"allowed-formats\": props.allowedFormats,\n \"onUpdate:selection\": _cache[2] || (_cache[2] = ($event) => {\n modelValue.value = $event;\n open.value = false;\n })\n }, null, 8, [\"selection\", \"all-default-formats\", \"allowed-formats\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 4)\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst kdsTemporalType = {\n DATE: \"DATE\",\n TIME: \"TIME\",\n DATE_TIME: \"DATE_TIME\",\n ZONED_DATE_TIME: \"ZONED_DATE_TIME\"\n};\nconst kdsTemporalTypes = Object.values(kdsTemporalType);\nconst kdsDateFormatCategory = {\n RECENT: \"RECENT\",\n STANDARD: \"STANDARD\",\n EUROPEAN: \"EUROPEAN\",\n AMERICAN: \"AMERICAN\"\n};\nconst kdsDateFormatCategories = Object.values(kdsDateFormatCategory);\n\nconst escapeRegex = (value) => value.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, String.raw`\\$&`);\nconst wildcardToRegexBody = (pattern) => {\n let body = \"\";\n for (const char of pattern) {\n if (char === \"*\") {\n body += \".*\";\n continue;\n }\n if (char === \"?\") {\n body += \".\";\n continue;\n }\n body += escapeRegex(char);\n }\n return body;\n};\nconst buildRegexFromPatternInput = (input, options) => {\n const body = options.useRegex ? input : wildcardToRegexBody(input);\n const grouped = `(?:${body})`;\n const withCase = options.caseSensitive ? grouped : `(?i:${grouped})`;\n if (!options.excludeMatches) {\n return withCase;\n }\n return `^(?!.*${withCase}).*$`;\n};\n\nconst _sfc_main$I = /* @__PURE__ */ defineComponent({\n __name: \"KdsPatternInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n autocomplete: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {},\n \"caseSensitive\": { type: Boolean, ...{ default: false } },\n \"caseSensitiveModifiers\": {},\n \"excludeMatches\": { type: Boolean, ...{\n default: false\n } },\n \"excludeMatchesModifiers\": {},\n \"useRegex\": { type: Boolean, ...{ default: false } },\n \"useRegexModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"update:regex\"], [\"update:modelValue\", \"update:caseSensitive\", \"update:excludeMatches\", \"update:useRegex\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const emit = __emit;\n const modelValue = useModel(__props, \"modelValue\");\n const caseSensitive = useModel(__props, \"caseSensitive\");\n const excludeMatches = useModel(__props, \"excludeMatches\");\n const useRegex = useModel(__props, \"useRegex\");\n watch(\n [modelValue, caseSensitive, excludeMatches, useRegex],\n ([value, cs, em, ur]) => {\n emit(\n \"update:regex\",\n buildRegexFromPatternInput(value, {\n caseSensitive: cs,\n excludeMatches: em,\n useRegex: ur\n })\n );\n },\n { immediate: true }\n );\n const caseSensitiveTitle = computed(\n () => caseSensitive.value ? \"Match case-insensitive\" : \"Match case-sensitive\"\n );\n const excludeMatchesTitle = computed(\n () => excludeMatches.value ? \"Include matches\" : \"Exclude matches\"\n );\n const patternModeTitle = computed(\n () => useRegex.value ? \"Use wildcard pattern\" : \"Use regex pattern\"\n );\n const baseInput = useTemplateRef(\"baseInput\");\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => modelValue.value = $event),\n type: \"text\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: props.autocomplete,\n \"leading-icon\": \"filter\",\n clearable: \"\"\n }), {\n trailing: withCtx(() => [\n createVNode(_sfc_main$1p, {\n modelValue: caseSensitive.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => caseSensitive.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"case-sensitive\",\n title: caseSensitiveTitle.value,\n ariaLabel: \"Case sensitivity\",\n disabled: __props.disabled\n }, null, 8, [\"modelValue\", \"title\", \"disabled\"]),\n createVNode(_sfc_main$1p, {\n modelValue: excludeMatches.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => excludeMatches.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"arrows-order\",\n title: excludeMatchesTitle.value,\n ariaLabel: \"Exclude matches\",\n disabled: __props.disabled\n }, null, 8, [\"modelValue\", \"title\", \"disabled\"]),\n createVNode(_sfc_main$1p, {\n modelValue: useRegex.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => useRegex.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"regex\",\n title: patternModeTitle.value,\n ariaLabel: \"Regex mode\",\n disabled: __props.disabled\n }, null, 8, [\"modelValue\", \"title\", \"disabled\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\"])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst _sfc_main$H = /* @__PURE__ */ defineComponent({\n __name: \"KdsSearchInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: { default: \"Search\" },\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n results: {},\n resultsMaxHeight: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"focus\", \"blur\", \"keydown\", \"resultClick\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const KdsPopover = defineAsyncComponent(\n () => Promise.resolve().then(() => KdsPopover$1)\n );\n const KdsListContainer = defineAsyncComponent(\n () => Promise.resolve().then(() => KdsListContainer$1)\n );\n const props = createPropsRestProxy(__props, [\"placeholder\", \"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const emit = __emit;\n const baseInput = useTemplateRef(\"baseInput\");\n const popoverEl = useTemplateRef(\"popover\");\n const listContainerEl = useTemplateRef(\"listContainer\");\n const resultsOpen = ref(false);\n const resultsId = useId();\n const onKeyDown = (event) => {\n if (resultsOpen.value) {\n listContainerEl.value?.handleKeydown(event);\n }\n emit(\"keydown\", event);\n };\n const onFocus = (event) => {\n if (props.results) {\n resultsOpen.value = true;\n listContainerEl.value?.handleFocus();\n }\n emit(\"focus\", event);\n };\n const onBlur = (event) => {\n if (resultsOpen.value) {\n resultsOpen.value = false;\n listContainerEl.value?.handleBlur();\n }\n emit(\"blur\", event);\n };\n const onClick = () => {\n if (props.results && !resultsOpen.value) {\n resultsOpen.value = true;\n listContainerEl.value?.handleFocus();\n }\n };\n const maxHeightStyle = computed(() => {\n if (!props.resultsMaxHeight) {\n return {};\n }\n return {\n maxHeight: props.resultsMaxHeight,\n overflowY: \"auto\"\n };\n });\n const onResultClick = (itemId) => {\n resultsOpen.value = false;\n listContainerEl.value?.handleBlur();\n emit(\"resultClick\", itemId);\n };\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, {\n id: __props.id,\n label: __props.label,\n \"aria-label\": __props.ariaLabel,\n description: __props.description,\n \"sub-text\": __props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n type: \"search\",\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n autocomplete: __props.autocomplete,\n \"leading-icon\": \"search\",\n clearable: true,\n style: popoverEl.value?.anchorStyle,\n role: __props.results ? \"combobox\" : void 0,\n \"aria-activedescendant\": resultsOpen.value ? listContainerEl.value?.activeDescendant : void 0,\n \"aria-haspopup\": __props.results ? \"listbox\" : void 0,\n \"aria-controls\": __props.results ? unref(resultsId) : void 0,\n \"aria-expanded\": __props.results ? resultsOpen.value : void 0,\n onKeydown: onKeyDown,\n onFocus,\n onBlur,\n onClick\n }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"autocomplete\", \"style\", \"role\", \"aria-activedescendant\", \"aria-haspopup\", \"aria-controls\", \"aria-expanded\"]),\n __props.results ? (openBlock(), createBlock(unref(KdsPopover), {\n key: 0,\n ref: \"popover\",\n modelValue: resultsOpen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => resultsOpen.value = $event),\n \"full-width\": \"\",\n \"max-inline-size\": \"anchor-size(width)\",\n \"popover-type\": \"manual\",\n \"aria-label\": \"Search results container\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: \"kds-search-results-container\",\n style: normalizeStyle(maxHeightStyle.value)\n }, [\n createVNode(unref(KdsListContainer), {\n id: unref(resultsId),\n ref: \"listContainer\",\n variant: \"large\",\n \"possible-values\": __props.results,\n \"controlled-externally\": \"\",\n \"allow-no-selection\": \"\",\n \"item-focus-strategy\": \"noop\",\n \"empty-text\": \"No search results\",\n \"aria-label\": \"Search results list\",\n onItemClick: onResultClick\n }, null, 8, [\"id\", \"possible-values\"])\n ], 4)\n ]),\n _: 1\n }, 8, [\"modelValue\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"aria-label\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsSearchInput = /* @__PURE__ */ _export_sfc(_sfc_main$H, [[\"__scopeId\", \"data-v-aec3e3d0\"]]);\n\nconst _hoisted_1$v = [\"rows\", \"placeholder\", \"disabled\", \"autocomplete\"];\nconst DEFAULT_ROWS = 3;\nconst _sfc_main$G = /* @__PURE__ */ defineComponent({\n __name: \"KdsTextarea\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: { default: \"\" },\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n rows: { default: () => DEFAULT_ROWS }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"placeholder\", \"rows\", \"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const normalizedRows = computed(() => Math.max(1, __props.rows));\n const modelValue = useModel(__props, \"modelValue\");\n const textareaElement = useTemplateRef(\"textareaElement\");\n function resize() {\n const element = textareaElement.value;\n if (!element) {\n return;\n }\n requestAnimationFrame(() => {\n if (!textareaElement.value) {\n return;\n }\n element.style.height = \"auto\";\n const scrollHeight = element.scrollHeight;\n const offsetHeight = element.offsetHeight;\n if (scrollHeight <= offsetHeight) {\n return;\n }\n element.style.height = `${scrollHeight}px`;\n });\n }\n useResizeObserver(textareaElement, resize);\n watch(modelValue, resize, { immediate: true });\n __expose({\n focus: (options) => {\n textareaElement.value?.focus(options);\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx((slotProps) => [\n withDirectives(createElementVNode(\"textarea\", mergeProps(slotProps, {\n ref_key: \"textareaElement\",\n ref: textareaElement,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n class: { invalid: __props.error },\n rows: normalizedRows.value,\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n autocomplete: props.autocomplete\n }), null, 16, _hoisted_1$v), [\n [vModelText, modelValue.value]\n ])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$G, [[\"__scopeId\", \"data-v-36211819\"]]);\n\nconst _hoisted_1$u = { class: \"kds-time-picker\" };\nconst _hoisted_2$i = { class: \"kds-time-picker-fields\" };\nconst _hoisted_3$e = { class: \"kds-time-picker-fields\" };\nconst _hoisted_4$c = {\n key: 0,\n class: \"kds-time-picker-fields\"\n};\nconst _hoisted_5$5 = {\n key: 1,\n class: \"kds-time-picker-actions\"\n};\nconst _hoisted_6$3 = {\n key: 2,\n class: \"kds-time-picker-actions\"\n};\nconst MAX_HOUR = 23;\nconst MAX_MINUTE = 59;\nconst MAX_SECOND = 59;\nconst MAX_MILLISECOND = 999;\nconst _sfc_main$F = /* @__PURE__ */ defineComponent({\n __name: \"TimePicker\",\n props: /* @__PURE__ */ mergeModels({\n maxGranularity: {}\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {},\n \"granularity\": {\n default: \"minute\"\n },\n \"granularityModifiers\": {}\n }),\n emits: [\"update:modelValue\", \"update:granularity\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const granularity = useModel(__props, \"granularity\");\n const hourRef = useTemplateRef(\"hourInput\");\n const secondRef = useTemplateRef(\"secondInput\");\n const millisecondRef = useTemplateRef(\"millisecondInput\");\n const clamp = (value, min, max) => {\n const rounded = Number.isFinite(value) ? Math.round(value) : 0;\n return Math.max(min, Math.min(max, rounded));\n };\n const showSecondInput = computed(() => granularity.value !== \"minute\");\n const showMillisecondInput = computed(\n () => granularity.value === \"millisecond\"\n );\n const writeTime = (overrides = {}) => {\n modelValue.value = Un.PlainTime.from({\n hour: clamp(overrides.hour ?? modelValue.value?.hour ?? 0, 0, MAX_HOUR),\n minute: clamp(\n overrides.minute ?? modelValue.value?.minute ?? 0,\n 0,\n MAX_MINUTE\n ),\n second: showSecondInput.value ? clamp(overrides.second ?? modelValue.value?.second ?? 0, 0, MAX_SECOND) : 0,\n millisecond: showMillisecondInput.value ? clamp(\n overrides.millisecond ?? modelValue.value?.millisecond ?? 0,\n 0,\n MAX_MILLISECOND\n ) : 0\n });\n };\n const hour = computed({\n get: () => modelValue.value?.hour ?? 0,\n set: (value) => writeTime({ hour: value })\n });\n const minute = computed({\n get: () => modelValue.value?.minute ?? 0,\n set: (value) => writeTime({ minute: value })\n });\n const second = computed({\n get: () => modelValue.value?.second ?? 0,\n set: (value) => writeTime({ second: value })\n });\n const millisecond = computed({\n get: () => modelValue.value?.millisecond ?? 0,\n set: (value) => writeTime({ millisecond: value })\n });\n const addSeconds = async () => {\n granularity.value = \"second\";\n await nextTick();\n secondRef.value?.focus();\n };\n const addMilliseconds = async () => {\n granularity.value = \"millisecond\";\n await nextTick();\n millisecondRef.value?.focus();\n };\n const removeSeconds = () => {\n granularity.value = \"minute\";\n if (modelValue.value !== null) {\n writeTime({ second: 0, millisecond: 0 });\n }\n };\n const removeMilliseconds = () => {\n granularity.value = \"second\";\n if (modelValue.value !== null) {\n writeTime({ millisecond: 0 });\n }\n };\n const focus = () => {\n hourRef.value?.focus();\n };\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$u, [\n createElementVNode(\"div\", _hoisted_2$i, [\n createVNode(_sfc_main$V, {\n ref: \"hourInput\",\n modelValue: hour.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => hour.value = $event),\n class: \"kds-time-picker-field\",\n label: \"Hour\",\n min: 0,\n max: MAX_HOUR,\n step: 1\n }, null, 8, [\"modelValue\"]),\n createVNode(_sfc_main$V, {\n modelValue: minute.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => minute.value = $event),\n class: \"kds-time-picker-field\",\n label: \"Minute\",\n min: 0,\n max: MAX_MINUTE,\n step: 1\n }, null, 8, [\"modelValue\"])\n ]),\n __props.maxGranularity !== \"minute\" ? (openBlock(), createBlock(KdsDivider, {\n key: 0,\n class: \"kds-time-picker-divider\"\n })) : createCommentVNode(\"\", true),\n showSecondInput.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createElementVNode(\"div\", _hoisted_3$e, [\n createVNode(_sfc_main$V, {\n ref: \"secondInput\",\n modelValue: second.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => second.value = $event),\n class: \"kds-time-picker-field\",\n label: \"Second\",\n min: 0,\n max: MAX_SECOND,\n step: 1\n }, null, 8, [\"modelValue\"]),\n createVNode(_sfc_main$1s, {\n class: \"kds-time-picker-field-trash\",\n variant: \"transparent\",\n \"leading-icon\": \"trash\",\n ariaLabel: \"Remove seconds\",\n title: \"Remove seconds\",\n onClick: removeSeconds\n })\n ]),\n showMillisecondInput.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4$c, [\n createVNode(_sfc_main$V, {\n ref: \"millisecondInput\",\n modelValue: millisecond.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => millisecond.value = $event),\n class: normalizeClass([\n \"kds-time-picker-field\",\n \"kds-time-picker-field-millisecond\"\n ]),\n label: \"Millisecond\",\n min: 0,\n max: MAX_MILLISECOND,\n step: 1\n }, null, 8, [\"modelValue\"]),\n createVNode(_sfc_main$1s, {\n class: \"kds-time-picker-field-trash\",\n variant: \"transparent\",\n \"leading-icon\": \"trash\",\n ariaLabel: \"Remove milliseconds\",\n title: \"Remove milliseconds\",\n onClick: removeMilliseconds\n })\n ])) : __props.maxGranularity === \"millisecond\" ? (openBlock(), createElementBlock(\"div\", _hoisted_5$5, [\n createVNode(_sfc_main$1s, {\n variant: \"outlined\",\n size: \"small\",\n \"leading-icon\": \"plus\",\n label: \"Add milliseconds\",\n onClick: addMilliseconds\n })\n ])) : createCommentVNode(\"\", true)\n ], 64)) : __props.maxGranularity !== \"minute\" ? (openBlock(), createElementBlock(\"div\", _hoisted_6$3, [\n createVNode(_sfc_main$1s, {\n variant: \"outlined\",\n size: \"small\",\n \"leading-icon\": \"plus\",\n label: \"Add seconds\",\n onClick: addSeconds\n })\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst TimePicker = /* @__PURE__ */ _export_sfc(_sfc_main$F, [[\"__scopeId\", \"data-v-c2bc1234\"]]);\n\nconst HOURS_END_INDEX = 2;\nconst MINUTES_START_INDEX = 2;\nconst MINUTES_END_INDEX = 4;\nconst SECONDS_START_INDEX = 4;\nconst SECONDS_END_INDEX = 6;\nconst MILLIS_START_INDEX = 6;\nconst MILLIS_PAD_LENGTH = 3;\nconst buildMaskConfig = (granularity) => {\n if (granularity === \"minute\") {\n return {\n template: [\"H\", \"H\", \":\", \"M\", \"M\"],\n segments: [\n {\n start: 0,\n end: 1,\n template: [\"H\", \"H\"],\n min: 0,\n max: 23\n },\n {\n start: 3,\n end: 4,\n template: [\"M\", \"M\"],\n min: 0,\n max: 59\n }\n ],\n parsePastedText: (text) => {\n if (/^\\d{2}:\\d{2}$/.test(text)) {\n return text;\n }\n if (/^\\d{4}$/.test(text)) {\n return `${text.slice(0, HOURS_END_INDEX)}:${text.slice(MINUTES_START_INDEX)}`;\n }\n return null;\n }\n };\n }\n if (granularity === \"second\") {\n return {\n template: [\"H\", \"H\", \":\", \"M\", \"M\", \":\", \"S\", \"S\"],\n segments: [\n {\n start: 0,\n end: 1,\n template: [\"H\", \"H\"],\n min: 0,\n max: 23\n },\n {\n start: 3,\n end: 4,\n template: [\"M\", \"M\"],\n min: 0,\n max: 59\n },\n {\n start: 6,\n end: 7,\n template: [\"S\", \"S\"],\n min: 0,\n max: 59\n }\n ],\n parsePastedText: (text) => {\n if (/^\\d{2}:\\d{2}:\\d{2}$/.test(text)) {\n return text;\n }\n if (/^\\d{6}$/.test(text)) {\n return `${text.slice(0, HOURS_END_INDEX)}:${text.slice(MINUTES_START_INDEX, MINUTES_END_INDEX)}:${text.slice(SECONDS_START_INDEX)}`;\n }\n return null;\n }\n };\n }\n return {\n template: [\"H\", \"H\", \":\", \"M\", \"M\", \":\", \"S\", \"S\", \".\", \"F\", \"F\", \"F\"],\n segments: [\n {\n start: 0,\n end: 1,\n template: [\"H\", \"H\"],\n min: 0,\n max: 23\n },\n {\n start: 3,\n end: 4,\n template: [\"M\", \"M\"],\n min: 0,\n max: 59\n },\n {\n start: 6,\n end: 7,\n template: [\"S\", \"S\"],\n min: 0,\n max: 59\n },\n {\n start: 9,\n end: 11,\n template: [\"F\", \"F\", \"F\"],\n min: 0,\n max: 999\n }\n ],\n parsePastedText: (text) => {\n if (/^\\d{2}:\\d{2}:\\d{2}\\.\\d{3}$/.test(text)) {\n return text;\n }\n if (/^\\d{9}$/.test(text)) {\n return `${text.slice(0, HOURS_END_INDEX)}:${text.slice(MINUTES_START_INDEX, MINUTES_END_INDEX)}:${text.slice(SECONDS_START_INDEX, SECONDS_END_INDEX)}.${text.slice(MILLIS_START_INDEX)}`;\n }\n return null;\n }\n };\n};\nconst formatPlainTime = (time, granularity) => {\n if (!time) {\n return getInputSegmentsTemplateValue(buildMaskConfig(granularity));\n }\n const hours = String(time.hour).padStart(2, \"0\");\n const minutes = String(time.minute).padStart(2, \"0\");\n if (granularity === \"minute\") {\n return `${hours}:${minutes}`;\n }\n const seconds = String(time.second).padStart(2, \"0\");\n if (granularity === \"second\") {\n return `${hours}:${minutes}:${seconds}`;\n }\n const milliseconds = String(time.millisecond).padStart(\n MILLIS_PAD_LENGTH,\n \"0\"\n );\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n};\nconst useTimeInputMask = (modelValue, granularityRef) => {\n const segments = computed(() => buildMaskConfig(granularityRef.value));\n const displayValue = ref(\n formatPlainTime(modelValue.value, granularityRef.value)\n );\n let syncingFromDisplay = false;\n let syncingFromModel = false;\n const isEmpty = computed(\n () => isInputSegmentsEmpty(displayValue.value, segments.value)\n );\n const isComplete = computed(\n () => isInputSegmentsComplete(displayValue.value, segments.value)\n );\n const parsedTime = computed(() => {\n if (!isComplete.value) {\n return null;\n }\n try {\n const hour = Number(displayValue.value[0] + displayValue.value[1]);\n const minute = Number(displayValue.value[3] + displayValue.value[4]);\n const second = granularityRef.value === \"minute\" ? 0 : Number(displayValue.value[6] + displayValue.value[7]);\n const millisecond = granularityRef.value === \"millisecond\" ? Number(\n displayValue.value[9] + displayValue.value[10] + displayValue.value[11]\n ) : 0;\n return Un.PlainTime.from(\n { hour, minute, second, millisecond },\n { overflow: \"reject\" }\n );\n } catch {\n return null;\n }\n });\n const isValidTime = computed(() => parsedTime.value !== null);\n watch([modelValue, granularityRef], () => {\n if (syncingFromDisplay) {\n return;\n }\n syncingFromModel = true;\n displayValue.value = formatPlainTime(\n modelValue.value,\n granularityRef.value\n );\n nextTick(() => {\n syncingFromModel = false;\n });\n });\n watch(displayValue, () => {\n if (syncingFromModel) {\n return;\n }\n syncingFromDisplay = true;\n if (isEmpty.value || !isComplete.value) {\n modelValue.value = null;\n } else if (parsedTime.value !== null) {\n modelValue.value = parsedTime.value;\n }\n nextTick(() => {\n syncingFromDisplay = false;\n });\n });\n return {\n displayValue,\n isEmpty,\n isComplete,\n isValidTime,\n parsedTime,\n segments\n };\n};\n\nconst invalidTimeMessage = \"The entered time is invalid.\";\nconst _sfc_main$E = /* @__PURE__ */ defineComponent({\n __name: \"KdsTimeInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean },\n preserveSubTextSpace: { type: Boolean },\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n maxGranularity: { default: \"minute\" }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {},\n \"granularity\": {\n default: \"minute\"\n },\n \"granularityModifiers\": {}\n }),\n emits: [\"update:modelValue\", \"update:granularity\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const granularity = useModel(__props, \"granularity\");\n const baseInput = useTemplateRef(\"baseInput\");\n const popoverIsVisible = ref(false);\n const popoverRef = useTemplateRef(\"popoverRef\");\n const timePickerRef = useTemplateRef(\"timePickerRef\");\n const { displayValue, isEmpty, isComplete, isValidTime, segments } = useTimeInputMask(modelValue, granularity);\n const GRANULARITY_ORDER = {\n minute: 0,\n second: 1,\n millisecond: 2\n };\n watchEffect(() => {\n if (GRANULARITY_ORDER[granularity.value] > GRANULARITY_ORDER[__props.maxGranularity]) {\n granularity.value = __props.maxGranularity;\n }\n });\n const inputError = ref(false);\n const formatHint = computed(() => {\n if (granularity.value === \"second\") {\n return \"HH:MM:SS (e.g. 14:30:00)\";\n }\n if (granularity.value === \"millisecond\") {\n return \"HH:MM:SS.FFF (e.g. 14:30:00.000)\";\n }\n return \"HH:MM (e.g. 14:30)\";\n });\n const incompleteTimeMessage = computed(\n () => `Invalid time format. The expected time format is ${formatHint.value}.`\n );\n const effectiveError = computed(() => __props.error || inputError.value);\n const effectiveSubText = computed(() => {\n if (!inputError.value) {\n return __props.subText;\n }\n return isComplete.value ? invalidTimeMessage : incompleteTimeMessage.value;\n });\n watch(modelValue, () => {\n if (popoverIsVisible.value) {\n inputError.value = false;\n }\n });\n watch(popoverIsVisible, async (visible) => {\n if (visible) {\n await nextTick();\n timePickerRef.value?.focus();\n }\n });\n const isToggling = ref(false);\n const onTextInputBlur = () => {\n if (isToggling.value) {\n baseInput.value?.focus();\n return;\n }\n if (isEmpty.value) {\n inputError.value = false;\n return;\n }\n inputError.value = !isComplete.value || !isValidTime.value;\n };\n watch([isEmpty, isComplete, isValidTime], () => {\n if (inputError.value && (isEmpty.value || isComplete.value && isValidTime.value)) {\n inputError.value = false;\n }\n });\n __expose({\n focus: (options) => baseInput.value?.focus(options)\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(_ctx.$props, {\n error: effectiveError.value,\n \"sub-text\": effectiveSubText.value\n }), {\n default: withCtx((slotProps) => [\n createVNode(BaseInput, mergeProps({\n ref_key: \"baseInput\",\n ref: baseInput\n }, slotProps, {\n modelValue: unref(displayValue),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => isRef(displayValue) ? displayValue.value = $event : null),\n segments: unref(segments),\n type: \"text\",\n inputmode: \"numeric\",\n disabled: __props.disabled,\n error: effectiveError.value,\n autocomplete: __props.autocomplete,\n style: popoverRef.value?.anchorStyle,\n \"aria-controls\": popoverRef.value?.popoverId,\n onBlur: onTextInputBlur\n }), {\n trailing: withCtx(() => [\n createVNode(_sfc_main$1p, {\n modelValue: popoverIsVisible.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => popoverIsVisible.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"time\",\n ariaLabel: \"Time picker\",\n disabled: __props.disabled,\n \"aria-controls\": popoverRef.value?.popoverId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": popoverIsVisible.value,\n title: popoverIsVisible.value ? \"Close time picker\" : \"Open time picker\",\n onPointerdown: _cache[1] || (_cache[1] = ($event) => isToggling.value = true),\n onPointerup: _cache[2] || (_cache[2] = ($event) => isToggling.value = false),\n onPointerleave: _cache[3] || (_cache[3] = ($event) => isToggling.value = false),\n onPointercancel: _cache[4] || (_cache[4] = ($event) => isToggling.value = false)\n }, null, 8, [\"modelValue\", \"disabled\", \"aria-controls\", \"aria-expanded\", \"title\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"segments\", \"disabled\", \"error\", \"autocomplete\", \"style\", \"aria-controls\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverRef\",\n ref: popoverRef,\n modelValue: popoverIsVisible.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event) => popoverIsVisible.value = $event),\n placement: \"bottom-right\",\n role: \"dialog\",\n \"aria-label\": \"Time picker\"\n }, {\n default: withCtx(() => [\n popoverIsVisible.value ? (openBlock(), createBlock(TimePicker, {\n key: 0,\n ref_key: \"timePickerRef\",\n ref: timePickerRef,\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event) => modelValue.value = $event),\n granularity: granularity.value,\n \"onUpdate:granularity\": _cache[7] || (_cache[7] = ($event) => granularity.value = $event),\n \"max-granularity\": __props.maxGranularity\n }, null, 8, [\"modelValue\", \"granularity\", \"max-granularity\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 16, [\"error\", \"sub-text\"]);\n };\n }\n});\n\nconst kdsTimeInputGranularity = {\n MINUTE: \"minute\",\n SECOND: \"second\",\n MILLISECOND: \"millisecond\"\n};\nconst kdsTimeInputGranularities = Object.values(kdsTimeInputGranularity);\n\nconst kdsIntervalInputFormat = {\n DATE: \"date\",\n TIME: \"time\",\n DATE_OR_TIME: \"date_or_time\"\n};\nconst kdsIntervalInputFormats = Object.values(kdsIntervalInputFormat);\nconst kdsIntervalDirectionality = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\"\n};\nconst kdsIntervalDirectionalities = Object.values(\n kdsIntervalDirectionality\n);\n\nconst periodNumericKeys = [\n \"years\",\n \"months\",\n \"weeks\",\n \"days\"\n];\nconst durationNumericKeys = [\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n];\nconst MILLISECONDS_MAX = 999;\nconst getMax = (key) => key === \"milliseconds\" ? MILLISECONDS_MAX : Number.MAX_SAFE_INTEGER;\nconst extractDurationFields = (duration) => ({\n years: duration.years,\n months: duration.months,\n weeks: duration.weeks,\n days: duration.days,\n hours: duration.hours,\n minutes: duration.minutes,\n seconds: duration.seconds,\n milliseconds: duration.milliseconds\n});\nconst withDurationField = (duration, key, value) => Un.Duration.from({ ...extractDurationFields(duration), [key]: value });\nconst zeroDuration = Un.Duration.from({ years: 0 });\nconst createDefaultDuration = () => zeroDuration;\nconst classifyDuration = (duration) => {\n const abs = duration.abs();\n const hasDate = abs.years > 0 || abs.months > 0 || abs.weeks > 0 || abs.days > 0;\n const hasTime = abs.hours > 0 || abs.minutes > 0 || abs.seconds > 0 || abs.milliseconds > 0;\n if (hasTime && !hasDate) {\n return kdsIntervalInputFormat.TIME;\n }\n return kdsIntervalInputFormat.DATE;\n};\nconst formatPart = (value, unit) => {\n if (value === 0) {\n return \"\";\n }\n return value === 1 ? `${value} ${unit} ` : `${value} ${unit}s `;\n};\nconst formatDurationToHumanReadable = (duration, usedFormat) => {\n const abs = duration.abs();\n let output = \"\";\n if (usedFormat === kdsIntervalInputFormat.DATE) {\n const hasDateParts = abs.years > 0 || abs.months > 0 || abs.weeks > 0 || abs.days > 0;\n if (!hasDateParts) {\n return \"0 days\";\n }\n output += formatPart(abs.years, \"year\");\n output += formatPart(abs.months, \"month\");\n output += formatPart(abs.weeks, \"week\");\n output += formatPart(abs.days, \"day\");\n } else {\n const hasTimeParts = abs.hours > 0 || abs.minutes > 0 || abs.seconds > 0 || abs.milliseconds > 0;\n if (!hasTimeParts) {\n return \"0 seconds\";\n }\n output += formatPart(abs.hours, \"hour\");\n output += formatPart(abs.minutes, \"minute\");\n const milliSecondsZero = abs.milliseconds === 0;\n if (abs.seconds !== 0 || !milliSecondsZero) {\n if (milliSecondsZero) {\n output += formatPart(abs.seconds, \"second\");\n } else {\n output += `${abs.seconds}.${abs.milliseconds.toString().padStart(3, \"0\")} seconds `;\n }\n }\n }\n if (duration.sign < 0) {\n output = `-(${output.trim()})`;\n }\n return output.trim();\n};\nconst yearsPart = String.raw`(\\d+)\\s*y(?:ears?)?`;\nconst monthsPart = String.raw`(\\d+)\\s*m(?:o(?:nths?)?)?`;\nconst weeksPart = String.raw`(\\d+)\\s*w(?:eeks?)?`;\nconst daysPart = String.raw`(\\d+)\\s*d(?:ays?)?`;\nconst hoursPart = String.raw`(\\d+)\\s*h(?:ours?)?`;\nconst minutesPart = String.raw`(\\d+)\\s*m(?:in(?:s|utes?)?)?`;\nconst secondsPart = String.raw`(\\d+)(?:[,.](\\d{1,3}))?\\s*s(?:ec(?:s|onds?)?)?`;\nconst humanReadablePeriodRegex = new RegExp(\n String.raw`^(?:${yearsPart})?\\s*(?:${monthsPart})?\\s*(?:${weeksPart})?\\s*(?:${daysPart})?\\s*$`,\n \"i\"\n);\nconst humanReadableDurationRegex = new RegExp(\n String.raw`^(?:${hoursPart})?\\s*(?:${minutesPart})?\\s*(?:${secondsPart})?$`,\n \"i\"\n);\nconst negativeHumanReadablePeriodRegex = new RegExp(\n String.raw`^\\s*-\\s*\\(\\s*${humanReadablePeriodRegex.source.replaceAll(/[$^]/g, \"\")}\\s*\\)\\s*$`,\n \"i\"\n);\nconst negativeHumanReadablePeriodRegexWithSingleField = new RegExp(\n String.raw`^\\s*-\\s*(?:\\s*${yearsPart}|${monthsPart}|${weeksPart}|${daysPart})\\s*$`,\n \"i\"\n);\nconst negativeHumanReadableDurationRegex = new RegExp(\n String.raw`^\\s*-\\s*\\(\\s*${humanReadableDurationRegex.source.replaceAll(/[$^]/g, \"\")}\\s*\\)\\s*$`,\n \"i\"\n);\nconst negativeHumanReadableDurationRegexWithSingleField = new RegExp(\n String.raw`^\\s*-\\s*(?:\\s*${hoursPart}|${minutesPart}|${secondsPart})\\s*$`,\n \"i\"\n);\nconst extractPeriodFromMatch = (negative, match) => {\n const sign = negative ? -1 : 1;\n return Un.Duration.from({\n years: sign * parseInt(match[1] ?? \"0\", 10),\n months: sign * parseInt(match[2] ?? \"0\", 10),\n weeks: sign * parseInt(match[3] ?? \"0\", 10),\n days: sign * parseInt(match[4] ?? \"0\", 10)\n });\n};\nconst extractDurationFromMatch = (negative, match) => {\n const sign = negative ? -1 : 1;\n const milliseconds = parseInt(match[4]?.padEnd(3, \"0\") ?? \"0\", 10);\n return Un.Duration.from({\n hours: sign * parseInt(match[1] ?? \"0\", 10),\n minutes: sign * parseInt(match[2] ?? \"0\", 10),\n seconds: sign * parseInt(match[3] ?? \"0\", 10),\n milliseconds: sign * milliseconds\n });\n};\nconst parseHumanReadableInterval = (input) => {\n const trimmed = input?.trim();\n if (!trimmed) {\n return null;\n }\n const matchPositivePeriod = humanReadablePeriodRegex.exec(trimmed);\n const matchNegativePeriod = negativeHumanReadablePeriodRegex.exec(trimmed) ?? negativeHumanReadablePeriodRegexWithSingleField.exec(trimmed);\n const matchPositiveDuration = humanReadableDurationRegex.exec(trimmed);\n const matchNegativeDuration = negativeHumanReadableDurationRegex.exec(trimmed) ?? negativeHumanReadableDurationRegexWithSingleField.exec(trimmed);\n const matchPeriod = matchPositivePeriod ?? matchNegativePeriod;\n const matchDuration = matchPositiveDuration ?? matchNegativeDuration;\n const negative = (matchNegativePeriod ?? matchNegativeDuration) !== null;\n if (matchDuration && matchPeriod) {\n return null;\n }\n if (matchPeriod) {\n return extractPeriodFromMatch(negative, matchPeriod);\n }\n if (matchDuration) {\n return extractDurationFromMatch(negative, matchDuration);\n }\n return null;\n};\nconst parseISOInterval = (input) => {\n try {\n return Un.Duration.from(input.trim());\n } catch {\n return null;\n }\n};\nconst parseGenericInterval = (input) => parseISOInterval(input) ?? parseHumanReadableInterval(input);\nconst validateIntervalInput = (input, expectedFormat) => {\n const duration = parseGenericInterval(input);\n if (!duration) {\n return { valid: false };\n }\n const actualType = classifyDuration(duration);\n if (expectedFormat !== kdsIntervalInputFormat.DATE_OR_TIME && actualType !== expectedFormat) {\n return { valid: false };\n }\n return {\n valid: true,\n type: actualType,\n negative: duration.sign < 0,\n duration\n };\n};\nconst stripInactiveFields = (duration, usedFormat) => {\n const fields = extractDurationFields(duration);\n if (usedFormat === kdsIntervalInputFormat.DATE) {\n return Un.Duration.from({\n years: fields.years,\n months: fields.months,\n weeks: fields.weeks,\n days: fields.days\n });\n }\n return Un.Duration.from({\n hours: fields.hours,\n minutes: fields.minutes,\n seconds: fields.seconds,\n milliseconds: fields.milliseconds\n });\n};\nconst toTitleCase = (key) => key.charAt(0).toUpperCase() + key.slice(1).toLowerCase();\n\nconst _hoisted_1$t = { class: \"kds-interval-popover\" };\nconst _hoisted_2$h = { class: \"kds-interval-popover-header\" };\nconst _hoisted_3$d = { class: \"kds-interval-popover-content\" };\nconst _hoisted_4$b = { class: \"kds-interval-popover-grid\" };\nconst _sfc_main$D = /* @__PURE__ */ defineComponent({\n __name: \"IntervalInputPopover\",\n props: /* @__PURE__ */ mergeModels({\n format: {},\n allowDescending: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {},\n \"usedFormat\": {\n required: true\n },\n \"usedFormatModifiers\": {}\n }),\n emits: [\"update:modelValue\", \"update:usedFormat\"],\n setup(__props) {\n const props = __props;\n const modelValue = useModel(__props, \"modelValue\");\n const mode = useModel(__props, \"usedFormat\");\n const draft = ref(modelValue.value);\n const isNegative = ref(modelValue.value.sign < 0);\n let isInternalEmit = false;\n watch(\n () => modelValue.value,\n (next) => {\n if (isInternalEmit) {\n isInternalEmit = false;\n return;\n }\n draft.value = next;\n isNegative.value = next.sign < 0;\n }\n );\n watch(\n () => props.allowDescending,\n (allowed) => {\n if (!allowed && isNegative.value) {\n isNegative.value = false;\n if (draft.value.sign < 0) {\n draft.value = draft.value.negated();\n }\n }\n }\n );\n const activeFields = computed(() => extractDurationFields(draft.value.abs()));\n const direction = computed({\n get: () => isNegative.value ? kdsIntervalDirectionality.DESCENDING : kdsIntervalDirectionality.ASCENDING,\n set(value) {\n const wantNeg = value === kdsIntervalDirectionality.DESCENDING;\n if (wantNeg === isNegative.value) {\n return;\n }\n isNegative.value = wantNeg;\n if (draft.value.sign !== 0) {\n draft.value = draft.value.negated();\n }\n }\n });\n const updateField = (key, value) => {\n if (!Number.isFinite(value)) {\n return;\n }\n const signedValue = isNegative.value ? -value : value;\n draft.value = withDurationField(\n draft.value,\n key,\n signedValue\n );\n };\n const modeOptions = [\n { id: kdsIntervalInputFormat.DATE, leadingIcon: \"calendar\", title: \"Date\" },\n { id: kdsIntervalInputFormat.TIME, leadingIcon: \"time\", title: \"Time\" }\n ];\n const directionOptions = [\n { id: kdsIntervalDirectionality.ASCENDING, text: \"Forward\" },\n { id: kdsIntervalDirectionality.DESCENDING, text: \"Backward\" }\n ];\n const fieldLabels = {\n years: \"Year\",\n months: \"Month\",\n weeks: \"Week\",\n days: \"Day\",\n hours: \"Hour\",\n minutes: \"Minute\",\n seconds: \"Second\",\n milliseconds: \"Millisecond\"\n };\n watch([draft, mode], () => {\n const stripped = stripInactiveFields(draft.value, mode.value);\n if (stripped.toString() !== modelValue.value.toString()) {\n isInternalEmit = true;\n modelValue.value = stripped;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$t, [\n createElementVNode(\"div\", _hoisted_2$h, [\n _cache[2] || (_cache[2] = createElementVNode(\"span\", { class: \"kds-interval-popover-title\" }, \"Interval value\", -1)),\n props.format === unref(kdsIntervalInputFormat).DATE_OR_TIME ? (openBlock(), createBlock(unref(KdsValueSwitch), {\n key: 0,\n modelValue: mode.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => mode.value = $event),\n class: \"kds-interval-header-switch\",\n size: \"small\",\n \"possible-values\": modeOptions\n }, null, 8, [\"modelValue\"])) : createCommentVNode(\"\", true)\n ]),\n _cache[3] || (_cache[3] = createElementVNode(\"div\", { class: \"kds-interval-popover-divider\" }, null, -1)),\n createElementVNode(\"div\", _hoisted_3$d, [\n props.allowDescending ? (openBlock(), createBlock(unref(KdsValueSwitch), {\n key: 0,\n modelValue: direction.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => direction.value = $event),\n class: \"kds-interval-popover-direction-switch\",\n size: \"small\",\n variant: \"muted\",\n \"possible-values\": directionOptions\n }, null, 8, [\"modelValue\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4$b, [\n mode.value === unref(kdsIntervalInputFormat).DATE ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(periodNumericKeys), (key) => {\n return openBlock(), createBlock(unref(_sfc_main$V), {\n key,\n \"model-value\": activeFields.value[key],\n label: fieldLabels[key] ?? unref(toTitleCase)(key),\n min: 0,\n max: unref(getMax)(key),\n step: 1,\n \"onUpdate:modelValue\": ($event) => updateField(key, $event)\n }, null, 8, [\"model-value\", \"label\", \"max\", \"onUpdate:modelValue\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(durationNumericKeys), (key) => {\n return openBlock(), createBlock(unref(_sfc_main$V), {\n key,\n \"model-value\": activeFields.value[key],\n label: fieldLabels[key] ?? unref(toTitleCase)(key),\n min: 0,\n max: unref(getMax)(key),\n step: 1,\n \"onUpdate:modelValue\": ($event) => updateField(key, $event)\n }, null, 8, [\"model-value\", \"label\", \"max\", \"onUpdate:modelValue\"]);\n }), 128))\n ])\n ])\n ]);\n };\n }\n});\n\nconst IntervalInputPopover = /* @__PURE__ */ _export_sfc(_sfc_main$D, [[\"__scopeId\", \"data-v-02541fd1\"]]);\n\nconst _sfc_main$C = /* @__PURE__ */ defineComponent({\n __name: \"KdsIntervalInput\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n placeholder: {},\n disabled: { type: Boolean, default: false },\n autocomplete: {},\n format: { default: () => kdsIntervalInputFormat.DATE_OR_TIME },\n allowDescending: { type: Boolean, default: true }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\", \"allowDescending\", \"format\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const isPopoverOpen = ref(false);\n const isToggling = ref(false);\n const inputError = ref(false);\n const popoverRef = useTemplateRef(\"popoverEl\");\n const baseInputRef = useTemplateRef(\"baseInput\");\n const defaultFormat = kdsIntervalInputFormat.DATE;\n const resolveActiveFormat = (duration, fallback) => {\n if (__props.format === kdsIntervalInputFormat.DATE || __props.format === kdsIntervalInputFormat.TIME) {\n return __props.format;\n }\n return duration && !duration.blank ? classifyDuration(duration) : fallback;\n };\n const activeFormat = ref(\n resolveActiveFormat(modelValue.value, defaultFormat)\n );\n const inputValue = ref(\n modelValue.value ? formatDurationToHumanReadable(modelValue.value, activeFormat.value) : \"\"\n );\n const popoverModelValue = computed({\n get: () => modelValue.value ?? createDefaultDuration(),\n set: (value) => {\n modelValue.value = value;\n }\n });\n const isInputError = computed(() => __props.error || inputError.value);\n const isValidatingState = computed(\n () => __props.validating && !isInputError.value && !__props.disabled\n );\n const effectiveSubText = computed(() => {\n if (inputError.value) {\n return \"Invalid interval value\";\n }\n if (isValidatingState.value) {\n return props.subText || \"Validating...\";\n }\n return props.subText;\n });\n watch(inputValue, () => {\n inputError.value = false;\n });\n let isInternalUpdate = false;\n const commitTypedInput = () => {\n if (isToggling.value) {\n baseInputRef.value?.focus();\n return;\n }\n if (inputValue.value.trim().length === 0) {\n modelValue.value = null;\n activeFormat.value = resolveActiveFormat(null, defaultFormat);\n inputError.value = false;\n return;\n }\n const result = validateIntervalInput(inputValue.value, \"date_or_time\");\n if (!result.valid) {\n inputError.value = true;\n return;\n }\n if (!__props.allowDescending && result.negative) {\n inputError.value = true;\n return;\n }\n if (result.type !== activeFormat.value && __props.format !== kdsIntervalInputFormat.DATE_OR_TIME) {\n inputError.value = true;\n return;\n }\n inputError.value = false;\n isInternalUpdate = true;\n modelValue.value = result.duration;\n activeFormat.value = result.type;\n inputValue.value = formatDurationToHumanReadable(\n result.duration,\n result.type\n );\n };\n watch(\n () => modelValue.value,\n (next) => {\n if (isInternalUpdate) {\n isInternalUpdate = false;\n return;\n }\n if (!next) {\n inputValue.value = \"\";\n activeFormat.value = resolveActiveFormat(null, defaultFormat);\n inputError.value = false;\n return;\n }\n const nextFormat = resolveActiveFormat(next, activeFormat.value);\n inputValue.value = formatDurationToHumanReadable(next, nextFormat);\n activeFormat.value = nextFormat;\n inputError.value = false;\n }\n );\n watch(\n () => __props.format,\n (nextFormat) => {\n if (nextFormat === kdsIntervalInputFormat.DATE_OR_TIME) {\n return;\n }\n activeFormat.value = nextFormat;\n if (modelValue.value) {\n const stripped = stripInactiveFields(\n modelValue.value,\n nextFormat\n );\n isInternalUpdate = true;\n modelValue.value = stripped;\n inputValue.value = formatDurationToHumanReadable(\n stripped,\n nextFormat\n );\n }\n }\n );\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, mergeProps(props, {\n error: isInputError.value,\n validating: isValidatingState.value,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace,\n \"sub-text\": effectiveSubText.value\n }), {\n default: withCtx((slotProps) => [\n createElementVNode(\"div\", {\n style: normalizeStyle(popoverRef.value?.anchorStyle)\n }, [\n createVNode(BaseInput, mergeProps({ ref: \"baseInput\" }, slotProps, {\n modelValue: inputValue.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => inputValue.value = $event),\n type: \"text\",\n placeholder: props.placeholder,\n disabled: __props.disabled,\n error: isInputError.value,\n validating: isValidatingState.value,\n autocomplete: props.autocomplete,\n onBlur: commitTypedInput,\n onKeydown: withKeys(withModifiers(commitTypedInput, [\"prevent\"]), [\"enter\"])\n }), {\n trailing: withCtx(() => [\n createVNode(unref(_sfc_main$1p), {\n modelValue: isPopoverOpen.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => isPopoverOpen.value = $event),\n size: \"xsmall\",\n variant: \"outlined\",\n \"leading-icon\": \"interval\",\n \"aria-controls\": popoverRef.value?.popoverId,\n \"aria-expanded\": isPopoverOpen.value,\n \"aria-haspopup\": \"dialog\",\n disabled: __props.disabled,\n title: isPopoverOpen.value ? \"Close interval picker\" : \"Open interval picker\",\n ariaLabel: isPopoverOpen.value ? \"Close interval picker\" : \"Open interval picker\",\n onPointerdown: _cache[1] || (_cache[1] = ($event) => isToggling.value = true),\n onPointerup: _cache[2] || (_cache[2] = ($event) => isToggling.value = false),\n onPointerleave: _cache[3] || (_cache[3] = ($event) => isToggling.value = false),\n onPointercancel: _cache[4] || (_cache[4] = ($event) => isToggling.value = false)\n }, null, 8, [\"modelValue\", \"aria-controls\", \"aria-expanded\", \"disabled\", \"title\", \"ariaLabel\"])\n ]),\n _: 1\n }, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"error\", \"validating\", \"autocomplete\", \"onKeydown\"]),\n createVNode(KdsPopover, {\n ref: \"popoverEl\",\n modelValue: isPopoverOpen.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event) => isPopoverOpen.value = $event),\n placement: \"bottom-right\",\n role: \"dialog\",\n \"aria-label\": \"Interval selection dialog\"\n }, {\n default: withCtx(() => [\n createVNode(IntervalInputPopover, {\n modelValue: popoverModelValue.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event) => popoverModelValue.value = $event),\n \"used-format\": activeFormat.value,\n \"onUpdate:usedFormat\": _cache[7] || (_cache[7] = ($event) => activeFormat.value = $event),\n format: __props.format,\n \"allow-descending\": __props.allowDescending\n }, null, 8, [\"modelValue\", \"used-format\", \"format\", \"allow-descending\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 4)\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\", \"sub-text\"]);\n };\n }\n});\n\nconst _hoisted_1$s = [\"id\", \"aria-expanded\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"aria-invalid\", \"aria-controls\", \"disabled\"];\nconst _hoisted_2$g = {\n key: 0,\n class: \"leading\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3$c = [\"id\"];\nconst _hoisted_4$a = {\n class: \"trailing\",\n \"aria-hidden\": \"true\"\n};\nconst TRIGGER_REF = \"triggerEl\";\nconst _sfc_main$B = /* @__PURE__ */ defineComponent({\n __name: \"BaseDropdown\",\n props: /* @__PURE__ */ mergeModels({\n text: {},\n placeholder: {},\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n missing: { type: Boolean, default: false },\n accessory: {},\n id: {},\n ariaLabelledby: {},\n ariaDescribedby: {},\n ariaLabel: {},\n ariaInvalid: { type: Boolean, default: () => void 0 },\n popoverId: {}\n }, {\n \"open\": { type: Boolean, ...{ default: false } },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\", \"keydown\"], [\"update:open\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"missing\", \"ariaInvalid\"]);\n const open = useModel(__props, \"open\");\n const valueTextId = useId();\n const triggerEl = useTemplateRef(TRIGGER_REF);\n __expose({\n /**\n * Focuses the trigger button\n */\n focus: () => triggerEl.value?.focus()\n });\n const ariaLabelledby = computed(() => {\n if (props.ariaLabel) {\n return void 0;\n }\n if (!props.ariaLabelledby) {\n return valueTextId;\n }\n return `${props.ariaLabelledby} ${valueTextId}`;\n });\n const effectiveAriaLabel = computed(() => {\n if (!props.ariaLabel) {\n return void 0;\n }\n const displayText = props.text ?? props.placeholder;\n return `${props.ariaLabel}, ${displayText}`;\n });\n const emit = __emit;\n const onKeydown = (event) => {\n if (__props.disabled) {\n return;\n }\n emit(\"keydown\", event);\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n event.preventDefault();\n if (!open.value) {\n open.value = true;\n }\n break;\n }\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n id: props.id,\n ref: TRIGGER_REF,\n class: normalizeClass([\"kds-dropdown-trigger-button\", { error: __props.error }]),\n type: \"button\",\n \"aria-expanded\": open.value,\n \"aria-labelledby\": ariaLabelledby.value,\n \"aria-describedby\": props.ariaDescribedby,\n \"aria-label\": effectiveAriaLabel.value,\n \"aria-invalid\": __props.ariaInvalid,\n \"aria-controls\": props.popoverId,\n \"aria-haspopup\": \"dialog\",\n disabled: __props.disabled,\n onClick: _cache[0] || (_cache[0] = ($event) => !__props.disabled && emit(\"click\")),\n onKeydown\n }, [\n props.accessory ? (openBlock(), createElementBlock(\"span\", _hoisted_2$g, [\n createVNode(_sfc_main$1n, {\n accessory: props.accessory,\n size: \"medium\"\n }, null, 8, [\"accessory\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", {\n id: unref(valueTextId),\n class: normalizeClass([\"text\", {\n placeholder: !props.text && !__props.disabled,\n missing: __props.missing\n }])\n }, toDisplayString(props.text ?? props.placeholder), 11, _hoisted_3$c),\n createElementVNode(\"span\", _hoisted_4$a, [\n createVNode(KdsIcon, {\n name: open.value ? \"chevron-up\" : \"chevron-down\",\n size: \"small\"\n }, null, 8, [\"name\"])\n ])\n ], 42, _hoisted_1$s);\n };\n }\n});\n\nconst BaseDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$B, [[\"__scopeId\", \"data-v-1bb2d375\"]]);\n\nconst DROPDOWN_SEARCH_THRESHOLD = 12;\n\nconst _hoisted_1$r = { class: \"kds-dropdown-container\" };\nconst _hoisted_2$f = {\n key: 0,\n class: \"kds-dropdown-container-sticky-top\"\n};\nconst _sfc_main$A = /* @__PURE__ */ defineComponent({\n __name: \"DropdownContainer\",\n props: /* @__PURE__ */ mergeModels({\n emptyText: {},\n loading: { type: Boolean },\n possibleValues: {}\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"select\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const modelValue = useModel(__props, \"modelValue\");\n const searchable = computed(\n () => props.possibleValues.length >= DROPDOWN_SEARCH_THRESHOLD\n );\n const searchValue = ref(\"\");\n const searchEl = useTemplateRef(\"searchEl\");\n const listContainerRef = useTemplateRef(\"listContainer\");\n const optionsWithSyntheticMissing = computed(\n () => {\n if (!modelValue.value) {\n return props.possibleValues;\n }\n const hasSelected = props.possibleValues.some(\n (o) => o.id === modelValue.value\n );\n if (hasSelected) {\n return props.possibleValues;\n }\n return [\n {\n id: modelValue.value,\n text: modelValue.value,\n missing: true\n },\n ...props.possibleValues\n ];\n }\n );\n const filteredOptions = computed(() => {\n const normalizedQuery = searchValue.value.trim().toLowerCase();\n const base = optionsWithSyntheticMissing.value;\n if (normalizedQuery.length === 0) {\n return base;\n }\n return base.filter(\n (option) => option.text.toLowerCase().includes(normalizedQuery)\n );\n });\n const listOptions = computed(\n () => filteredOptions.value.map((option) => ({\n id: option.id,\n text: option.text,\n subText: option.subText,\n accessory: option.accessory,\n disabled: option.disabled || option.missing,\n selected: option.id === modelValue.value,\n special: option.special,\n missing: option.missing\n }))\n );\n const hasMultiline = computed(\n () => props.possibleValues.some((o) => o.subText !== void 0)\n );\n const onItemClick = (id) => {\n if (id !== void 0) {\n modelValue.value = id;\n emit(\"select\", id);\n }\n };\n __expose({\n focus: () => {\n if (searchable.value) {\n searchEl.value?.focus();\n } else {\n listContainerRef.value?.focus();\n }\n listContainerRef.value?.scrollSelectedIntoView();\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$r, [\n searchable.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2$f, [\n createVNode(BaseInput, {\n ref_key: \"searchEl\",\n ref: searchEl,\n modelValue: searchValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => searchValue.value = $event),\n type: \"search\",\n placeholder: \"Search\",\n \"aria-label\": \"Filter options\",\n \"aria-activedescendant\": listContainerRef.value?.activeDescendant,\n \"leading-icon\": \"search\",\n clearable: true,\n onKeydown: _cache[1] || (_cache[1] = ($event) => listContainerRef.value?.handleKeydown($event)),\n onFocus: _cache[2] || (_cache[2] = ($event) => listContainerRef.value?.handleFocus()),\n onBlur: _cache[3] || (_cache[3] = ($event) => listContainerRef.value?.handleBlur())\n }, null, 8, [\"modelValue\", \"aria-activedescendant\"])\n ])) : createCommentVNode(\"\", true),\n createVNode(unref(KdsListContainer), {\n ref: \"listContainer\",\n class: normalizeClass([\"kds-dropdown-container-list\", { multiline: hasMultiline.value }]),\n \"possible-values\": props.loading ? [] : listOptions.value,\n loading: props.loading,\n \"empty-text\": props.emptyText,\n \"controlled-externally\": searchable.value,\n \"aria-label\": \"Dropdown options\",\n onItemClick\n }, null, 8, [\"class\", \"possible-values\", \"loading\", \"empty-text\", \"controlled-externally\"])\n ]);\n };\n }\n});\n\nconst DropdownContainer = /* @__PURE__ */ _export_sfc(_sfc_main$A, [[\"__scopeId\", \"data-v-cdb20fd2\"]]);\n\nconst _sfc_main$z = /* @__PURE__ */ defineComponent({\n __name: \"KdsDropdown\",\n props: /* @__PURE__ */ mergeModels({\n placeholder: { default: \"Select\" },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n possibleValues: {},\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"placeholder\", \"disabled\", \"loading\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const open = ref(false);\n const popoverEl = useTemplateRef(\"popoverEl\");\n const dropdownContainerEl = useTemplateRef(\"dropdownContainerEl\");\n const baseDropdownEl = useTemplateRef(\"baseDropdownEl\");\n const selectedOption = computed(\n () => props.possibleValues.find((o) => o.id === modelValue.value)\n );\n watchEffect(() => {\n if (open.value) {\n nextTick(() => dropdownContainerEl.value?.focus());\n }\n });\n const closeDropdown = () => {\n open.value = false;\n };\n __expose({\n /**\n * Focuses the trigger button\n */\n focus: () => baseDropdownEl.value?.focus()\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, {\n id: props.id,\n label: props.label,\n \"aria-label\": props.ariaLabel,\n description: props.description,\n \"sub-text\": props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx((slotProps) => [\n createVNode(BaseDropdown, mergeProps({\n ref_key: \"baseDropdownEl\",\n ref: baseDropdownEl\n }, slotProps, {\n open: open.value,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => open.value = $event),\n text: modelValue.value && !selectedOption.value ? `(Missing) ${modelValue.value}` : selectedOption.value?.text,\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n missing: !!modelValue.value && !selectedOption.value,\n accessory: selectedOption.value?.accessory,\n style: popoverEl.value?.anchorStyle,\n \"popover-id\": popoverEl.value?.popoverId,\n onClick: _cache[1] || (_cache[1] = ($event) => open.value = !open.value)\n }), null, 16, [\"open\", \"text\", \"placeholder\", \"disabled\", \"error\", \"missing\", \"accessory\", \"style\", \"popover-id\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => open.value = $event),\n placement: \"bottom-left\",\n role: \"dialog\",\n \"full-width\": \"\",\n \"aria-label\": \"Dropdown menu\"\n }, {\n default: withCtx(() => [\n createVNode(DropdownContainer, {\n ref_key: \"dropdownContainerEl\",\n ref: dropdownContainerEl,\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => modelValue.value = $event),\n \"possible-values\": props.possibleValues,\n loading: __props.loading,\n \"empty-text\": \"No entries found\",\n onSelect: closeDropdown\n }, null, 8, [\"modelValue\", \"possible-values\", \"loading\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"aria-label\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst _hoisted_1$q = [\"disabled\"];\nconst _hoisted_2$e = [\"title\"];\nconst _sfc_main$y = /* @__PURE__ */ defineComponent({\n __name: \"KdsListItemButton\",\n props: {\n label: {},\n leadingIcon: {},\n disabled: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const props = createPropsRestProxy(__props, [\"disabled\"]);\n const emit = __emit;\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated: isLabelTruncated } = useKdsIsTruncated(labelEl);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n type: \"button\",\n disabled: __props.disabled,\n class: \"kds-list-item-button\",\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }, [\n createVNode(unref(KdsIcon), {\n name: props.leadingIcon,\n size: \"small\",\n disabled: __props.disabled\n }, null, 8, [\"name\", \"disabled\"]),\n createElementVNode(\"span\", {\n ref_key: \"labelEl\",\n ref: labelEl,\n class: \"label\",\n title: unref(isLabelTruncated) ? props.label : void 0\n }, toDisplayString(props.label), 9, _hoisted_2$e)\n ], 8, _hoisted_1$q);\n };\n }\n});\n\nconst KdsListItemButton = /* @__PURE__ */ _export_sfc(_sfc_main$y, [[\"__scopeId\", \"data-v-21fb5571\"]]);\n\nconst _hoisted_1$p = { class: \"kds-multi-select-dropdown-options\" };\nconst _hoisted_2$d = {\n key: 0,\n class: \"kds-multi-select-dropdown-search\"\n};\nconst _hoisted_3$b = {\n key: 1,\n class: \"kds-multi-select-dropdown-footer\"\n};\nconst _sfc_main$x = /* @__PURE__ */ defineComponent({\n __name: \"MultiSelectDropdownContainer\",\n props: /* @__PURE__ */ mergeModels({\n emptyText: {},\n loading: { type: Boolean, default: false },\n possibleValues: {},\n allowNewValues: { type: Boolean, default: false }\n }, {\n \"modelValue\": { default: () => [] },\n \"modelModifiers\": {},\n \"searchValue\": { default: \"\" },\n \"searchValueModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"addValue\"], [\"update:modelValue\", \"update:searchValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const ADD_NEW_VALUE_ID = `__kds-add-new-${useId()}__`;\n const props = createPropsRestProxy(__props, [\"loading\", \"allowNewValues\"]);\n const emit = __emit;\n const modelValue = useModel(__props, \"modelValue\");\n const searchValue = useModel(__props, \"searchValue\");\n const searchEl = useTemplateRef(\"searchEl\");\n const listContainerRef = useTemplateRef(\"listContainer\");\n const initialSelectedIds = ref(/* @__PURE__ */ new Set());\n const knownIds = computed(() => new Set(props.possibleValues.map((o) => o.id)));\n const syntheticMissingOptions = computed(\n () => modelValue.value.filter((id) => !knownIds.value.has(id)).map((id) => ({ id, text: id }))\n );\n const filteredOptions = computed(() => {\n const normalizedQuery = searchValue.value.trim().toLowerCase();\n if (normalizedQuery.length === 0) {\n return props.possibleValues;\n }\n return props.possibleValues.filter(\n (option) => option.text.toLowerCase().includes(normalizedQuery)\n );\n });\n const searchable = computed(() => {\n return __props.allowNewValues || props.possibleValues.length >= DROPDOWN_SEARCH_THRESHOLD;\n });\n const canAddNewValue = computed(() => {\n const trimmed = searchValue.value.trim();\n if (!__props.allowNewValues || trimmed.length === 0) {\n return false;\n }\n const lower = trimmed.toLowerCase();\n const existsInOptions = props.possibleValues.some(\n (o) => o.text.toLowerCase() === lower\n );\n const idCollision = knownIds.value.has(trimmed);\n const alreadySelected = modelValue.value.includes(trimmed);\n return !existsInOptions && !idCollision && !alreadySelected;\n });\n const listOptions = computed(() => {\n const selectedSet = new Set(modelValue.value);\n const addNewItem = canAddNewValue.value ? [\n {\n id: ADD_NEW_VALUE_ID,\n text: searchValue.value.trim(),\n accessory: { type: \"icon\", name: \"plus\" },\n separator: true\n }\n ] : [];\n const missingItems = syntheticMissingOptions.value.map(\n (option) => ({\n id: option.id,\n text: option.text,\n selected: true,\n missing: true\n })\n );\n const regularItems = filteredOptions.value.map((option) => ({\n id: option.id,\n text: option.text,\n subText: option.subText,\n special: option.special,\n accessory: option.accessory,\n selected: selectedSet.has(option.id),\n disabled: option.disabled\n })).slice().sort(\n (a, b) => Number(initialSelectedIds.value.has(b.id)) - Number(initialSelectedIds.value.has(a.id))\n );\n return [...addNewItem, ...missingItems, ...regularItems];\n });\n const visibleEnabledIds = computed(\n () => filteredOptions.value.filter((o) => !o.disabled).map((o) => o.id)\n );\n const anyVisibleSelected = computed(\n () => visibleEnabledIds.value.some((id) => modelValue.value.includes(id))\n );\n const onItemClick = (id) => {\n if (id === ADD_NEW_VALUE_ID) {\n const trimmed = searchValue.value.trim();\n if (trimmed.length > 0) {\n emit(\"addValue\", trimmed);\n searchValue.value = \"\";\n }\n return;\n }\n modelValue.value = modelValue.value.includes(id) ? modelValue.value.filter((entryId) => entryId !== id) : [...modelValue.value, id];\n };\n const onSelectAllOrClearAll = () => {\n const ids = new Set(visibleEnabledIds.value);\n if (anyVisibleSelected.value) {\n modelValue.value = modelValue.value.filter((id) => !ids.has(id));\n } else {\n const alreadySelected = new Set(modelValue.value);\n const toAdd = visibleEnabledIds.value.filter(\n (id) => !alreadySelected.has(id)\n );\n modelValue.value = [...modelValue.value, ...toAdd];\n }\n };\n __expose({\n focus: () => {\n initialSelectedIds.value = new Set(modelValue.value);\n if (searchable.value) {\n searchEl.value?.focus();\n } else {\n listContainerRef.value?.focus();\n }\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$p, [\n searchable.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2$d, [\n createVNode(BaseInput, {\n ref_key: \"searchEl\",\n ref: searchEl,\n modelValue: searchValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => searchValue.value = $event),\n type: \"search\",\n placeholder: __props.allowNewValues ? \"Search or add new\" : \"Search\",\n \"aria-label\": \"Filter options\",\n \"aria-activedescendant\": listContainerRef.value?.activeDescendant,\n \"leading-icon\": \"search\",\n clearable: true,\n onKeydown: _cache[1] || (_cache[1] = ($event) => listContainerRef.value?.handleKeydown($event)),\n onFocus: _cache[2] || (_cache[2] = ($event) => listContainerRef.value?.handleFocus()),\n onBlur: _cache[3] || (_cache[3] = ($event) => listContainerRef.value?.handleBlur())\n }, null, 8, [\"modelValue\", \"placeholder\", \"aria-activedescendant\"])\n ])) : createCommentVNode(\"\", true),\n createVNode(unref(KdsListContainer), {\n ref: \"listContainer\",\n class: normalizeClass([\"kds-multi-select-dropdown-list\", {\n multiline: props.possibleValues.some((o) => o.subText !== void 0)\n }]),\n \"possible-values\": __props.loading ? [] : listOptions.value,\n loading: __props.loading,\n \"empty-text\": props.emptyText,\n \"controlled-externally\": searchable.value,\n \"aria-label\": \"Dropdown options\",\n onItemClick: _cache[4] || (_cache[4] = ($event) => $event !== void 0 && onItemClick($event))\n }, null, 8, [\"class\", \"possible-values\", \"loading\", \"empty-text\", \"controlled-externally\"]),\n !__props.loading && visibleEnabledIds.value.length > 0 ? (openBlock(), createElementBlock(\"div\", _hoisted_3$b, [\n createVNode(unref(KdsListItemButton), {\n label: anyVisibleSelected.value ? \"Clear all\" : \"Select all\",\n \"leading-icon\": anyVisibleSelected.value ? \"trash\" : \"checkmark\",\n disabled: filteredOptions.value.every((o) => o.disabled),\n onClick: onSelectAllOrClearAll\n }, null, 8, [\"label\", \"leading-icon\", \"disabled\"])\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst MultiSelectDropdownContainer = /* @__PURE__ */ _export_sfc(_sfc_main$x, [[\"__scopeId\", \"data-v-68fe366f\"]]);\n\nconst _sfc_main$w = /* @__PURE__ */ defineComponent({\n __name: \"KdsMultiSelectDropdown\",\n props: /* @__PURE__ */ mergeModels({\n placeholder: { default: \"Select\" },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n possibleValues: {},\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n allowNewValues: { type: Boolean, default: false }\n }, {\n \"modelValue\": { default: () => [] },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"placeholder\", \"disabled\", \"loading\", \"allowNewValues\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const open = ref(false);\n const dropdownContainerEl = useTemplateRef(\"dropdownContainerEl\");\n const popoverEl = useTemplateRef(\"popoverEl\");\n const baseDropdownEl = useTemplateRef(\"baseDropdownEl\");\n watchEffect(() => {\n if (open.value) {\n nextTick(() => dropdownContainerEl.value?.focus());\n }\n });\n const addedOptions = ref([]);\n watch([() => props.possibleValues, () => __props.allowNewValues], ([, allowNew]) => {\n if (!allowNew) {\n addedOptions.value = [];\n }\n });\n const allPossibleValues = computed(() => {\n const baseIds = new Set(props.possibleValues.map((o) => o.id));\n const deduped = addedOptions.value.filter((o) => !baseIds.has(o.id));\n return [...props.possibleValues, ...deduped];\n });\n const optionById = computed(\n () => new Map(allPossibleValues.value.map((item) => [item.id, item]))\n );\n const missingIds = computed(\n () => modelValue.value.filter((id) => !optionById.value.has(id))\n );\n const summary = computed(() => {\n if (modelValue.value.length === 0) {\n return void 0;\n }\n if (missingIds.value.length > 0) {\n return `(Missing) ${missingIds.value[0]}`;\n }\n if (modelValue.value.length === 1) {\n return optionById.value.get(modelValue.value[0])?.text;\n }\n return `Selected (${modelValue.value.length}/${allPossibleValues.value.length})`;\n });\n const onAddValue = (text) => {\n addedOptions.value = [...addedOptions.value, { id: text, text }];\n modelValue.value = [...modelValue.value, text];\n };\n __expose({\n /**\n * Focuses the trigger button\n */\n focus: () => baseDropdownEl.value?.focus()\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, {\n id: props.id,\n label: props.label,\n \"aria-label\": props.ariaLabel,\n description: props.description,\n \"sub-text\": props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx((slotProps) => [\n createVNode(BaseDropdown, mergeProps({\n ref_key: \"baseDropdownEl\",\n ref: baseDropdownEl\n }, slotProps, {\n open: open.value,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => open.value = $event),\n text: summary.value,\n placeholder: __props.placeholder,\n disabled: __props.disabled,\n error: __props.error,\n missing: missingIds.value.length > 0,\n style: popoverEl.value?.anchorStyle,\n \"popover-id\": popoverEl.value?.popoverId,\n onClick: _cache[1] || (_cache[1] = ($event) => open.value = !open.value)\n }), null, 16, [\"open\", \"text\", \"placeholder\", \"disabled\", \"error\", \"missing\", \"style\", \"popover-id\"]),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: open.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event) => open.value = $event),\n placement: \"bottom-left\",\n role: \"dialog\",\n \"full-width\": \"\",\n \"aria-label\": \"Multi select dropdown options\"\n }, {\n default: withCtx(() => [\n createVNode(MultiSelectDropdownContainer, {\n ref_key: \"dropdownContainerEl\",\n ref: dropdownContainerEl,\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => modelValue.value = $event),\n \"possible-values\": allPossibleValues.value,\n loading: __props.loading,\n \"allow-new-values\": __props.allowNewValues,\n \"empty-text\": \"No entries found\",\n onAddValue\n }, null, 8, [\"modelValue\", \"possible-values\", \"loading\", \"allow-new-values\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"aria-label\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst _hoisted_1$o = { class: \"kds-resize-handle-area\" };\nconst _hoisted_2$c = [\"aria-label\"];\nconst _sfc_main$v = /* @__PURE__ */ defineComponent({\n __name: \"ResizeHandle\",\n props: {\n numberOfHandles: { default: 1 },\n handleGap: { default: \"0px\" }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v1dcb931e\": _ctx.handleGap,\n \"v4bcf7fe4\": handleWidth.value\n }));\n const normalizedNumberOfHandles = computed(() => {\n const raw = Math.floor(__props.numberOfHandles);\n return Math.max(1, raw || 1);\n });\n const hasMultipleHandles = computed(() => normalizedNumberOfHandles.value > 1);\n const handleWidth = computed(() => {\n const n = normalizedNumberOfHandles.value;\n const gap = __props.handleGap;\n return `calc((100% - ${n - 1} * ${gap}) / ${2 * n})`;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$o, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedNumberOfHandles.value, (i) => {\n return openBlock(), createElementBlock(\"button\", {\n key: i,\n class: \"kds-resize-handle\",\n \"aria-label\": hasMultipleHandles.value ? `Resize vertically (handle ${i} of ${normalizedNumberOfHandles.value})` : \"Resize vertically\",\n type: \"button\"\n }, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", { class: \"kds-resize-handle-line\" }, null, -1)\n ])], 8, _hoisted_2$c);\n }), 128))\n ]);\n };\n }\n});\n\nconst ResizeHandle = /* @__PURE__ */ _export_sfc(_sfc_main$v, [[\"__scopeId\", \"data-v-df3803d4\"]]);\n\nconst _hoisted_1$n = {\n ref: \"content\",\n class: \"kds-resize-container-content\"\n};\nconst DEFAULT_INITIAL_HEIGHT = 200;\nconst KEYBOARD_RESIZE_STEP = 10;\nconst _sfc_main$u = /* @__PURE__ */ defineComponent({\n __name: \"KdsResizeContainer\",\n props: {\n height: { default: () => DEFAULT_INITIAL_HEIGHT },\n minHeight: { default: 0 },\n maxHeight: {},\n numberOfHandles: { default: 1 },\n handleGap: { default: \"0px\" }\n },\n setup(__props) {\n const clamp = (value) => Math.max(\n __props.minHeight,\n __props.maxHeight === void 0 ? value : Math.min(value, __props.maxHeight)\n );\n const currentHeight = ref(clamp(__props.height));\n const isMaximized = ref(false);\n const contentRef = useTemplateRef(\"content\");\n const heightAtDragStart = ref(0);\n const startY = ref(null);\n const { activePointerId, onPointerDown, onPointerMove, onPointerUp } = usePointerHandler((event) => {\n if (startY.value === null) {\n startY.value = event.clientY;\n heightAtDragStart.value = contentRef.value?.getBoundingClientRect().height ?? currentHeight.value;\n currentHeight.value = clamp(heightAtDragStart.value);\n isMaximized.value = false;\n return;\n }\n currentHeight.value = clamp(\n heightAtDragStart.value + event.clientY - startY.value\n );\n });\n watch(activePointerId, (id) => {\n if (id === null) {\n startY.value = null;\n }\n });\n const toggleMaximized = () => {\n isMaximized.value = !isMaximized.value;\n };\n const onKeydown = (event) => {\n const renderedHeight = contentRef.value?.getBoundingClientRect().height ?? currentHeight.value;\n if (event.key === \"ArrowDown\") {\n currentHeight.value = clamp(renderedHeight + KEYBOARD_RESIZE_STEP);\n isMaximized.value = false;\n event.preventDefault();\n } else if (event.key === \"ArrowUp\") {\n currentHeight.value = clamp(renderedHeight - KEYBOARD_RESIZE_STEP);\n isMaximized.value = false;\n event.preventDefault();\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n toggleMaximized();\n }\n };\n const contentStyle = computed(() => ({\n minBlockSize: `${__props.minHeight}px`,\n blockSize: isMaximized.value ? \"fit-content\" : `${currentHeight.value}px`,\n maxBlockSize: __props.maxHeight === void 0 ? void 0 : `${__props.maxHeight}px`\n }));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-resize-container\", { dragging: unref(activePointerId) !== null }])\n }, [\n createElementVNode(\"div\", _hoisted_1$n, [\n renderSlot(_ctx.$slots, \"default\", { contentStyle: contentStyle.value }, void 0, true)\n ], 512),\n createVNode(ResizeHandle, {\n \"number-of-handles\": __props.numberOfHandles,\n \"handle-gap\": __props.handleGap,\n onPointerdown: unref(onPointerDown),\n onPointermove: withModifiers(unref(onPointerMove), [\"prevent\"]),\n onLostpointercapture: unref(onPointerUp),\n onPointerup: unref(onPointerUp),\n onKeydown,\n onDblclick: toggleMaximized\n }, null, 8, [\"number-of-handles\", \"handle-gap\", \"onPointerdown\", \"onPointermove\", \"onLostpointercapture\", \"onPointerup\"])\n ], 2);\n };\n }\n});\n\nconst KdsResizeContainer = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"__scopeId\", \"data-v-46b33b01\"]]);\n\nconst CLICK_META_KEY_TIMEOUT = 250;\nconst useMultiSelectListBoxSelection = ({\n modelValue,\n allValues,\n disabled,\n generateOptionId,\n scrollToIndex\n}) => {\n const currentKeyNavIndex = ref(-1);\n const isKeyboardNavigating = ref(false);\n const shiftStartIndex = ref(-1);\n const draggingStartIndex = ref(-1);\n const draggingLastIndex = ref(-1);\n const draggingInverseMode = ref(false);\n const mouseTriggeredFocus = ref(false);\n const selectedSet = computed(() => new Set(modelValue.value));\n const isCurrentValue = (id) => selectedSet.value.has(id);\n const activeDescendantId = computed(() => {\n if (!isKeyboardNavigating.value) {\n return void 0;\n }\n const item = allValues.value[currentKeyNavIndex.value];\n return item ? generateOptionId(item.id) : void 0;\n });\n const setSelectedNoShiftReset = (values) => {\n modelValue.value = values;\n };\n const setSelected = (values) => {\n shiftStartIndex.value = -1;\n setSelectedNoShiftReset(values);\n };\n const toggleSelection = (value) => {\n if (selectedSet.value.has(value)) {\n setSelected(modelValue.value.filter((v) => v !== value));\n } else {\n setSelected([...modelValue.value, value]);\n }\n };\n const setSelectedToIndex = (index) => {\n const item = allValues.value[index];\n if (item) {\n setSelected([item.id]);\n }\n };\n watch(\n () => allValues.value.length,\n (length) => {\n const maxIndex = length - 1;\n if (maxIndex < 0) {\n currentKeyNavIndex.value = -1;\n } else {\n currentKeyNavIndex.value = Math.min(\n Math.max(currentKeyNavIndex.value, 0),\n maxIndex\n );\n }\n if (isKeyboardNavigating.value) {\n setSelectedToIndex(currentKeyNavIndex.value);\n }\n }\n );\n const getPossibleValuesInSection = (first, second) => {\n const start = Math.max(0, Math.min(first, second));\n const end = Math.max(0, first, second);\n return allValues.value.slice(start, end + 1).map((x) => x.id);\n };\n const handleCtrlClick = (value, index) => {\n currentKeyNavIndex.value = index;\n toggleSelection(value);\n };\n let metaClickTimer = null;\n const cancelPendingMetaClick = () => {\n if (metaClickTimer !== null) {\n clearTimeout(metaClickTimer);\n metaClickTimer = null;\n }\n };\n const debouncedHandleCtrlClick = (value, index) => {\n cancelPendingMetaClick();\n metaClickTimer = setTimeout(() => {\n handleCtrlClick(value, index);\n metaClickTimer = null;\n }, CLICK_META_KEY_TIMEOUT);\n };\n const handleClick = (event, value, index) => {\n if (disabled.value) {\n return;\n }\n isKeyboardNavigating.value = false;\n cancelPendingMetaClick();\n event.preventDefault();\n if (event.metaKey) {\n debouncedHandleCtrlClick(value, index);\n return;\n }\n if (event.ctrlKey) {\n handleCtrlClick(value, index);\n return;\n }\n if (event.shiftKey) {\n setSelectedNoShiftReset(\n getPossibleValuesInSection(currentKeyNavIndex.value, index)\n );\n return;\n }\n currentKeyNavIndex.value = index;\n setSelected([value]);\n };\n const getDataOptionIndex = (target) => target.closest(\"[data-option-index]\")?.dataset.optionIndex;\n const onStartDrag = (e) => {\n if (disabled.value) {\n return;\n }\n mouseTriggeredFocus.value = true;\n isKeyboardNavigating.value = false;\n if (e.shiftKey) {\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n draggingInverseMode.value = true;\n }\n const index = getDataOptionIndex(e.target);\n if (index !== void 0) {\n draggingStartIndex.value = Number(index);\n draggingLastIndex.value = Number(index);\n }\n };\n const onDrag = (e) => {\n if (draggingStartIndex.value === -1) {\n return;\n }\n const dataIndex = getDataOptionIndex(e.target);\n if (dataIndex === void 0) {\n return;\n }\n const numericIndex = Number(dataIndex);\n if (numericIndex === draggingLastIndex.value) {\n return;\n }\n draggingLastIndex.value = numericIndex;\n let sectionValues = getPossibleValuesInSection(\n draggingStartIndex.value,\n numericIndex\n );\n if (draggingInverseMode.value) {\n sectionValues = modelValue.value.filter(\n (x) => !sectionValues.includes(x)\n );\n }\n setSelected(sectionValues);\n };\n const onStopDrag = () => {\n draggingStartIndex.value = -1;\n draggingLastIndex.value = -1;\n draggingInverseMode.value = false;\n };\n useMousePressed({\n touch: false,\n drag: false,\n onReleased: onStopDrag\n });\n const isOutOfRange = (index) => index < 0 || index >= allValues.value.length;\n const navigateTo = (next, select) => {\n if (select === \"shift\") {\n if (shiftStartIndex.value === -1) {\n shiftStartIndex.value = Math.max(0, currentKeyNavIndex.value);\n }\n setSelectedNoShiftReset(\n getPossibleValuesInSection(shiftStartIndex.value, next)\n );\n } else {\n setSelectedToIndex(next);\n }\n currentKeyNavIndex.value = next;\n scrollToIndex(next);\n };\n const onArrowDown = () => {\n if (disabled.value || isOutOfRange(currentKeyNavIndex.value + 1)) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(currentKeyNavIndex.value + 1, \"single\");\n };\n const onArrowUp = () => {\n if (disabled.value || isOutOfRange(currentKeyNavIndex.value - 1)) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(currentKeyNavIndex.value - 1, \"single\");\n };\n const onArrowDownShift = () => {\n if (disabled.value || isOutOfRange(currentKeyNavIndex.value + 1)) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(currentKeyNavIndex.value + 1, \"shift\");\n };\n const onArrowUpShift = () => {\n if (disabled.value || isOutOfRange(currentKeyNavIndex.value - 1)) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(currentKeyNavIndex.value - 1, \"shift\");\n };\n const onEndKey = () => {\n if (disabled.value || allValues.value.length === 0) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(allValues.value.length - 1, \"single\");\n };\n const onHomeKey = () => {\n if (disabled.value || allValues.value.length === 0) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(0, \"single\");\n };\n const onEndKeyShift = () => {\n if (disabled.value || allValues.value.length === 0) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(allValues.value.length - 1, \"shift\");\n };\n const onHomeKeyShift = () => {\n if (disabled.value || allValues.value.length === 0) {\n return;\n }\n isKeyboardNavigating.value = true;\n navigateTo(0, \"shift\");\n };\n const onCtrlA = () => {\n if (!disabled.value) {\n isKeyboardNavigating.value = true;\n setSelected(allValues.value.map((x) => x.id));\n }\n };\n const onFocus = () => {\n if (disabled.value || mouseTriggeredFocus.value) {\n mouseTriggeredFocus.value = false;\n return;\n }\n isKeyboardNavigating.value = true;\n if (allValues.value.length > 0) {\n if (currentKeyNavIndex.value < 0) {\n currentKeyNavIndex.value = 0;\n }\n if (modelValue.value.length === 0) {\n setSelected([allValues.value[currentKeyNavIndex.value].id]);\n }\n }\n };\n const onBlur = () => {\n isKeyboardNavigating.value = false;\n };\n onMounted(() => {\n const lastItem = modelValue.value[modelValue.value.length - 1];\n if (lastItem) {\n const idx = allValues.value.findIndex((x) => x.id === lastItem);\n if (idx >= 0) {\n currentKeyNavIndex.value = idx;\n }\n }\n });\n onBeforeUnmount(() => {\n cancelPendingMetaClick();\n });\n return {\n currentKeyNavIndex,\n isKeyboardNavigating,\n isCurrentValue,\n activeDescendantId,\n handleClick,\n onStartDrag,\n onDrag,\n onArrowDown,\n onArrowUp,\n onArrowDownShift,\n onArrowUpShift,\n onEndKey,\n onHomeKey,\n onEndKeyShift,\n onHomeKeyShift,\n onCtrlA,\n onFocus,\n onBlur\n };\n};\n\nconst _hoisted_1$m = [\"id\", \"tabindex\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"aria-invalid\", \"aria-activedescendant\", \"aria-disabled\", \"onKeydown\"];\nconst _hoisted_2$b = { class: \"kds-multiselect-list-box-content-grid\" };\nconst _hoisted_3$a = {\n key: 0,\n class: \"kds-multiselect-sticky-bottom\"\n};\nconst _hoisted_4$9 = {\n key: 0,\n class: \"kds-multiselect-empty\"\n};\nconst _sfc_main$t = /* @__PURE__ */ defineComponent({\n __name: \"KdsMultiSelectListBox\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n possibleValues: {},\n disabled: { type: Boolean, default: false },\n useResizeHandle: { type: Boolean, default: false },\n bottomValue: {},\n emptyStateLabel: { default: \"No entries in this list\" },\n loading: { type: Boolean, default: false }\n }, {\n \"modelValue\": { default: () => [] },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"doubleClickOnItem\", \"doubleClickShift\", \"keyArrowLeft\", \"keyArrowRight\", \"keyEnter\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const OPTION_LINE_HEIGHT = kdsDimensionComponentHeight1p5x + kdsSpacingContainer0p10x;\n const PassThroughResizeContainer = defineComponent({\n inheritAttrs: false,\n setup(_, { slots }) {\n return () => slots.default?.({ contentStyle: void 0 });\n }\n });\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\", \"useResizeHandle\", \"emptyStateLabel\", \"loading\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const effectiveDisabled = computed(() => __props.disabled || __props.loading);\n const visiblePossibleValues = computed(\n () => __props.loading ? [] : props.possibleValues\n );\n const visibleBottomValue = computed(\n () => __props.loading ? void 0 : props.bottomValue\n );\n const emit = __emit;\n const idPrefix = useId();\n const generateOptionId = (itemId) => `${idPrefix}-option-${encodeURIComponent(itemId)}`;\n const allValues = computed(\n () => visibleBottomValue.value ? [...visiblePossibleValues.value, visibleBottomValue.value] : visiblePossibleValues.value\n );\n const bottomIndex = computed(() => visiblePossibleValues.value.length);\n const {\n containerProps,\n wrapperProps,\n list: virtualList,\n scrollTo\n } = useVirtualList(visiblePossibleValues, { itemHeight: OPTION_LINE_HEIGHT });\n watch(visiblePossibleValues, () => {\n const el = containerProps.ref.value;\n if (!el) {\n return;\n }\n scrollTo(\n Math.max(\n Math.min(\n Math.floor(el.scrollTop / OPTION_LINE_HEIGHT),\n visiblePossibleValues.value.length - 1\n ),\n 0\n )\n );\n });\n const scrollToIndex = (index) => {\n if (index === bottomIndex.value && visibleBottomValue.value) {\n return;\n }\n const item = allValues.value[index];\n if (!item) {\n return;\n }\n const el = containerProps.ref.value;\n if (!el) {\n return;\n }\n const itemEl = globalThis.document.getElementById(generateOptionId(item.id));\n if (itemEl) {\n itemEl.scrollIntoView({ block: \"nearest\" });\n if (visibleBottomValue.value) {\n const stickyEl = el.querySelector(\".kds-multiselect-sticky-bottom\");\n if (stickyEl) {\n const itemRect = itemEl.getBoundingClientRect();\n const stickyRect = stickyEl.getBoundingClientRect();\n if (itemRect.bottom > stickyRect.top) {\n el.scrollTop += itemRect.bottom - stickyRect.top;\n }\n }\n }\n } else {\n scrollTo(index);\n }\n };\n const {\n currentKeyNavIndex,\n isKeyboardNavigating,\n isCurrentValue,\n activeDescendantId,\n handleClick,\n onStartDrag,\n onDrag,\n onArrowDown,\n onArrowUp,\n onArrowDownShift,\n onArrowUpShift,\n onEndKey,\n onHomeKey,\n onEndKeyShift,\n onHomeKeyShift,\n onCtrlA,\n onFocus,\n onBlur\n } = useMultiSelectListBoxSelection({\n modelValue,\n allValues,\n disabled: toRef(() => effectiveDisabled.value),\n generateOptionId,\n scrollToIndex\n });\n const handleDblClick = (id, index) => {\n if (!effectiveDisabled.value) {\n emit(\"doubleClickOnItem\", id, index);\n }\n };\n const handleShiftDblClick = () => {\n if (!effectiveDisabled.value) {\n emit(\"doubleClickShift\", modelValue.value);\n }\n };\n const onArrowLeft = () => {\n if (!effectiveDisabled.value) {\n emit(\"keyArrowLeft\", modelValue.value);\n }\n };\n const onArrowRight = () => {\n if (!effectiveDisabled.value) {\n emit(\"keyArrowRight\", modelValue.value);\n }\n };\n const onEnter = () => {\n if (!effectiveDisabled.value) {\n emit(\"keyEnter\", modelValue.value);\n }\n };\n const focus = () => {\n if (!effectiveDisabled.value) {\n containerProps.ref.value?.focus();\n }\n };\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFormFieldWrapper, {\n id: props.id,\n label: props.label,\n \"aria-label\": props.ariaLabel,\n description: props.description,\n \"sub-text\": props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx((slotProps) => [\n (openBlock(), createBlock(resolveDynamicComponent(__props.useResizeHandle ? KdsResizeContainer : unref(PassThroughResizeContainer)), {\n height: unref(kdsDimensionComponentHeight20x),\n \"min-height\": unref(kdsDimensionComponentHeight12p5x)\n }, {\n default: withCtx(({ contentStyle }) => [\n createElementVNode(\"div\", {\n class: normalizeClass([\n \"kds-multiselect-list-box\",\n { error: __props.error, disabled: effectiveDisabled.value }\n ]),\n style: normalizeStyle(contentStyle)\n }, [\n createElementVNode(\"div\", mergeProps(unref(containerProps), {\n id: slotProps.id,\n role: \"listbox\",\n tabindex: effectiveDisabled.value ? -1 : 0,\n \"aria-multiselectable\": \"true\",\n \"aria-labelledby\": slotProps.ariaLabelledby,\n \"aria-describedby\": slotProps.ariaDescribedby,\n \"aria-label\": slotProps.ariaLabel,\n \"aria-invalid\": slotProps.ariaInvalid,\n \"aria-activedescendant\": unref(activeDescendantId),\n \"aria-disabled\": effectiveDisabled.value,\n class: \"kds-multiselect-list-box-list\",\n onKeydown: [\n _cache[4] || (_cache[4] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onCtrlA) && unref(onCtrlA)(...args),\n [\"ctrl\", \"prevent\", \"exact\"]\n ), [\"a\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onCtrlA) && unref(onCtrlA)(...args),\n [\"meta\", \"prevent\", \"exact\"]\n ), [\"a\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onArrowUp) && unref(onArrowUp)(...args),\n [\"prevent\", \"exact\"]\n ), [\"up\"])),\n _cache[7] || (_cache[7] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onArrowDown) && unref(onArrowDown)(...args),\n [\"prevent\", \"exact\"]\n ), [\"down\"])),\n _cache[8] || (_cache[8] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onArrowUpShift) && unref(onArrowUpShift)(...args),\n [\"shift\", \"prevent\", \"exact\"]\n ), [\"up\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onArrowDownShift) && unref(onArrowDownShift)(...args),\n [\"shift\", \"prevent\", \"exact\"]\n ), [\"down\"])),\n withKeys(withModifiers(onArrowLeft, [\"prevent\", \"exact\"]), [\"left\"]),\n withKeys(withModifiers(onArrowRight, [\"prevent\", \"exact\"]), [\"right\"]),\n withKeys(withModifiers(onEnter, [\"prevent\", \"exact\"]), [\"enter\"]),\n _cache[10] || (_cache[10] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onHomeKey) && unref(onHomeKey)(...args),\n [\"prevent\", \"exact\"]\n ), [\"home\"])),\n _cache[11] || (_cache[11] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onEndKey) && unref(onEndKey)(...args),\n [\"prevent\", \"exact\"]\n ), [\"end\"])),\n _cache[12] || (_cache[12] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onHomeKeyShift) && unref(onHomeKeyShift)(...args),\n [\"shift\", \"prevent\", \"exact\"]\n ), [\"home\"])),\n _cache[13] || (_cache[13] = withKeys(withModifiers(\n //@ts-ignore\n (...args) => unref(onEndKeyShift) && unref(onEndKeyShift)(...args),\n [\"shift\", \"prevent\", \"exact\"]\n ), [\"end\"]))\n ],\n onMousedown: _cache[14] || (_cache[14] = //@ts-ignore\n (...args) => unref(onStartDrag) && unref(onStartDrag)(...args)),\n onMousemove: _cache[15] || (_cache[15] = //@ts-ignore\n (...args) => unref(onDrag) && unref(onDrag)(...args)),\n onFocus: _cache[16] || (_cache[16] = //@ts-ignore\n (...args) => unref(onFocus) && unref(onFocus)(...args)),\n onBlur: _cache[17] || (_cache[17] = //@ts-ignore\n (...args) => unref(onBlur) && unref(onBlur)(...args))\n }), [\n createElementVNode(\"div\", _hoisted_2$b, [\n createElementVNode(\"div\", mergeProps({ class: \"kds-multiselect-list-box-content\" }, unref(wrapperProps)), [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(virtualList), ({ data: item, index }) => {\n return openBlock(), createBlock(unref(KdsListItem), {\n id: generateOptionId(item.id),\n key: `listbox-${item.id}`,\n class: normalizeClass([\n \"kds-multiselect-list-box-item\",\n { \"kds-multiselect-list-box-item-first\": index === 0 }\n ]),\n text: item.text,\n accessory: item.accessory,\n missing: item.missing,\n special: item.special,\n \"data-option-index\": index,\n selected: unref(isCurrentValue)(item.id),\n disabled: effectiveDisabled.value,\n active: unref(isKeyboardNavigating) && unref(currentKeyNavIndex) === index,\n \"trailing-icon\": unref(isCurrentValue)(item.id) ? \"checkmark\" : void 0,\n onDblclick: [\n withModifiers(($event) => handleDblClick(item.id, index), [\"exact\"]),\n _cache[0] || (_cache[0] = withModifiers(($event) => handleShiftDblClick(), [\"shift\"]))\n ],\n onClick: ($event) => unref(handleClick)($event, item.id, index)\n }, null, 8, [\"id\", \"class\", \"text\", \"accessory\", \"missing\", \"special\", \"data-option-index\", \"selected\", \"disabled\", \"active\", \"trailing-icon\", \"onDblclick\", \"onClick\"]);\n }), 128))\n ], 16),\n visibleBottomValue.value ? (openBlock(), createElementBlock(\"div\", _hoisted_3$a, [\n createVNode(unref(KdsListItem), {\n id: generateOptionId(visibleBottomValue.value.id),\n text: visibleBottomValue.value.text,\n accessory: visibleBottomValue.value.accessory,\n missing: visibleBottomValue.value.missing,\n \"data-option-index\": bottomIndex.value,\n selected: unref(isCurrentValue)(visibleBottomValue.value.id),\n disabled: effectiveDisabled.value,\n active: unref(isKeyboardNavigating) && unref(currentKeyNavIndex) === bottomIndex.value,\n special: \"\",\n \"trailing-icon\": unref(isCurrentValue)(visibleBottomValue.value.id) ? \"checkmark\" : void 0,\n onClick: _cache[1] || (_cache[1] = ($event) => unref(handleClick)($event, visibleBottomValue.value.id, bottomIndex.value)),\n onDblclick: [\n _cache[2] || (_cache[2] = withModifiers(($event) => handleShiftDblClick(), [\"shift\"])),\n _cache[3] || (_cache[3] = withModifiers(($event) => handleDblClick(visibleBottomValue.value.id, bottomIndex.value), [\"exact\"]))\n ]\n }, null, 8, [\"id\", \"text\", \"accessory\", \"missing\", \"data-option-index\", \"selected\", \"disabled\", \"active\", \"trailing-icon\"])\n ])) : createCommentVNode(\"\", true)\n ])\n ], 16, _hoisted_1$m),\n visiblePossibleValues.value.length === 0 && !visibleBottomValue.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4$9, [\n createVNode(KdsEmptyState, {\n headline: __props.loading ? \"Loading data…\" : __props.emptyStateLabel,\n \"loading-spinner\": __props.loading,\n disabled: __props.disabled\n }, null, 8, [\"headline\", \"loading-spinner\", \"disabled\"])\n ])) : createCommentVNode(\"\", true)\n ], 6)\n ]),\n _: 2\n }, 1032, [\"height\", \"min-height\"]))\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"aria-label\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsMultiSelectListBox = /* @__PURE__ */ _export_sfc(_sfc_main$t, [[\"__scopeId\", \"data-v-2c5e2dda\"]]);\n\nconst _hoisted_1$l = { class: \"kds-list-column\" };\nconst _hoisted_2$a = { class: \"kds-list-header\" };\nconst _hoisted_3$9 = { class: \"kds-list-label\" };\nconst _hoisted_4$8 = {\n key: 0,\n class: \"kds-list-count\"\n};\nconst _hoisted_5$4 = { class: \"kds-button-column\" };\nconst _hoisted_6$2 = { class: \"kds-list-column\" };\nconst _hoisted_7$1 = { class: \"kds-list-header\" };\nconst _hoisted_8$1 = { class: \"kds-list-label\" };\nconst _hoisted_9$1 = {\n key: 0,\n class: \"kds-list-count\"\n};\nconst UNKNOWN_VALUE_ID = \"__unknown-value-option__\";\nconst _sfc_main$s = /* @__PURE__ */ defineComponent({\n __name: \"TwinListBody\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean, default: false },\n error: { type: Boolean, default: false },\n possibleValues: {},\n searchTerm: { default: \"\" },\n excludeLabel: { default: \"Exclude\" },\n includeLabel: { default: \"Include\" },\n unknownValuesText: { default: \"Unknown columns\" },\n emptyStateLabel: {},\n loading: { type: Boolean, default: false }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"error\", \"searchTerm\", \"excludeLabel\", \"includeLabel\", \"unknownValuesText\", \"loading\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const effectiveDisabled = computed(() => __props.disabled || __props.loading);\n const leftSelected = ref([]);\n const rightSelected = ref([]);\n watch(leftSelected, (ids) => {\n if (ids.length > 0) {\n rightSelected.value = [];\n }\n });\n watch(rightSelected, (ids) => {\n if (ids.length > 0) {\n leftSelected.value = [];\n }\n });\n watch(effectiveDisabled, (isDisabled) => {\n if (isDisabled) {\n leftSelected.value = [];\n rightSelected.value = [];\n }\n });\n const knownIds = computed(\n () => new Set(props.possibleValues.map((v) => String(v.id)))\n );\n const missingExcludedIds = computed(\n () => modelValue.value.excludedValues.map(String).filter((id) => !knownIds.value.has(id))\n );\n const missingIncludedIds = computed(\n () => modelValue.value.includedValues.map(String).filter((id) => !knownIds.value.has(id))\n );\n const excludedItems = computed(() => {\n const excludedSet = new Set(modelValue.value.excludedValues.map(String));\n return props.possibleValues.filter((v) => excludedSet.has(String(v.id)));\n });\n const includedItems = computed(() => {\n const includedSet = new Set(modelValue.value.includedValues.map(String));\n return props.possibleValues.filter((v) => includedSet.has(String(v.id)));\n });\n const matchesSearch = (item) => item.text.toLowerCase().includes(__props.searchTerm.toLowerCase());\n const toMissingOption = (id, selectedSet) => ({\n id,\n text: id,\n missing: true,\n selected: selectedSet.has(id)\n });\n const filteredExcludedItems = computed(\n () => __props.searchTerm ? excludedItems.value.filter(matchesSearch) : excludedItems.value\n );\n const filteredIncludedItems = computed(\n () => __props.searchTerm ? includedItems.value.filter(matchesSearch) : includedItems.value\n );\n const toListOption = (item, selectedSet) => ({\n id: String(item.id),\n text: item.text,\n accessory: item.accessory,\n selected: selectedSet.has(String(item.id))\n });\n const leftOptions = computed(() => {\n const selectedSet = new Set(leftSelected.value);\n return [\n ...missingExcludedIds.value.map((id) => toMissingOption(id, selectedSet)),\n ...filteredExcludedItems.value.map(\n (item) => toListOption(item, selectedSet)\n )\n ];\n });\n const rightOptions = computed(() => {\n const selectedSet = new Set(rightSelected.value);\n return [\n ...missingIncludedIds.value.map((id) => toMissingOption(id, selectedSet)),\n ...filteredIncludedItems.value.map(\n (item) => toListOption(item, selectedSet)\n )\n ];\n });\n const unknownValueOption = computed(() => ({\n text: __props.unknownValuesText,\n id: UNKNOWN_VALUE_ID\n }));\n const showUnknownValues = computed(\n () => modelValue.value.includeUnknownValues !== null\n );\n const moveRight = (ids) => {\n if (effectiveDisabled.value) {\n return;\n }\n const idsToMove = new Set([...ids].map(String));\n if (idsToMove.size === 0) {\n return;\n }\n const moveUnknown = idsToMove.has(UNKNOWN_VALUE_ID);\n idsToMove.delete(UNKNOWN_VALUE_ID);\n const missingIds = new Set(missingExcludedIds.value);\n const knownToMove = new Set(\n [...idsToMove].filter((id) => !missingIds.has(id))\n );\n modelValue.value = {\n includeUnknownValues: moveUnknown || modelValue.value.includeUnknownValues,\n excludedValues: modelValue.value.excludedValues.filter(\n (id) => !idsToMove.has(String(id))\n ),\n includedValues: [\n ...modelValue.value.includedValues,\n ...modelValue.value.excludedValues.filter(\n (id) => knownToMove.has(String(id))\n )\n ]\n };\n rightSelected.value = [\n ...knownToMove,\n ...moveUnknown ? [UNKNOWN_VALUE_ID] : []\n ];\n };\n const moveLeft = (ids) => {\n if (effectiveDisabled.value) {\n return;\n }\n const idsToMove = new Set([...ids].map(String));\n if (idsToMove.size === 0) {\n return;\n }\n const moveUnknown = idsToMove.has(UNKNOWN_VALUE_ID);\n idsToMove.delete(UNKNOWN_VALUE_ID);\n const missingIds = new Set(missingIncludedIds.value);\n const knownToMove = new Set(\n [...idsToMove].filter((id) => !missingIds.has(id))\n );\n modelValue.value = {\n includeUnknownValues: !moveUnknown && modelValue.value.includeUnknownValues,\n includedValues: modelValue.value.includedValues.filter(\n (id) => !idsToMove.has(String(id))\n ),\n excludedValues: [\n ...modelValue.value.excludedValues,\n ...modelValue.value.includedValues.filter(\n (id) => knownToMove.has(String(id))\n )\n ]\n };\n leftSelected.value = [\n ...knownToMove,\n ...moveUnknown ? [UNKNOWN_VALUE_ID] : []\n ];\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(KdsResizeContainer), {\n \"number-of-handles\": 2,\n height: 320,\n \"min-height\": 200,\n \"handle-gap\": `${unref(kdsSpacingContainer0p25x) * 2 + unref(kdsDimensionComponentHeight1p5x)}px`\n }, {\n default: withCtx(({ contentStyle }) => [\n createElementVNode(\"div\", {\n class: \"kds-twin-list-body\",\n style: normalizeStyle(contentStyle)\n }, [\n createElementVNode(\"div\", _hoisted_1$l, [\n createElementVNode(\"div\", _hoisted_2$a, [\n createElementVNode(\"span\", _hoisted_3$9, toDisplayString(__props.excludeLabel), 1),\n !__props.loading && __props.searchTerm ? (openBlock(), createElementBlock(\"span\", _hoisted_4$8, toDisplayString(leftOptions.value.length) + \" of \" + toDisplayString(excludedItems.value.length), 1)) : createCommentVNode(\"\", true)\n ]),\n createVNode(unref(KdsMultiSelectListBox), {\n modelValue: leftSelected.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => leftSelected.value = $event),\n class: \"kds-list-box\",\n \"possible-values\": leftOptions.value,\n ariaLabel: __props.excludeLabel,\n disabled: effectiveDisabled.value,\n error: __props.error,\n loading: __props.loading,\n \"empty-state-label\": props.emptyStateLabel,\n \"bottom-value\": showUnknownValues.value && modelValue.value.includeUnknownValues === false ? unknownValueOption.value : void 0,\n onDoubleClickOnItem: _cache[1] || (_cache[1] = ($event) => moveRight(leftSelected.value)),\n onDoubleClickShift: moveRight,\n onKeyArrowRight: moveRight,\n onKeyEnter: moveRight\n }, null, 8, [\"modelValue\", \"possible-values\", \"ariaLabel\", \"disabled\", \"error\", \"loading\", \"empty-state-label\", \"bottom-value\"])\n ]),\n createElementVNode(\"div\", _hoisted_5$4, [\n createVNode(unref(_sfc_main$1s), {\n \"leading-icon\": \"chevron-right\",\n ariaLabel: \"Move selected values right\",\n title: \"Move selected values right\",\n variant: \"transparent\",\n size: \"small\",\n disabled: effectiveDisabled.value || leftSelected.value.length === 0,\n onClick: _cache[2] || (_cache[2] = ($event) => moveRight(leftSelected.value))\n }, null, 8, [\"disabled\"]),\n createVNode(unref(_sfc_main$1s), {\n \"leading-icon\": \"chevron-right-double\",\n ariaLabel: \"Move all values right\",\n title: \"Move all values right\",\n variant: \"transparent\",\n size: \"small\",\n disabled: effectiveDisabled.value || excludedItems.value.length === 0 && (!showUnknownValues.value || modelValue.value.includeUnknownValues === true),\n onClick: _cache[3] || (_cache[3] = ($event) => moveRight([\n ...modelValue.value.excludedValues,\n ...showUnknownValues.value && !modelValue.value.includeUnknownValues ? [UNKNOWN_VALUE_ID] : []\n ]))\n }, null, 8, [\"disabled\"]),\n createVNode(unref(_sfc_main$1s), {\n \"leading-icon\": \"chevron-left\",\n ariaLabel: \"Move selected values left\",\n title: \"Move selected values left\",\n variant: \"transparent\",\n size: \"small\",\n disabled: effectiveDisabled.value || rightSelected.value.length === 0,\n onClick: _cache[4] || (_cache[4] = ($event) => moveLeft(rightSelected.value))\n }, null, 8, [\"disabled\"]),\n createVNode(unref(_sfc_main$1s), {\n \"leading-icon\": \"chevron-left-double\",\n ariaLabel: \"Move all values left\",\n title: \"Move all values left\",\n variant: \"transparent\",\n size: \"small\",\n disabled: effectiveDisabled.value || includedItems.value.length === 0 && (!showUnknownValues.value || modelValue.value.includeUnknownValues === false),\n onClick: _cache[5] || (_cache[5] = ($event) => moveLeft([\n ...modelValue.value.includedValues,\n ...showUnknownValues.value && modelValue.value.includeUnknownValues ? [UNKNOWN_VALUE_ID] : []\n ]))\n }, null, 8, [\"disabled\"])\n ]),\n createElementVNode(\"div\", _hoisted_6$2, [\n createElementVNode(\"div\", _hoisted_7$1, [\n createElementVNode(\"span\", _hoisted_8$1, toDisplayString(__props.includeLabel), 1),\n !__props.loading && __props.searchTerm ? (openBlock(), createElementBlock(\"span\", _hoisted_9$1, toDisplayString(rightOptions.value.length) + \" of \" + toDisplayString(includedItems.value.length), 1)) : createCommentVNode(\"\", true)\n ]),\n createVNode(unref(KdsMultiSelectListBox), {\n modelValue: rightSelected.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event) => rightSelected.value = $event),\n class: \"kds-list-box\",\n \"possible-values\": rightOptions.value,\n ariaLabel: __props.includeLabel,\n disabled: effectiveDisabled.value,\n error: __props.error,\n loading: __props.loading,\n \"empty-state-label\": props.emptyStateLabel,\n \"bottom-value\": showUnknownValues.value && modelValue.value.includeUnknownValues === true ? unknownValueOption.value : void 0,\n onDoubleClickOnItem: _cache[7] || (_cache[7] = ($event) => moveLeft(rightSelected.value)),\n onDoubleClickShift: moveLeft,\n onKeyArrowLeft: moveLeft,\n onKeyEnter: moveLeft\n }, null, 8, [\"modelValue\", \"possible-values\", \"ariaLabel\", \"disabled\", \"error\", \"loading\", \"empty-state-label\", \"bottom-value\"])\n ])\n ], 4)\n ]),\n _: 1\n }, 8, [\"handle-gap\"]);\n };\n }\n});\n\nconst TwinListBody = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"__scopeId\", \"data-v-11062d8e\"]]);\n\nconst kdsTwinListSearchMode = {\n MANUAL: \"manual\",\n PATTERN: \"pattern\",\n TYPE: \"type\"\n};\nconst kdsTwinListSearchModes = Object.values(kdsTwinListSearchMode);\n\nconst _sfc_main$r = /* @__PURE__ */ defineComponent({\n __name: \"TwinListHeader\",\n props: /* @__PURE__ */ mergeModels({\n filterTypes: { default: () => void 0 },\n enablePatternFilter: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false }\n }, {\n \"mode\": {\n default: kdsTwinListSearchMode.MANUAL\n },\n \"modeModifiers\": {},\n \"pattern\": { default: \"\" },\n \"patternModifiers\": {},\n \"searchTerm\": { default: \"\" },\n \"searchTermModifiers\": {},\n \"selectedTypes\": {\n default: () => []\n },\n \"selectedTypesModifiers\": {},\n \"caseSensitive\": { type: Boolean, ...{ default: false } },\n \"caseSensitiveModifiers\": {},\n \"excludeMatches\": { type: Boolean, ...{\n default: false\n } },\n \"excludeMatchesModifiers\": {},\n \"useRegex\": { type: Boolean, ...{ default: false } },\n \"useRegexModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"update:regex\"], [\"update:mode\", \"update:pattern\", \"update:searchTerm\", \"update:selectedTypes\", \"update:caseSensitive\", \"update:excludeMatches\", \"update:useRegex\"]),\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const mode = useModel(__props, \"mode\");\n const pattern = useModel(__props, \"pattern\");\n const searchTerm = useModel(__props, \"searchTerm\");\n const selectedTypes = useModel(__props, \"selectedTypes\");\n const caseSensitive = useModel(__props, \"caseSensitive\");\n const excludeMatches = useModel(__props, \"excludeMatches\");\n const useRegex = useModel(__props, \"useRegex\");\n const modes = computed(() => [\n { id: kdsTwinListSearchMode.MANUAL, text: \"Manual\" },\n ...__props.enablePatternFilter ? [{ id: kdsTwinListSearchMode.PATTERN, text: \"Pattern\" }] : [],\n ...__props.filterTypes ? [{ id: kdsTwinListSearchMode.TYPE, text: \"Type\" }] : []\n ]);\n watch(\n [mode, () => __props.enablePatternFilter, () => __props.filterTypes],\n () => {\n if (!modes.value.some(({ id }) => id === mode.value)) {\n mode.value = kdsTwinListSearchMode.MANUAL;\n }\n },\n { immediate: true }\n );\n watch(mode, (newMode, oldMode) => {\n if (oldMode === kdsTwinListSearchMode.MANUAL && newMode !== kdsTwinListSearchMode.MANUAL) {\n searchTerm.value = \"\";\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n modes.value.length > 1 ? (openBlock(), createBlock(unref(KdsValueSwitch), {\n key: 0,\n modelValue: mode.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => mode.value = $event),\n ariaLabel: \"Selection mode\",\n disabled: __props.disabled,\n size: \"small\",\n variant: \"muted\",\n \"possible-values\": modes.value\n }, null, 8, [\"modelValue\", \"disabled\", \"possible-values\"])) : createCommentVNode(\"\", true),\n mode.value === unref(kdsTwinListSearchMode).MANUAL ? (openBlock(), createBlock(unref(KdsSearchInput), {\n key: 1,\n modelValue: searchTerm.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => searchTerm.value = $event),\n ariaLabel: \"Search values\",\n placeholder: \"Search\",\n disabled: __props.disabled\n }, null, 8, [\"modelValue\", \"disabled\"])) : mode.value === unref(kdsTwinListSearchMode).PATTERN ? (openBlock(), createBlock(unref(_sfc_main$I), {\n key: 2,\n modelValue: pattern.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => pattern.value = $event),\n \"case-sensitive\": caseSensitive.value,\n \"onUpdate:caseSensitive\": _cache[3] || (_cache[3] = ($event) => caseSensitive.value = $event),\n \"exclude-matches\": excludeMatches.value,\n \"onUpdate:excludeMatches\": _cache[4] || (_cache[4] = ($event) => excludeMatches.value = $event),\n \"use-regex\": useRegex.value,\n \"onUpdate:useRegex\": _cache[5] || (_cache[5] = ($event) => useRegex.value = $event),\n ariaLabel: \"Pattern\",\n placeholder: \"Pattern\",\n disabled: __props.disabled,\n \"onUpdate:regex\": _cache[6] || (_cache[6] = ($event) => emit(\"update:regex\", $event))\n }, null, 8, [\"modelValue\", \"case-sensitive\", \"exclude-matches\", \"use-regex\", \"disabled\"])) : (openBlock(), createBlock(unref(_sfc_main$w), {\n key: 3,\n modelValue: selectedTypes.value,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event) => selectedTypes.value = $event),\n \"possible-values\": __props.filterTypes ?? [],\n loading: __props.filterTypes === void 0,\n ariaLabel: \"Selected types\",\n disabled: __props.disabled\n }, null, 8, [\"modelValue\", \"possible-values\", \"loading\", \"disabled\"]))\n ], 64);\n };\n }\n});\n\nconst _hoisted_1$k = { class: \"kds-twin-list\" };\nconst _sfc_main$q = /* @__PURE__ */ defineComponent({\n __name: \"KdsTwinList\",\n props: /* @__PURE__ */ mergeModels({\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n possibleValues: {},\n filterTypes: { default: () => void 0 },\n enablePatternFilter: { type: Boolean, default: false },\n excludeLabel: {},\n includeLabel: {},\n unknownValuesText: {},\n emptyStateLabel: {},\n loading: { type: Boolean, default: false }\n }, {\n \"mode\": {\n default: kdsTwinListSearchMode.MANUAL\n },\n \"modeModifiers\": {},\n \"manuallyIncluded\": {\n default: () => []\n },\n \"manuallyIncludedModifiers\": {},\n \"manuallyExcluded\": {\n default: () => []\n },\n \"manuallyExcludedModifiers\": {},\n \"includeUnknownValues\": { type: [Boolean, null], ...{ default: null } },\n \"includeUnknownValuesModifiers\": {},\n \"pattern\": { default: \"\" },\n \"patternModifiers\": {},\n \"selectedTypes\": {\n default: () => []\n },\n \"selectedTypesModifiers\": {},\n \"caseSensitive\": { type: Boolean, ...{ default: false } },\n \"caseSensitiveModifiers\": {},\n \"excludeMatches\": { type: Boolean, ...{\n default: false\n } },\n \"excludeMatchesModifiers\": {},\n \"useRegex\": { type: Boolean, ...{ default: false } },\n \"useRegexModifiers\": {}\n }),\n emits: [\"update:mode\", \"update:manuallyIncluded\", \"update:manuallyExcluded\", \"update:includeUnknownValues\", \"update:pattern\", \"update:selectedTypes\", \"update:caseSensitive\", \"update:excludeMatches\", \"update:useRegex\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"disabled\", \"possibleValues\", \"filterTypes\", \"enablePatternFilter\", \"loading\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const mode = useModel(__props, \"mode\");\n const manuallyIncluded = useModel(__props, \"manuallyIncluded\");\n const manuallyExcluded = useModel(__props, \"manuallyExcluded\");\n const includeUnknownValues = useModel(\n __props,\n \"includeUnknownValues\"\n );\n const pattern = useModel(__props, \"pattern\");\n const selectedTypes = useModel(__props, \"selectedTypes\");\n const caseSensitive = useModel(__props, \"caseSensitive\");\n const excludeMatches = useModel(__props, \"excludeMatches\");\n const useRegex = useModel(__props, \"useRegex\");\n const searchTerm = ref(\"\");\n const patternRegex = ref(\"\");\n const allIds = computed(() => __props.possibleValues.map(({ id }) => id));\n const effectiveBodyModel = computed({\n get() {\n switch (mode.value) {\n case kdsTwinListSearchMode.PATTERN: {\n const trimmedPattern = patternRegex.value.trim();\n if (trimmedPattern === \"\") {\n const included2 = [];\n const includedSet2 = new Set(included2);\n return {\n includedValues: included2,\n excludedValues: allIds.value.filter((id) => !includedSet2.has(id)),\n includeUnknownValues: null\n };\n }\n let regexp = null;\n try {\n regexp = new RegExp(`^(?:${trimmedPattern})$`);\n } catch {\n regexp = null;\n }\n const included = regexp ? __props.possibleValues.filter((item) => regexp.test(item.text)).map(({ id }) => id) : [];\n const includedSet = new Set(included);\n return {\n includedValues: included,\n excludedValues: allIds.value.filter((id) => !includedSet.has(id)),\n includeUnknownValues: null\n };\n }\n case kdsTwinListSearchMode.TYPE: {\n const included = __props.possibleValues.filter((item) => selectedTypes.value.includes(item.type ?? \"\")).map(({ id }) => id);\n const includedSet = new Set(included);\n return {\n includedValues: included,\n excludedValues: allIds.value.filter((id) => !includedSet.has(id)),\n includeUnknownValues: null\n };\n }\n default:\n return {\n includedValues: manuallyIncluded.value,\n excludedValues: manuallyExcluded.value,\n includeUnknownValues: includeUnknownValues.value\n };\n }\n },\n set(value) {\n manuallyIncluded.value = value.includedValues;\n manuallyExcluded.value = value.excludedValues;\n includeUnknownValues.value = value.includeUnknownValues;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFieldsetWrapper, {\n id: props.id,\n label: props.label,\n ariaLabel: props.ariaLabel,\n description: props.description,\n \"sub-text\": props.subText,\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1$k, [\n createVNode(_sfc_main$r, {\n mode: mode.value,\n \"onUpdate:mode\": _cache[0] || (_cache[0] = ($event) => mode.value = $event),\n pattern: pattern.value,\n \"onUpdate:pattern\": _cache[1] || (_cache[1] = ($event) => pattern.value = $event),\n \"search-term\": searchTerm.value,\n \"onUpdate:searchTerm\": _cache[2] || (_cache[2] = ($event) => searchTerm.value = $event),\n \"selected-types\": selectedTypes.value,\n \"onUpdate:selectedTypes\": _cache[3] || (_cache[3] = ($event) => selectedTypes.value = $event),\n \"case-sensitive\": caseSensitive.value,\n \"onUpdate:caseSensitive\": _cache[4] || (_cache[4] = ($event) => caseSensitive.value = $event),\n \"exclude-matches\": excludeMatches.value,\n \"onUpdate:excludeMatches\": _cache[5] || (_cache[5] = ($event) => excludeMatches.value = $event),\n \"use-regex\": useRegex.value,\n \"onUpdate:useRegex\": _cache[6] || (_cache[6] = ($event) => useRegex.value = $event),\n disabled: __props.disabled,\n \"filter-types\": __props.filterTypes,\n \"enable-pattern-filter\": __props.enablePatternFilter,\n \"onUpdate:regex\": _cache[7] || (_cache[7] = ($event) => patternRegex.value = $event)\n }, null, 8, [\"mode\", \"pattern\", \"search-term\", \"selected-types\", \"case-sensitive\", \"exclude-matches\", \"use-regex\", \"disabled\", \"filter-types\", \"enable-pattern-filter\"]),\n createVNode(TwinListBody, {\n modelValue: effectiveBodyModel.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event) => effectiveBodyModel.value = $event),\n disabled: __props.disabled || mode.value !== unref(kdsTwinListSearchMode).MANUAL,\n error: __props.error,\n \"possible-values\": __props.possibleValues,\n \"search-term\": searchTerm.value,\n \"exclude-label\": props.excludeLabel,\n \"include-label\": props.includeLabel,\n \"unknown-values-text\": props.unknownValuesText,\n \"empty-state-label\": props.emptyStateLabel,\n loading: __props.loading\n }, null, 8, [\"modelValue\", \"disabled\", \"error\", \"possible-values\", \"search-term\", \"exclude-label\", \"include-label\", \"unknown-values-text\", \"empty-state-label\", \"loading\"])\n ])\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"ariaLabel\", \"description\", \"sub-text\", \"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsTwinList = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"__scopeId\", \"data-v-1a9327b5\"]]);\n\nconst useSortableListBoxReorder = ({\n orderedIds,\n selection,\n disabled\n}) => {\n const selectedIndices = computed(() => {\n const selected = new Set(selection.value);\n return orderedIds.value.map((id, i) => ({ id, index: i })).filter((v) => selected.has(v.id)).map((v) => v.index);\n });\n const canMoveUp = computed(\n () => !disabled.value && selectedIndices.value.length > 0 && selectedIndices.value[0] > 0\n );\n const canMoveDown = computed(\n () => !disabled.value && selectedIndices.value.length > 0 && selectedIndices.value[selectedIndices.value.length - 1] < orderedIds.value.length - 1\n );\n const reorder = (direction) => {\n const ids = [...orderedIds.value];\n const indices = selectedIndices.value;\n if (indices.length === 0) {\n return ids;\n }\n const movingIds = indices.map((i) => ids[i]);\n const indexSet = new Set(indices);\n const remaining = ids.filter((_, i) => !indexSet.has(i));\n let insertAt;\n if (direction === \"top\") {\n insertAt = 0;\n } else if (direction === \"bottom\") {\n insertAt = remaining.length;\n } else if (direction === \"up\") {\n insertAt = Math.max(0, indices[0] - 1);\n } else {\n insertAt = Math.min(\n remaining.length,\n indices[indices.length - 1] - indices.length + 2\n );\n }\n remaining.splice(insertAt, 0, ...movingIds);\n return remaining;\n };\n const sortByText = (ascending, optionLookup) => {\n const sorted = [...orderedIds.value].sort((a, b) => {\n const textA = optionLookup.get(a)?.text ?? a;\n const textB = optionLookup.get(b)?.text ?? b;\n return ascending ? textA.localeCompare(textB) : textB.localeCompare(textA);\n });\n return sorted;\n };\n return {\n selectedIndices,\n canMoveUp,\n canMoveDown,\n reorder,\n sortByText\n };\n};\n\nconst _hoisted_1$j = { class: \"kds-sortable-list-box-wrapper\" };\nconst _hoisted_2$9 = { class: \"kds-sortable-top-buttons\" };\nconst _hoisted_3$8 = { class: \"kds-sortable-top-buttons-left\" };\nconst _hoisted_4$7 = { class: \"kds-sortable-footer-buttons\" };\nconst _sfc_main$p = /* @__PURE__ */ defineComponent({\n __name: \"KdsSortableListBox\",\n props: /* @__PURE__ */ mergeModels({\n possibleValues: {},\n disabled: { type: Boolean, default: false },\n description: {},\n label: {},\n ariaLabel: {},\n id: {},\n subText: {},\n error: { type: Boolean, default: false },\n validating: { type: Boolean, default: false },\n preserveSubTextSpace: { type: Boolean, default: false }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const formFieldProps = createPropsRestProxy(__props, [\"possibleValues\", \"disabled\", \"error\", \"validating\", \"preserveSubTextSpace\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const selection = ref([]);\n const optionLookup = computed(() => {\n const map = /* @__PURE__ */ new Map();\n for (const option of __props.possibleValues) {\n map.set(option.id, option);\n }\n return map;\n });\n const orderedOptions = computed(\n () => modelValue.value.map(\n (id) => optionLookup.value.get(id) ?? { id, text: id, missing: true }\n )\n );\n const listBoxRef = useTemplateRef(\"listBoxRef\");\n const { canMoveUp, canMoveDown, reorder, sortByText } = useSortableListBoxReorder({\n orderedIds: modelValue,\n selection,\n disabled: toRef(() => __props.disabled)\n });\n const applyReorder = (newOrder) => {\n modelValue.value = newOrder;\n };\n const moveUp = () => canMoveUp.value && applyReorder(reorder(\"up\"));\n const moveDown = () => canMoveDown.value && applyReorder(reorder(\"down\"));\n const moveToTop = () => canMoveUp.value && applyReorder(reorder(\"top\"));\n const moveToBottom = () => canMoveDown.value && applyReorder(reorder(\"bottom\"));\n const resetOrder = () => applyReorder(__props.possibleValues.map((option) => option.id));\n const focus = () => listBoxRef.value?.focus();\n __expose({ focus });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseFieldsetWrapper, mergeProps(formFieldProps, {\n error: __props.error,\n validating: __props.validating,\n \"preserve-sub-text-space\": __props.preserveSubTextSpace\n }), {\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1$j, [\n createElementVNode(\"div\", _hoisted_2$9, [\n createElementVNode(\"div\", _hoisted_3$8, [\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"sort-descending\",\n label: \"A – Z\",\n disabled: __props.disabled,\n onClick: _cache[0] || (_cache[0] = ($event) => applyReorder(unref(sortByText)(true, optionLookup.value)))\n }, null, 8, [\"disabled\"]),\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"sort-ascending\",\n label: \"Z – A\",\n disabled: __props.disabled,\n onClick: _cache[1] || (_cache[1] = ($event) => applyReorder(unref(sortByText)(false, optionLookup.value)))\n }, null, 8, [\"disabled\"])\n ]),\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n destructive: \"\",\n label: \"Reset all\",\n disabled: __props.disabled,\n onClick: resetOrder\n }, null, 8, [\"disabled\"])\n ]),\n createVNode(KdsMultiSelectListBox, {\n ref_key: \"listBoxRef\",\n ref: listBoxRef,\n modelValue: selection.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => selection.value = $event),\n \"possible-values\": orderedOptions.value,\n disabled: __props.disabled,\n error: __props.error,\n \"use-resize-handle\": true,\n ariaLabel: formFieldProps.label ?? formFieldProps.ariaLabel ?? \"\"\n /* fallback only for TS */\n }, null, 8, [\"modelValue\", \"possible-values\", \"disabled\", \"error\", \"ariaLabel\"]),\n createElementVNode(\"div\", _hoisted_4$7, [\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"to-top\",\n label: \"Top\",\n title: \"Move to top\",\n disabled: __props.disabled || !unref(canMoveUp),\n onClick: moveToTop\n }, null, 8, [\"disabled\"]),\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"to-bottom\",\n label: \"Bottom\",\n title: \"Move to bottom\",\n disabled: __props.disabled || !unref(canMoveDown),\n onClick: moveToBottom\n }, null, 8, [\"disabled\"]),\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"arrow-up\",\n label: \"Up\",\n title: \"Move up\",\n disabled: __props.disabled || !unref(canMoveUp),\n onClick: moveUp\n }, null, 8, [\"disabled\"]),\n createVNode(_sfc_main$1s, {\n size: \"small\",\n variant: \"transparent\",\n \"leading-icon\": \"arrow-down\",\n label: \"Down\",\n title: \"Move down\",\n disabled: __props.disabled || !unref(canMoveDown),\n onClick: moveDown\n }, null, 8, [\"disabled\"])\n ])\n ])\n ]),\n _: 1\n }, 16, [\"error\", \"validating\", \"preserve-sub-text-space\"]);\n };\n }\n});\n\nconst KdsSortableListBox = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"__scopeId\", \"data-v-ee7b63e2\"]]);\n\nconst _hoisted_1$i = { class: \"kds-info-popover-content\" };\nconst _sfc_main$o = /* @__PURE__ */ defineComponent({\n __name: \"InfoPopover\",\n props: {\n content: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$i, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(props.content), 1)\n ], true)\n ]);\n };\n }\n});\n\nconst InfoPopover = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"__scopeId\", \"data-v-951f2a2b\"]]);\n\nconst _hoisted_1$h = [\"aria-pressed\", \"aria-expanded\", \"aria-controls\"];\nconst TITLE = \"Click for more information\";\nconst _sfc_main$n = /* @__PURE__ */ defineComponent({\n __name: \"KdsInfoToggleButton\",\n props: /* @__PURE__ */ mergeModels({\n content: {},\n hidden: { type: Boolean, default: false }\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"hidden\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const popoverEl = useTemplateRef(\"popoverEl\");\n const isHovered = ref(false);\n const isFocused = ref(false);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"button\", mergeProps(_ctx.$attrs, {\n class: {\n \"info-toggle-button\": true,\n selected: modelValue.value,\n hidden: __props.hidden && !modelValue.value && !isHovered.value && !isFocused.value\n },\n title: TITLE,\n \"aria-label\": TITLE,\n \"aria-pressed\": modelValue.value,\n \"aria-expanded\": modelValue.value,\n \"aria-controls\": popoverEl.value?.popoverId,\n \"aria-haspopup\": \"dialog\",\n style: popoverEl.value?.anchorStyle,\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = ($event) => modelValue.value = !modelValue.value),\n onMouseenter: _cache[1] || (_cache[1] = ($event) => isHovered.value = true),\n onMouseleave: _cache[2] || (_cache[2] = ($event) => isHovered.value = false),\n onFocus: _cache[3] || (_cache[3] = ($event) => isFocused.value = true),\n onBlur: _cache[4] || (_cache[4] = ($event) => isFocused.value = false)\n }), [\n createVNode(KdsIcon, {\n name: \"circle-question\",\n size: \"small\"\n })\n ], 16, _hoisted_1$h),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => modelValue.value = $event),\n placement: \"top-right\",\n role: \"dialog\",\n \"aria-label\": \"Description\"\n }, {\n default: withCtx(() => [\n createVNode(InfoPopover, {\n content: props.content\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"content\"])\n ]),\n _: 3\n }, 8, [\"modelValue\"])\n ], 64);\n };\n }\n});\n\nconst KdsInfoToggleButton = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"__scopeId\", \"data-v-2e9ef96a\"]]);\n\nconst KdsInfoToggleButton$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({\n __proto__: null,\n default: KdsInfoToggleButton\n}, Symbol.toStringTag, { value: 'Module' }));\n\nconst _hoisted_1$g = {\n class: \"kds-variable-popover\",\n tabindex: \"0\"\n};\nconst _sfc_main$m = /* @__PURE__ */ defineComponent({\n __name: \"VariablePopover\",\n props: {\n content: {}\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$g, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(props.content), 1)\n ], true)\n ]);\n };\n }\n});\n\nconst VariablePopover = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"__scopeId\", \"data-v-8a0c56d0\"]]);\n\nconst _hoisted_1$f = [\"title\", \"aria-label\", \"aria-pressed\", \"aria-expanded\", \"aria-controls\"];\nconst _sfc_main$l = /* @__PURE__ */ defineComponent({\n __name: \"KdsVariableToggleButton\",\n props: /* @__PURE__ */ mergeModels({\n content: {},\n hidden: { type: Boolean, default: false },\n inSet: { type: Boolean, default: false },\n outSet: { type: Boolean, default: false },\n error: { type: Boolean, default: false }\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const props = createPropsRestProxy(__props, [\"inSet\", \"outSet\", \"error\", \"hidden\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const popoverEl = useTemplateRef(\"popoverEl\");\n const isHovered = ref(false);\n const isFocused = ref(false);\n const iconState = computed(() => {\n if (__props.inSet && __props.outSet) {\n return \"in-out\";\n }\n if (__props.inSet) {\n return \"in\";\n }\n if (__props.outSet) {\n return \"out\";\n }\n return \"none\";\n });\n const iconName = computed(() => {\n switch (iconState.value) {\n case \"in\":\n return \"flow-variable-in\";\n case \"out\":\n return \"flow-variable-out\";\n case \"in-out\":\n return \"flow-variable-in-out\";\n case \"none\":\n default:\n return \"flow-variable-default\";\n }\n });\n const baseTitleByState = {\n in: \"Input Flow Variable\",\n out: \"Output Flow Variable\",\n \"in-out\": \"Input and Output Flow Variable\",\n none: \"No Flow Variable set\"\n };\n const errorTitleByState = {\n in: \"Error in input Flow Variable\",\n out: \"Error in output Flow Variable\",\n \"in-out\": \"Error in Flow Variables\"\n };\n const title = computed(() => {\n const baseTitle = baseTitleByState[iconState.value];\n if (!__props.error) {\n return baseTitle;\n }\n return errorTitleByState[iconState.value] ?? baseTitle;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"button\", mergeProps(_ctx.$attrs, {\n class: {\n \"variable-toggle-button\": true,\n error: __props.error,\n \"pressed-or-set\": modelValue.value || __props.inSet || __props.outSet,\n hidden: __props.hidden && !modelValue.value && !isHovered.value && !isFocused.value\n },\n title: title.value,\n \"aria-label\": title.value,\n \"aria-pressed\": modelValue.value,\n \"aria-expanded\": modelValue.value,\n \"aria-controls\": popoverEl.value?.popoverId,\n \"aria-haspopup\": \"dialog\",\n style: popoverEl.value?.anchorStyle,\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = ($event) => modelValue.value = !modelValue.value),\n onMouseenter: _cache[1] || (_cache[1] = ($event) => isHovered.value = true),\n onMouseleave: _cache[2] || (_cache[2] = ($event) => isHovered.value = false),\n onFocus: _cache[3] || (_cache[3] = ($event) => isFocused.value = true),\n onBlur: _cache[4] || (_cache[4] = ($event) => isFocused.value = false)\n }), [\n createVNode(KdsIcon, {\n name: iconName.value,\n size: \"small\"\n }, null, 8, [\"name\"])\n ], 16, _hoisted_1$f),\n createVNode(KdsPopover, {\n ref_key: \"popoverEl\",\n ref: popoverEl,\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event) => modelValue.value = $event),\n placement: \"bottom-right\",\n role: \"dialog\",\n \"aria-label\": \"Flow Variable settings\"\n }, {\n default: withCtx(() => [\n modelValue.value ? (openBlock(), createBlock(VariablePopover, {\n key: 0,\n content: props.content\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"content\"])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"modelValue\"])\n ], 64);\n };\n }\n});\n\nconst KdsVariableToggleButton = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"__scopeId\", \"data-v-b6d29842\"]]);\n\nconst _hoisted_1$e = { class: \"kds-accordion\" };\nconst _hoisted_2$8 = [\"name\", \"open\", \"onToggle\"];\nconst _hoisted_3$7 = [\"aria-disabled\", \"tabindex\", \"onClick\", \"onKeydown\"];\nconst _hoisted_4$6 = { class: \"kds-accordion-headline-container\" };\nconst _hoisted_5$3 = { class: \"kds-accordion-headline\" };\nconst _hoisted_6$1 = { class: \"kds-accordion-content\" };\nconst _sfc_main$k = /* @__PURE__ */ defineComponent({\n __name: \"KdsAccordion\",\n props: /* @__PURE__ */ mergeModels({\n items: {},\n singleExpand: { type: Boolean, default: false }\n }, {\n \"modelValue\": { required: false },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const itemIdsSet = computed(() => new Set(__props.items.map((item) => item.id)));\n const modelValue = useModel(__props, \"modelValue\");\n const getNormalizedExpandedItems = (expandedItemIds) => {\n const sanitizedExpandedItems = Array.from(new Set(expandedItemIds)).filter(\n (expandedItemId) => itemIdsSet.value.has(expandedItemId)\n );\n if (__props.singleExpand) {\n return sanitizedExpandedItems.slice(0, 1);\n }\n return sanitizedExpandedItems;\n };\n const normalizedModelExpandedItems = computed(\n () => getNormalizedExpandedItems(modelValue.value ?? [])\n );\n const setExpandedItems = (nextExpandedItems) => {\n modelValue.value = nextExpandedItems;\n };\n const areExpandedItemsEqual = (leftExpandedItems, rightExpandedItems) => leftExpandedItems.length === rightExpandedItems.length && leftExpandedItems.every(\n (value, index) => value === rightExpandedItems[index]\n );\n watch(\n () => [__props.items, __props.singleExpand, modelValue.value],\n () => {\n const currentModelExpandedItems = modelValue.value ?? [];\n const normalizedExpandedItems = normalizedModelExpandedItems.value;\n if (!areExpandedItemsEqual(currentModelExpandedItems, normalizedExpandedItems)) {\n setExpandedItems(normalizedExpandedItems);\n }\n },\n { immediate: true }\n );\n const expandedItems = computed(() => normalizedModelExpandedItems.value);\n const isItemExpanded = (itemId) => expandedItems.value.includes(itemId);\n const onSummaryClick = (event, item) => {\n if (item.disabled) {\n event.preventDefault();\n }\n };\n const onDetailsToggle = (event, item) => {\n const detailsEl = event.currentTarget;\n if (!(detailsEl instanceof HTMLDetailsElement)) {\n return;\n }\n const isOpen = detailsEl.open;\n if (item.disabled) {\n if (isOpen !== isItemExpanded(item.id)) {\n detailsEl.open = isItemExpanded(item.id);\n }\n return;\n }\n if (isOpen === isItemExpanded(item.id)) {\n return;\n }\n if (isOpen) {\n if (__props.singleExpand) {\n setExpandedItems([item.id]);\n return;\n }\n setExpandedItems([...expandedItems.value, item.id]);\n return;\n }\n setExpandedItems(expandedItems.value.filter((id) => id !== item.id));\n };\n const triggerRefs = ref({});\n const setTriggerRef = (itemId, triggerEl) => {\n let element = null;\n if (triggerEl instanceof Element) {\n element = triggerEl;\n } else if (triggerEl) {\n element = triggerEl.$el;\n }\n if (element instanceof HTMLElement) {\n triggerRefs.value[itemId] = element;\n return;\n }\n delete triggerRefs.value[itemId];\n };\n const focusTrigger = (itemId) => {\n triggerRefs.value[itemId]?.focus();\n };\n const handleTriggerKeydown = (event, currentItem) => {\n const enabledItemIds = __props.items.filter((item) => !item.disabled).map((item) => item.id);\n const currentItemIndex = enabledItemIds.indexOf(currentItem.id);\n if (currentItemIndex === -1 || enabledItemIds.length < 2) {\n return;\n }\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const nextItemIndex = (currentItemIndex + 1) % enabledItemIds.length;\n focusTrigger(enabledItemIds[nextItemIndex]);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n const nextItemIndex = (currentItemIndex - 1 + enabledItemIds.length) % enabledItemIds.length;\n focusTrigger(enabledItemIds[nextItemIndex]);\n break;\n }\n case \"Home\":\n event.preventDefault();\n focusTrigger(enabledItemIds[0]);\n break;\n case \"End\":\n event.preventDefault();\n focusTrigger(enabledItemIds[enabledItemIds.length - 1]);\n break;\n }\n };\n const accordionId = useId();\n const exclusiveGroupName = computed(\n () => __props.singleExpand ? `kds-accordion-${accordionId}` : void 0\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {\n return openBlock(), createElementBlock(\"details\", {\n key: item.id,\n class: \"kds-accordion-item\",\n name: exclusiveGroupName.value,\n open: isItemExpanded(item.id),\n onToggle: ($event) => onDetailsToggle($event, item)\n }, [\n createElementVNode(\"summary\", {\n ref_for: true,\n ref: (triggerEl) => setTriggerRef(item.id, triggerEl),\n class: \"kds-accordion-header\",\n \"aria-disabled\": item.disabled || void 0,\n tabindex: item.disabled ? -1 : void 0,\n onClick: ($event) => onSummaryClick($event, item),\n onKeydown: ($event) => handleTriggerKeydown($event, item)\n }, [\n createElementVNode(\"span\", _hoisted_4$6, [\n item.leadingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: item.leadingIcon,\n size: \"small\",\n disabled: item.disabled\n }, null, 8, [\"name\", \"disabled\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_5$3, toDisplayString(item.headline), 1)\n ]),\n createVNode(KdsIcon, {\n name: isItemExpanded(item.id) ? \"chevron-up\" : \"chevron-down\",\n size: \"small\"\n }, null, 8, [\"name\"])\n ], 40, _hoisted_3$7),\n createElementVNode(\"div\", _hoisted_6$1, [\n renderSlot(_ctx.$slots, item.id, { item }, void 0, true)\n ])\n ], 40, _hoisted_2$8);\n }), 128))\n ]);\n };\n }\n});\n\nconst KdsAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"__scopeId\", \"data-v-96dcd299\"]]);\n\nconst _hoisted_1$d = { class: \"kds-card-header\" };\nconst _hoisted_2$7 = {\n key: 0,\n class: \"accessory\"\n};\nconst _hoisted_3$6 = { key: 1 };\nconst _hoisted_4$5 = {\n key: 2,\n class: \"actions\",\n \"data-kds-card-secondary-action\": \"\"\n};\nconst _sfc_main$j = /* @__PURE__ */ defineComponent({\n __name: \"CardHeader\",\n props: {\n headline: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$d, [\n _ctx.$slots.accessory ? (openBlock(), createElementBlock(\"div\", _hoisted_2$7, [\n renderSlot(_ctx.$slots, \"accessory\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n __props.headline ? (openBlock(), createElementBlock(\"h6\", _hoisted_3$6, toDisplayString(__props.headline), 1)) : createCommentVNode(\"\", true),\n _ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_4$5, [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst CardHeader = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"__scopeId\", \"data-v-09093cc0\"]]);\n\nconst _sfc_main$i = /* @__PURE__ */ defineComponent({\n __name: \"BaseCard\",\n props: {\n variant: {},\n headline: {},\n clickable: { type: Boolean, default: false },\n selected: { type: Boolean, default: false }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-base-card\", [`variant-${__props.variant}`, { selected: __props.selected, clickable: __props.clickable }]])\n }, [\n renderSlot(_ctx.$slots, \"primary-action\", {}, void 0, true),\n _ctx.$slots[\"header-accessory\"] || _ctx.$slots[\"header-actions\"] || __props.headline ? (openBlock(), createBlock(CardHeader, {\n key: 0,\n headline: __props.headline\n }, createSlots({ _: 2 }, [\n _ctx.$slots[\"header-accessory\"] ? {\n name: \"accessory\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-accessory\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0,\n _ctx.$slots[\"header-actions\"] ? {\n name: \"actions\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-actions\", {}, void 0, true)\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"headline\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2);\n };\n }\n});\n\nconst BaseCard = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"__scopeId\", \"data-v-a1aff6d6\"]]);\n\nconst _sfc_main$h = /* @__PURE__ */ defineComponent({\n __name: \"KdsCard\",\n props: {\n variant: { default: \"outlined\" },\n headline: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseCard, {\n variant: __props.variant,\n class: \"kds-card\",\n headline: __props.headline\n }, createSlots({\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 2\n }, [\n _ctx.$slots[\"header-actions\"] ? {\n name: \"header-actions\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-actions\")\n ]),\n key: \"0\"\n } : void 0,\n _ctx.$slots[\"header-accessory\"] ? {\n name: \"header-accessory\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-accessory\")\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"variant\", \"headline\"]);\n };\n }\n});\n\nconst _hoisted_1$c = [\"aria-label\", \"aria-labelledby\", \"disabled\"];\nconst _sfc_main$g = /* @__PURE__ */ defineComponent({\n __name: \"KdsClickableCard\",\n props: {\n variant: { default: \"filled\" },\n headline: {},\n disabled: { type: Boolean, default: false },\n ariaLabel: {},\n ariaLabelledby: {}\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const onClick = (event) => {\n if (__props.disabled) {\n return;\n }\n emit(\"click\", event);\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseCard, {\n variant: __props.variant,\n clickable: !__props.disabled,\n headline: __props.headline,\n class: \"kds-clickable-card\"\n }, createSlots({\n \"primary-action\": withCtx(() => [\n createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": __props.ariaLabel ? __props.ariaLabel : __props.headline,\n \"aria-labelledby\": __props.ariaLabelledby,\n disabled: __props.disabled,\n \"data-kds-card-primary-action\": \"\",\n onClick\n }, null, 8, _hoisted_1$c)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 2\n }, [\n _ctx.$slots[\"header-actions\"] ? {\n name: \"header-actions\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-actions\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0,\n _ctx.$slots[\"header-accessory\"] ? {\n name: \"header-accessory\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-accessory\", {}, void 0, true)\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"variant\", \"clickable\", \"headline\"]);\n };\n }\n});\n\nconst KdsClickableCard = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"__scopeId\", \"data-v-04004cbf\"]]);\n\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n __name: \"KdsLinkCard\",\n props: {\n variant: { default: \"filled\" },\n headline: {},\n to: {},\n download: { type: Boolean },\n target: {},\n rel: {},\n disabled: { type: Boolean, default: false },\n ariaLabel: {},\n ariaLabelledby: {}\n },\n setup(__props) {\n const linkComponent = computed(() => {\n return resolveNuxtLinkComponent();\n });\n const ariaLabelWithFallback = computed(() => __props.ariaLabel || __props.headline);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseCard, {\n variant: __props.variant,\n clickable: !__props.disabled,\n class: \"kds-link-card\",\n \"aria-disabled\": __props.disabled ? true : void 0,\n \"aria-label\": __props.disabled ? ariaLabelWithFallback.value : void 0,\n \"aria-labelledby\": __props.disabled ? __props.ariaLabelledby : void 0,\n headline: __props.headline\n }, createSlots({\n \"primary-action\": withCtx(() => [\n !__props.disabled ? (openBlock(), createBlock(resolveDynamicComponent(linkComponent.value), {\n key: 0,\n to: __props.to,\n \"data-kds-card-primary-action\": \"\",\n \"aria-label\": ariaLabelWithFallback.value,\n \"aria-labelledby\": __props.ariaLabelledby,\n download: __props.download,\n rel: __props.rel,\n target: __props.target\n }, null, 8, [\"to\", \"aria-label\", \"aria-labelledby\", \"download\", \"rel\", \"target\"])) : createCommentVNode(\"\", true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 2\n }, [\n _ctx.$slots[\"header-actions\"] ? {\n name: \"header-actions\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-actions\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0,\n _ctx.$slots[\"header-accessory\"] ? {\n name: \"header-accessory\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-accessory\", {}, void 0, true)\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"variant\", \"clickable\", \"aria-disabled\", \"aria-label\", \"aria-labelledby\", \"headline\"]);\n };\n }\n});\n\nconst KdsLinkCard = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"__scopeId\", \"data-v-1696fd9e\"]]);\n\nconst _hoisted_1$b = [\"aria-label\", \"aria-labelledby\", \"disabled\", \"aria-pressed\"];\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n __name: \"KdsSelectableCard\",\n props: /* @__PURE__ */ mergeModels({\n variant: { default: \"filled\" },\n headline: {},\n disabled: { type: Boolean, default: false },\n ariaLabel: {},\n ariaLabelledby: {}\n }, {\n \"modelValue\": { type: Boolean, ...{ default: false } },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const onClick = () => {\n if (__props.disabled) {\n return;\n }\n modelValue.value = !modelValue.value;\n };\n return (_ctx, _cache) => {\n return openBlock(), createBlock(BaseCard, {\n variant: __props.variant,\n selected: modelValue.value,\n clickable: !__props.disabled,\n headline: __props.headline,\n class: \"kds-selectable-card\"\n }, createSlots({\n \"primary-action\": withCtx(() => [\n createElementVNode(\"button\", {\n type: \"button\",\n \"aria-label\": __props.ariaLabel ? __props.ariaLabel : __props.headline,\n \"aria-labelledby\": __props.ariaLabelledby,\n disabled: __props.disabled,\n \"aria-pressed\": modelValue.value,\n \"data-kds-card-primary-action\": \"\",\n onClick\n }, null, 8, _hoisted_1$b)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 2\n }, [\n _ctx.$slots[\"header-actions\"] ? {\n name: \"header-actions\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-actions\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0,\n _ctx.$slots[\"header-accessory\"] ? {\n name: \"header-accessory\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"header-accessory\", {}, void 0, true)\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"variant\", \"selected\", \"clickable\", \"headline\"]);\n };\n }\n});\n\nconst KdsSelectableCard = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"__scopeId\", \"data-v-af9b9bf6\"]]);\n\nconst kdsCardVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\"\n};\nconst kdsCardVariants = Object.values(kdsCardVariant);\n\nconst kdsPanelBodyOverflow = {\n AUTO: \"auto\",\n HIDDEN: \"hidden\",\n VISIBLE: \"visible\"\n};\nconst kdsPanelBodyOverflows = Object.values(kdsPanelBodyOverflow);\nconst kdsPanelBodyVariant = {\n PADDED: \"padded\",\n PLAIN: \"plain\"\n};\nconst kdsPanelBodyVariants = Object.values(kdsPanelBodyVariant);\n\nconst _hoisted_1$a = { class: \"kds-panel\" };\nconst _hoisted_2$6 = {\n key: 0,\n class: \"kds-panel-header\"\n};\nconst _hoisted_3$5 = [\"id\"];\nconst _hoisted_4$4 = {\n key: 0,\n class: \"kds-panel-headline-text\"\n};\nconst _hoisted_5$2 = {\n key: 1,\n class: \"kds-panel-header-trailing\"\n};\nconst _hoisted_6 = [\"data-variant\", \"tabindex\", \"aria-labelledby\", \"aria-label\"];\nconst _hoisted_7 = {\n key: 1,\n class: \"kds-panel-footer\"\n};\nconst _hoisted_8 = { class: \"kds-panel-footer-leading\" };\nconst _hoisted_9 = { class: \"kds-panel-footer-trailing\" };\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n __name: \"KdsPanel\",\n props: {\n headline: {},\n headlineTrailingActions: {},\n footerLeadingActions: {},\n footerTrailingActions: {},\n ariaLabel: {},\n bodyOverflow: { default: () => kdsPanelBodyOverflow.AUTO },\n bodyVariant: { default: () => kdsPanelBodyVariant.PADDED }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v2ddcad1c\": _ctx.bodyOverflow\n }));\n const headlineId = useId();\n const hasHeader = computed(\n () => Boolean(__props.headline) || Boolean(__props.headlineTrailingActions?.length)\n );\n const isBodyKeyboardFocusable = computed(\n () => __props.bodyOverflow !== kdsPanelBodyOverflow.HIDDEN\n );\n const bodyAriaLabel = computed(\n () => isBodyKeyboardFocusable.value && __props.ariaLabel ? __props.ariaLabel : void 0\n );\n const slotHeadlineId = computed(\n () => typeof __props.headline === \"string\" ? headlineId : void 0\n );\n const bodyAriaLabelledBy = computed(\n () => isBodyKeyboardFocusable.value && !bodyAriaLabel.value ? slotHeadlineId.value : void 0\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$a, [\n hasHeader.value ? (openBlock(), createElementBlock(\"div\", _hoisted_2$6, [\n __props.headline ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: unref(headlineId),\n class: \"kds-panel-headline\"\n }, [\n typeof __props.headline === \"string\" ? (openBlock(), createElementBlock(\"h6\", _hoisted_4$4, toDisplayString(__props.headline), 1)) : __props.headline.type === \"button\" ? (openBlock(), createBlock(_sfc_main$1s, mergeProps({ key: 1 }, __props.headline.props, {\n size: \"small\",\n onClick: __props.headline.onClick\n }), null, 16, [\"onClick\"])) : __props.headline.type === \"menuButton\" ? (openBlock(), createBlock(_sfc_main$1h, mergeProps({ key: 2 }, __props.headline.props, {\n size: \"small\",\n onItemClick: __props.headline.onItemClick\n }), null, 16, [\"onItemClick\"])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_3$5)) : createCommentVNode(\"\", true),\n __props.headlineTrailingActions?.length ? (openBlock(), createElementBlock(\"div\", _hoisted_5$2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.headlineTrailingActions, (action, index) => {\n return openBlock(), createElementBlock(Fragment, { key: index }, [\n action.type === \"button\" ? (openBlock(), createBlock(_sfc_main$1s, mergeProps({\n key: 0,\n ref_for: true\n }, action.props, {\n size: \"small\",\n onClick: action.onClick\n }), null, 16, [\"onClick\"])) : action.type === \"toggleButton\" ? (openBlock(), createBlock(_sfc_main$1p, mergeProps({\n key: 1,\n ref_for: true\n }, action.props, {\n size: \"small\",\n \"onUpdate:modelValue\": action.onUpdateModelValue\n }), null, 16, [\"onUpdate:modelValue\"])) : action.type === \"menuButton\" ? (openBlock(), createBlock(_sfc_main$1h, mergeProps({\n key: 2,\n ref_for: true\n }, action.props, {\n size: \"small\",\n onItemClick: action.onItemClick\n }), null, 16, [\"onItemClick\"])) : action.type === \"valueSwitch\" ? (openBlock(), createBlock(KdsValueSwitch, mergeProps({\n key: 3,\n ref_for: true\n }, action.props, {\n size: \"small\",\n \"onUpdate:modelValue\": action.onUpdateModelValue\n }), null, 16, [\"onUpdate:modelValue\"])) : createCommentVNode(\"\", true)\n ], 64);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: \"kds-panel-body\",\n \"data-variant\": __props.bodyVariant,\n tabindex: isBodyKeyboardFocusable.value ? 0 : void 0,\n \"aria-labelledby\": bodyAriaLabelledBy.value,\n \"aria-label\": bodyAriaLabel.value\n }, [\n renderSlot(_ctx.$slots, \"default\", { headlineId: slotHeadlineId.value }, void 0, true)\n ], 8, _hoisted_6),\n __props.footerLeadingActions?.length || __props.footerTrailingActions?.length ? (openBlock(), createElementBlock(\"div\", _hoisted_7, [\n createElementVNode(\"div\", _hoisted_8, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.footerLeadingActions, (action, index) => {\n return openBlock(), createBlock(_sfc_main$1s, mergeProps({\n key: `leading-${index}`\n }, { ref_for: true }, action.props, {\n onClick: action.onClick\n }), null, 16, [\"onClick\"]);\n }), 128))\n ]),\n createElementVNode(\"div\", _hoisted_9, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.footerTrailingActions, (action, index) => {\n return openBlock(), createBlock(_sfc_main$1s, mergeProps({\n key: `trailing-${index}`\n }, { ref_for: true }, action.props, {\n onClick: action.onClick\n }), null, 16, [\"onClick\"]);\n }), 128))\n ])\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\n\nconst KdsPanel = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"__scopeId\", \"data-v-d3124a50\"]]);\n\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n __name: \"TabBarItemAccessory\",\n props: {\n accessory: {},\n iconSize: {},\n disabled: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n return (_ctx, _cache) => {\n return props.accessory.type === \"icon\" ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: props.accessory.name,\n size: props.iconSize,\n class: \"kds-tab-icon\",\n disabled: props.disabled\n }, null, 8, [\"name\", \"size\", \"disabled\"])) : props.accessory.type === \"liveStatus\" ? (openBlock(), createBlock(KdsLiveStatus, {\n key: 1,\n status: props.accessory.status,\n class: \"kds-tab-live-status\"\n }, null, 8, [\"status\"])) : createCommentVNode(\"\", true);\n };\n }\n});\n\nconst useTabBarAdaptiveLayout = ({\n width,\n tabs,\n containerEl,\n fullWidth,\n minTabWidth\n}) => {\n const itemEls = shallowRef(\n /* @__PURE__ */ new Map()\n );\n onBeforeUpdate(() => {\n itemEls.value = /* @__PURE__ */ new Map();\n });\n const setItemEl = (key, el) => {\n const elementToRegister = el && typeof el === \"object\" && \"$el\" in el ? el.$el : el;\n if (elementToRegister instanceof HTMLButtonElement) {\n itemEls.value.set(key, elementToRegister);\n }\n };\n const hasLabelEllipsis = (key) => {\n const el = itemEls.value.get(key);\n if (!el) {\n return false;\n }\n const label = el.querySelector(\".kds-tab-label\");\n return elementOverflowsHorizontally(label);\n };\n const anyItemHasEllipsis = () => tabs.value.some((tab) => {\n if (tab.accessory?.type !== \"icon\") {\n return false;\n }\n return hasLabelEllipsis(tab.value);\n });\n const isOverflowing = () => {\n const el = containerEl.value;\n if (!el) {\n return false;\n }\n return el.scrollWidth > el.clientWidth + 1;\n };\n const shouldHideIconsOnEllipsis = ref(false);\n const shouldHideIconsOnOverflow = ref(false);\n const updateTabMinWidths = () => {\n if (fullWidth?.value || !minTabWidth) {\n return;\n }\n const el = containerEl.value;\n if (!el) {\n return;\n }\n const tokenPx = Number.parseFloat(\n getComputedStyle(el).getPropertyValue(minTabWidth)\n );\n if (Number.isNaN(tokenPx) || tokenPx <= 0) {\n return;\n }\n const entries = [...itemEls.value.entries()];\n const tabsByKey = new Map(tabs.value.map((tab) => [tab.value, tab]));\n for (const [key, tabEl] of entries) {\n tabEl.style.flexShrink = \"0\";\n tabEl.style.minWidth = \"0\";\n if (tabsByKey.get(key)?.accessory?.type === \"icon\") {\n const accessory = tabEl.firstElementChild;\n if (accessory instanceof HTMLElement && !accessory.classList.contains(\"kds-tab-label\")) {\n accessory.style.display = \"none\";\n }\n }\n }\n const naturalWidths = entries.map(\n ([, tabEl]) => tabEl.getBoundingClientRect().width\n );\n for (let i = 0; i < entries.length; i++) {\n const [key, tabEl] = entries[i];\n tabEl.style.flexShrink = \"\";\n if (tabsByKey.get(key)?.accessory?.type === \"icon\") {\n const accessory = tabEl.firstElementChild;\n if (accessory instanceof HTMLElement && !accessory.classList.contains(\"kds-tab-label\")) {\n accessory.style.display = \"\";\n }\n }\n tabEl.style.minWidth = naturalWidths[i] < tokenPx ? `${naturalWidths[i]}px` : \"\";\n }\n };\n watch(\n () => [width.value, tabs.value, containerEl.value],\n async () => {\n shouldHideIconsOnEllipsis.value = false;\n shouldHideIconsOnOverflow.value = false;\n await nextTick();\n updateTabMinWidths();\n shouldHideIconsOnEllipsis.value = anyItemHasEllipsis();\n shouldHideIconsOnOverflow.value = isOverflowing();\n },\n { immediate: true }\n );\n const shouldHideIcons = computed(\n () => shouldHideIconsOnOverflow.value || shouldHideIconsOnEllipsis.value\n );\n return {\n shouldHideIcons,\n setItemEl,\n minTabWidth\n };\n};\n\nconst _hoisted_1$9 = { class: \"kds-tab-bar-wrapper\" };\nconst _hoisted_2$5 = [\"id\", \"title\", \"aria-selected\", \"aria-controls\", \"tabindex\", \"disabled\", \"onClick\", \"onKeydown\"];\nconst _hoisted_3$4 = { class: \"kds-tab-label\" };\nconst _hoisted_4$3 = {\n key: 1,\n class: \"kds-tab-indicator\"\n};\nconst MIN_TAB_WIDTH_TOKEN = \"--kds-dimension-component-width-4x\";\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n __name: \"KdsTabBar\",\n props: /* @__PURE__ */ mergeModels({\n tabs: {},\n size: { default: \"small\" },\n fullWidth: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false }\n }, {\n \"modelValue\": { required: false },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v09be89a3\": minTabWidthCss\n }));\n const props = createPropsRestProxy(__props, [\"size\", \"fullWidth\", \"disabled\"]);\n const modelValue = useModel(__props, \"modelValue\");\n const tabEls = useTemplateRefsList();\n const getTabEl = (value) => {\n const idx = props.tabs.findIndex((t) => t.value === value);\n return tabEls.value[idx];\n };\n const isTabDisabled = (tab) => __props.disabled || tab.disabled;\n const selectTab = (tab) => {\n if (!isTabDisabled(tab) && modelValue.value !== tab.value) {\n modelValue.value = tab.value;\n }\n };\n const getEnabledTabs = () => props.tabs.filter((tab) => !isTabDisabled(tab));\n const focusAndSelect = (tab) => {\n selectTab(tab);\n getTabEl(tab.value)?.focus();\n };\n const handleKeydown = (event, currentTab) => {\n const enabledTabs = getEnabledTabs();\n const currentIndex = enabledTabs.findIndex(\n (tab) => tab.value === currentTab.value\n );\n switch (event.key) {\n case \"ArrowLeft\": {\n event.preventDefault();\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : enabledTabs.length - 1;\n focusAndSelect(enabledTabs[prevIndex]);\n break;\n }\n case \"ArrowRight\": {\n event.preventDefault();\n const nextIndex = currentIndex < enabledTabs.length - 1 ? currentIndex + 1 : 0;\n focusAndSelect(enabledTabs[nextIndex]);\n break;\n }\n case \"Home\":\n event.preventDefault();\n focusAndSelect(enabledTabs[0]);\n break;\n case \"End\":\n event.preventDefault();\n focusAndSelect(enabledTabs[enabledTabs.length - 1]);\n break;\n }\n };\n const availableWidthContainer = useTemplateRef(\n \"availableWidthContainer\"\n );\n const { width } = useElementSize(availableWidthContainer);\n const { shouldHideIcons, setItemEl, minTabWidth } = useTabBarAdaptiveLayout({\n width,\n tabs: toRef(props, \"tabs\"),\n containerEl: availableWidthContainer,\n fullWidth: toRef(() => __props.fullWidth),\n minTabWidth: MIN_TAB_WIDTH_TOKEN\n });\n const minTabWidthCss = `var(${minTabWidth})`;\n const tabBarClass = computed(() => ({\n \"kds-tab-bar\": true,\n [`kds-tab-bar-${__props.size}`]: true,\n \"kds-tab-bar-full-width\": __props.fullWidth\n }));\n const focusableTabValue = computed(() => {\n const enabledTabs = getEnabledTabs();\n const selectedIsEnabled = enabledTabs.some(\n (tab) => tab.value === modelValue.value\n );\n if (selectedIsEnabled) {\n return modelValue.value;\n }\n return enabledTabs[0]?.value ?? null;\n });\n const truncatedTabs = ref(/* @__PURE__ */ new Set());\n watch(\n () => [width.value, shouldHideIcons.value, props.tabs],\n async () => {\n await nextTick();\n const newSet = /* @__PURE__ */ new Set();\n for (let i = 0; i < props.tabs.length; i++) {\n const el = tabEls.value[i];\n const label = el?.querySelector(\".kds-tab-label\");\n if (elementOverflowsHorizontally(label)) {\n newSet.add(props.tabs[i].value);\n }\n }\n truncatedTabs.value = newSet;\n },\n { immediate: true }\n );\n const getTabTitle = (tab) => truncatedTabs.value.has(tab.value) ? tab.title ?? tab.label : void 0;\n watch(\n () => [props.tabs, __props.disabled, modelValue.value],\n () => {\n const enabledTabs = getEnabledTabs();\n const isCurrentSelectionValid = enabledTabs.some(\n (tab) => tab.value === modelValue.value\n );\n if (!isCurrentSelectionValid) {\n const firstEnabled = enabledTabs[0];\n if (firstEnabled) {\n modelValue.value = firstEnabled.value;\n }\n }\n },\n { immediate: true }\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$9, [\n createElementVNode(\"div\", {\n ref_key: \"availableWidthContainer\",\n ref: availableWidthContainer,\n class: normalizeClass(tabBarClass.value),\n role: \"tablist\"\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {\n return openBlock(), createElementBlock(\"button\", {\n id: tab.id,\n key: tab.value,\n ref_for: true,\n ref: (el) => {\n unref(tabEls).set(el);\n unref(setItemEl)(tab.value, el);\n },\n type: \"button\",\n role: \"tab\",\n title: getTabTitle(tab),\n \"aria-selected\": modelValue.value === tab.value,\n \"aria-controls\": tab.panelId,\n tabindex: focusableTabValue.value === tab.value ? 0 : -1,\n disabled: isTabDisabled(tab),\n class: normalizeClass({\n \"kds-tab\": true,\n \"kds-tab-selected\": modelValue.value === tab.value\n }),\n onClick: ($event) => selectTab(tab),\n onKeydown: ($event) => handleKeydown($event, tab)\n }, [\n tab.accessory && !(tab.accessory.type === \"icon\" && unref(shouldHideIcons)) ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n accessory: tab.accessory,\n \"icon-size\": __props.size === \"large\" ? \"large\" : \"medium\",\n disabled: isTabDisabled(tab)\n }, null, 8, [\"accessory\", \"icon-size\", \"disabled\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_3$4, toDisplayString(tab.label), 1),\n modelValue.value === tab.value ? (openBlock(), createElementBlock(\"span\", _hoisted_4$3)) : createCommentVNode(\"\", true)\n ], 42, _hoisted_2$5);\n }), 128))\n ], 2)\n ]);\n };\n }\n});\n\nconst KdsTabBar = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"__scopeId\", \"data-v-91f95f5f\"]]);\n\nconst kdsTabBarSize = {\n SMALL: \"small\",\n LARGE: \"large\"\n};\nconst kdsTabBarSizes = Object.values(kdsTabBarSize);\n\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"LoadingSkeletonItem\",\n props: {\n shape: { default: \"text\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"kds-loading-skeleton-item\", __props.shape]),\n \"aria-hidden\": \"true\"\n }, null, 2);\n };\n }\n});\n\nconst LoadingSkeletonItem = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"__scopeId\", \"data-v-86829b28\"]]);\n\nconst _hoisted_1$8 = {\n key: 0,\n class: \"kds-loading-skeleton\",\n \"aria-busy\": \"true\"\n};\nconst _hoisted_2$4 = {\n key: 0,\n class: \"kds-loading-skeleton-headline-with-paragraph\"\n};\nconst _hoisted_3$3 = { class: \"kds-loading-skeleton-paragraph-lines\" };\nconst _hoisted_4$2 = {\n key: 1,\n class: \"kds-loading-skeleton-input-with-label\"\n};\nconst _hoisted_5$1 = { class: \"kds-loading-skeleton-list-item-text\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"KdsLoadingSkeleton\",\n props: {\n variant: { default: \"text\" },\n loading: { type: Boolean, default: true },\n repeat: { default: 1 },\n repeatGap: { default: \"var(--kds-spacing-container-1x)\" }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v59c08829\": _ctx.repeatGap\n }));\n return (_ctx, _cache) => {\n return __props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_1$8, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.repeat, (index) => {\n return openBlock(), createElementBlock(Fragment, {\n key: `skeleton-${index}`\n }, [\n __props.variant === \"headline-with-paragraph\" ? (openBlock(), createElementBlock(\"div\", _hoisted_2$4, [\n createVNode(LoadingSkeletonItem, {\n shape: \"text\",\n class: \"headline\"\n }),\n createElementVNode(\"div\", _hoisted_3$3, [\n createVNode(LoadingSkeletonItem, { shape: \"text\" }),\n createVNode(LoadingSkeletonItem, { shape: \"text\" }),\n createVNode(LoadingSkeletonItem, { shape: \"text\" })\n ])\n ])) : __props.variant === \"input-with-label\" ? (openBlock(), createElementBlock(\"div\", _hoisted_4$2, [\n createVNode(LoadingSkeletonItem, {\n shape: \"label\",\n class: \"label\"\n }),\n createVNode(LoadingSkeletonItem, { shape: \"input-with-label\" })\n ])) : __props.variant?.startsWith(\"list-item-\") ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\n \"kds-loading-skeleton-list-item\",\n {\n \"kds-loading-skeleton-list-item-large\": __props.variant.startsWith(\"list-item-large\"),\n \"kds-loading-skeleton-list-item-large-with-subtext\": __props.variant === \"list-item-large-with-subtext\",\n \"kds-loading-skeleton-list-item-small\": __props.variant.startsWith(\"list-item-small\")\n }\n ])\n }, [\n createVNode(LoadingSkeletonItem, {\n shape: __props.variant.startsWith(\"list-item-large\") ? \"icon-large\" : \"icon-small\"\n }, null, 8, [\"shape\"]),\n createElementVNode(\"div\", _hoisted_5$1, [\n createVNode(LoadingSkeletonItem, { shape: \"text\" }),\n __props.variant.endsWith(\"subtext\") ? (openBlock(), createBlock(LoadingSkeletonItem, {\n key: 0,\n shape: \"text\"\n })) : createCommentVNode(\"\", true)\n ])\n ], 2)) : (openBlock(), createBlock(LoadingSkeletonItem, {\n key: 3,\n shape: __props.variant\n }, null, 8, [\"shape\"]))\n ], 64);\n }), 128))\n ])) : (openBlock(), createElementBlock(\"div\", mergeProps({ key: 1 }, _ctx.$attrs, { \"aria-busy\": \"false\" }), [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 16));\n };\n }\n});\n\nconst KdsLoadingSkeleton = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-e6597718\"]]);\n\nconst loadingSkeletonItemShape = {\n TEXT: \"text\",\n LABEL: \"label\",\n ICON_LARGE: \"icon-large\",\n ICON_MEDIUM: \"icon-medium\",\n ICON_SMALL: \"icon-small\",\n BUTTON_LARGE: \"button-large\",\n BUTTON_MEDIUM: \"button-medium\",\n BUTTON_SMALL: \"button-small\",\n BUTTON_XSMALL: \"button-xsmall\",\n CARD: \"card\",\n INPUT_WITH_LABEL: \"input-with-label\"\n};\nconst kdsLoadingSkeletonVariant = {\n ...loadingSkeletonItemShape,\n HEADLINE_WITH_PARAGRAPH: \"headline-with-paragraph\",\n LIST_ITEM_LARGE: \"list-item-large\",\n LIST_ITEM_LARGE_WITH_SUBTEXT: \"list-item-large-with-subtext\",\n LIST_ITEM_SMALL: \"list-item-small\",\n LIST_ITEM_SMALL_WITH_SUBTEXT: \"list-item-small-with-subtext\"\n};\nconst kdsLoadingSkeletonVariants = Object.values(\n kdsLoadingSkeletonVariant\n);\n\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"KdsNavItem\",\n props: {\n label: {},\n to: {},\n leadingIcon: {},\n trailingIcon: {},\n trailingButton: {},\n badge: {},\n selected: { type: Boolean },\n disabled: { type: Boolean }\n },\n emits: [\"click\", \"trailingButtonClick\"],\n setup(__props, { emit: __emit }) {\n useCssVars((_ctx) => ({\n \"v29854424\": paddingRight.value\n }));\n const props = __props;\n const emit = __emit;\n const onClick = (event) => emit(\"click\", event);\n const onButtonClick = (event) => {\n event.stopPropagation();\n emit(\"trailingButtonClick\", event);\n };\n const labelEl = useTemplateRef(\"labelEl\");\n const { isTruncated: isLabelTruncated } = useKdsIsTruncated(labelEl);\n const navComponent = computed(() => {\n if (props.disabled || !props.to) {\n return \"button\";\n }\n return resolveNuxtLinkComponent();\n });\n const navComponentAttrs = computed(() => {\n if (navComponent.value === \"button\") {\n return { type: \"button\" };\n }\n return { to: props.to };\n });\n const hasTrailingItems = computed(\n () => Boolean(props.trailingIcon) || Boolean(props.badge) || Boolean(props.trailingButton)\n );\n const trailingItemsEl = useTemplateRef(\"trailingItemsEl\");\n const trailingItemsWidth = ref(0);\n useResizeObserver(trailingItemsEl, ([entry]) => {\n trailingItemsWidth.value = entry.contentRect.width;\n });\n const paddingRight = computed(\n () => hasTrailingItems.value ? `calc(${trailingItemsWidth.value}px + 2 * var(--kds-spacing-container-0-75x))` : \"var(--kds-spacing-container-0-75x)\"\n );\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n \"kds-nav-item\",\n {\n selected: __props.selected,\n disabled: __props.disabled\n }\n ])\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(navComponent.value), mergeProps({ class: \"kds-nav-button\" }, navComponentAttrs.value, {\n disabled: __props.disabled,\n \"aria-current\": __props.selected ? \"page\" : void 0,\n title: unref(isLabelTruncated) ? __props.label : void 0,\n onClick\n }), {\n default: withCtx(() => [\n __props.leadingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.leadingIcon,\n size: \"medium\",\n disabled: __props.disabled\n }, null, 8, [\"name\", \"disabled\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", {\n ref_key: \"labelEl\",\n ref: labelEl,\n class: \"label\"\n }, toDisplayString(__props.label), 513)\n ]),\n _: 1\n }, 16, [\"disabled\", \"aria-current\", \"title\"])),\n hasTrailingItems.value ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref_key: \"trailingItemsEl\",\n ref: trailingItemsEl,\n class: \"trailing-items\"\n }, [\n __props.trailingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.trailingIcon,\n size: \"small\",\n disabled: __props.disabled\n }, null, 8, [\"name\", \"disabled\"])) : createCommentVNode(\"\", true),\n __props.badge ? (openBlock(), createBlock(unref(KdsBadge), mergeProps({ key: 1 }, __props.badge, { size: \"xxsmall\" }), null, 16)) : createCommentVNode(\"\", true),\n __props.trailingButton ? (openBlock(), createBlock(unref(_sfc_main$1s), mergeProps({ key: 2 }, __props.trailingButton, {\n size: \"xsmall\",\n onClick: onButtonClick\n }), null, 16)) : createCommentVNode(\"\", true)\n ], 512)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\n\nconst KdsNavItem = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-17711664\"]]);\n\nconst _hoisted_1$7 = [\"aria-label\"];\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"KdsNavigation\",\n props: /* @__PURE__ */ mergeModels({\n ariaLabel: {},\n items: {}\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"navItemTrailingButtonClick\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const modelValue = useModel(__props, \"modelValue\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"nav\", {\n class: \"kds-navigation\",\n \"aria-label\": __props.ariaLabel\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {\n return openBlock(), createElementBlock(\"div\", {\n key: item.id,\n class: \"nav-items\"\n }, [\n createVNode(unref(KdsNavItem), {\n \"leading-icon\": item.leadingIcon,\n label: item.label,\n to: item.to,\n \"trailing-icon\": item.trailingIcon,\n badge: item.badge,\n \"trailing-button\": item.trailingButton,\n selected: item.id === modelValue.value,\n disabled: item.disabled,\n onClick: ($event) => modelValue.value = item.id,\n onTrailingButtonClick: ($event) => emit(\"navItemTrailingButtonClick\", item.id)\n }, null, 8, [\"leading-icon\", \"label\", \"to\", \"trailing-icon\", \"badge\", \"trailing-button\", \"selected\", \"disabled\", \"onClick\", \"onTrailingButtonClick\"]),\n item.separator ? (openBlock(), createBlock(unref(KdsDivider), {\n key: 0,\n class: \"kds-nav-item-divider\"\n })) : createCommentVNode(\"\", true)\n ]);\n }), 128))\n ], 8, _hoisted_1$7);\n };\n }\n});\n\nconst KdsNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-6cc9519f\"]]);\n\nconst _hoisted_1$6 = {\n key: 1,\n class: \"breadcrumb-label\"\n};\nconst _hoisted_2$3 = [\"aria-label\", \"aria-current\", \"title\"];\nconst _hoisted_3$2 = {\n key: 1,\n class: \"breadcrumb-label\"\n};\nconst _hoisted_4$1 = [\"aria-label\", \"aria-current\", \"title\"];\nconst _hoisted_5 = {\n key: 1,\n class: \"breadcrumb-label\"\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n __name: \"BreadcrumbItem\",\n props: {\n item: {},\n isCurrentItem: { type: Boolean }\n },\n emits: [\"itemClick\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const linkComponent = resolveNuxtLinkComponent();\n const isLinkItem = computed(\n () => !__props.isCurrentItem && \"to\" in __props.item && Boolean(__props.item.to)\n );\n const isButtonItem = computed(\n () => !__props.isCurrentItem && \"handler\" in __props.item && Boolean(__props.item.handler)\n );\n const onItemClick = () => {\n if (\"handler\" in __props.item && __props.item.handler) {\n emit(\"itemClick\", __props.item);\n }\n };\n return (_ctx, _cache) => {\n return isLinkItem.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(linkComponent)), {\n key: 0,\n class: \"kds-breadcrumb-item\",\n to: __props.item.to,\n \"aria-label\": __props.item.ariaLabel,\n \"aria-current\": __props.isCurrentItem ? \"page\" : void 0,\n title: __props.item.title\n }, {\n default: withCtx(() => [\n __props.item.leadingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.item.leadingIcon,\n class: \"breadcrumb-icon\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n __props.item.text ? (openBlock(), createElementBlock(\"span\", _hoisted_1$6, toDisplayString(__props.item.text), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"to\", \"aria-label\", \"aria-current\", \"title\"])) : isButtonItem.value ? (openBlock(), createElementBlock(\"button\", {\n key: 1,\n type: \"button\",\n class: \"kds-breadcrumb-item\",\n \"aria-label\": __props.item.ariaLabel,\n \"aria-current\": __props.isCurrentItem ? \"page\" : void 0,\n title: __props.item.title,\n onClick: onItemClick\n }, [\n __props.item.leadingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.item.leadingIcon,\n class: \"breadcrumb-icon\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n __props.item.text ? (openBlock(), createElementBlock(\"span\", _hoisted_3$2, toDisplayString(__props.item.text), 1)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_2$3)) : (openBlock(), createElementBlock(\"span\", {\n key: 2,\n class: \"kds-breadcrumb-item\",\n \"aria-label\": __props.item.ariaLabel,\n \"aria-current\": __props.isCurrentItem ? \"page\" : void 0,\n title: __props.item.title\n }, [\n __props.item.leadingIcon ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: __props.item.leadingIcon,\n class: \"breadcrumb-icon\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n __props.item.text ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString(__props.item.text), 1)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_4$1));\n };\n }\n});\n\nconst BreadcrumbItem = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"__scopeId\", \"data-v-fd7537fc\"]]);\n\nconst useBreadcrumbAdaptiveLayout = (listRef, itemRefs, itemsSource) => {\n const { width: listWidth } = useElementSize(listRef);\n const updateLayout = async () => {\n if (globalThis.window === void 0) {\n return;\n }\n await nextTick();\n await new Promise(\n (resolve) => requestAnimationFrame(() => resolve())\n );\n const els = itemRefs.value;\n const ol = listRef.value;\n if (els.length === 0 || !ol) {\n return;\n }\n const olStyle = getComputedStyle(ol);\n const cw = ol.clientWidth - Number.parseFloat(olStyle.paddingLeft) - Number.parseFloat(olStyle.paddingRight);\n if (cw <= 0) {\n return;\n }\n for (const el of els) {\n el.style.removeProperty(\"--kds-bc-max-width\");\n }\n const floorWidths = els.map(\n (el) => Number.parseFloat(getComputedStyle(el).minWidth)\n );\n const naturalWidths = els.map((el) => el.getBoundingClientRect().width);\n const total = naturalWidths.reduce((sum, w) => sum + w, 0);\n if (total <= cw) {\n for (let i = 0; i < els.length; i++) {\n els[i].style.setProperty(\n \"--kds-bc-natural-width\",\n `${naturalWidths[i]}px`\n );\n }\n return;\n }\n const shrinkable = naturalWidths.map(\n (w, i) => Math.max(0, w - floorWidths[i])\n );\n const finalWidths = [...naturalWidths];\n let excess = total - cw;\n const distribute = (indices) => {\n if (excess <= 0 || indices.length === 0) {\n return;\n }\n const capacity = indices.reduce((sum, i) => sum + shrinkable[i], 0);\n if (capacity <= 0) {\n return;\n }\n if (excess >= capacity) {\n for (const i of indices) {\n finalWidths[i] = naturalWidths[i] - shrinkable[i];\n }\n excess -= capacity;\n } else {\n for (const i of indices) {\n const portion = shrinkable[i] / capacity * excess;\n finalWidths[i] = naturalWidths[i] - portion;\n }\n excess = 0;\n }\n };\n const n = els.length;\n const middle = [];\n for (let i = 1; i < n - 1; i++) {\n middle.push(i);\n }\n distribute(middle);\n if (n >= 1) {\n distribute([0]);\n }\n if (n >= 2) {\n distribute([n - 1]);\n }\n const SUBPIXEL_TOLERANCE = 0.5;\n for (let i = 0; i < n; i++) {\n els[i].style.setProperty(\n \"--kds-bc-natural-width\",\n `${naturalWidths[i]}px`\n );\n if (finalWidths[i] < naturalWidths[i] - SUBPIXEL_TOLERANCE) {\n els[i].style.setProperty(\n \"--kds-bc-max-width\",\n `${Math.max(finalWidths[i], floorWidths[i])}px`\n );\n } else {\n els[i].style.removeProperty(\"--kds-bc-max-width\");\n }\n }\n };\n watch([listWidth, itemsSource], () => updateLayout(), {\n immediate: true,\n deep: true\n });\n};\n\nconst _hoisted_1$5 = [\"aria-label\"];\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n __name: \"KdsBreadcrumb\",\n props: {\n items: {},\n ariaLabel: { default: () => void 0 }\n },\n setup(__props) {\n const rightMostItemIndex = computed(() => __props.items.length - 1);\n const isCurrentItem = (index) => index === rightMostItemIndex.value;\n const listRef = useTemplateRef(\"listRef\");\n const itemRefs = useTemplateRefsList();\n useBreadcrumbAdaptiveLayout(listRef, itemRefs, () => __props.items);\n return (_ctx, _cache) => {\n return __props.items.length ? (openBlock(), createElementBlock(\"nav\", {\n key: 0,\n \"aria-label\": __props.ariaLabel ?? \"Breadcrumb\"\n }, [\n createElementVNode(\"ol\", {\n ref_key: \"listRef\",\n ref: listRef\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (breadcrumbItem, i) => {\n return openBlock(), createElementBlock(\"li\", {\n key: `${breadcrumbItem.to ?? breadcrumbItem.text ?? \"breadcrumb-item\"}-${i}`,\n ref_for: true,\n ref: unref(itemRefs).set,\n class: normalizeClass({ current: isCurrentItem(i) })\n }, [\n createVNode(BreadcrumbItem, {\n item: breadcrumbItem,\n \"is-current-item\": isCurrentItem(i),\n onItemClick: ($event) => breadcrumbItem.handler?.($event)\n }, null, 8, [\"item\", \"is-current-item\", \"onItemClick\"]),\n i !== rightMostItemIndex.value ? (openBlock(), createBlock(unref(KdsIcon), {\n key: 0,\n name: \"path-separator\",\n size: \"small\",\n class: \"path-separator\",\n \"aria-hidden\": \"true\"\n })) : createCommentVNode(\"\", true)\n ], 2);\n }), 128))\n ], 512)\n ], 8, _hoisted_1$5)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nconst KdsBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"__scopeId\", \"data-v-e93667af\"]]);\n\nconst kdsModalClosedBy = {\n ANY: \"any\",\n CLOSEREQUEST: \"closerequest\",\n NONE: \"none\"\n};\nconst kdsModalClosedByOptions = Object.values(kdsModalClosedBy);\nconst kdsModalWidth = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\",\n FULL: \"full\"\n};\nconst kdsModalWidthSizes = Object.values(kdsModalWidth);\nconst kdsModalHeight = {\n AUTO: \"auto\",\n FULL: \"full\"\n};\nconst kdsModalHeightSizes = Object.values(kdsModalHeight);\nconst kdsModalVariant = {\n PADDED: \"padded\",\n PLAIN: \"plain\"\n};\nconst kdsModalVariants = Object.values(kdsModalVariant);\n({\n variant: kdsModalVariant.PADDED});\n({\n height: kdsModalHeight.AUTO,\n width: kdsModalWidth.MEDIUM,\n closedby: kdsModalClosedBy.CLOSEREQUEST});\n\nconst _hoisted_1$4 = { class: \"modal-header\" };\nconst _hoisted_2$2 = { class: \"modal-header-headline\" };\nconst _hoisted_3$1 = [\"data-variant\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"modal-footer\"\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"KdsModalLayout\",\n props: {\n headline: { default: \"\" },\n variant: { default: () => kdsModalVariant.PADDED },\n leadingIcon: {},\n overflow: { default: \"auto\" },\n onClose: { type: Function }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v81addf0a\": _ctx.overflow\n }));\n const props = createPropsRestProxy(__props, [\"headline\", \"variant\", \"overflow\"]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"header\", _hoisted_1$4, [\n props.leadingIcon ? (openBlock(), createBlock(KdsIcon, {\n key: 0,\n name: props.leadingIcon,\n size: \"medium\"\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_2$2, toDisplayString(__props.headline), 1),\n createVNode(_sfc_main$1s, {\n \"leading-icon\": \"x-close\",\n variant: \"transparent\",\n size: \"medium\",\n title: \"Close\",\n ariaLabel: \"Close\",\n onClick: props.onClose\n }, null, 8, [\"onClick\"])\n ]),\n createElementVNode(\"div\", {\n class: \"modal-body\",\n \"data-variant\": __props.variant\n }, [\n renderSlot(_ctx.$slots, \"body\", {}, void 0, true)\n ], 8, _hoisted_3$1),\n _ctx.$slots.footer ? (openBlock(), createElementBlock(\"footer\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\n\nconst KdsModalLayout = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-62740dc9\"]]);\n\nconst _hoisted_1$3 = [\"closedby\"];\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n __name: \"KdsModal\",\n props: {\n leadingIcon: {},\n headline: { default: \"\" },\n variant: { default: () => kdsModalVariant.PADDED },\n width: { default: () => kdsModalWidth.MEDIUM },\n height: { default: () => kdsModalHeight.AUTO },\n active: { type: Boolean, default: false },\n closedby: { default: () => kdsModalClosedBy.CLOSEREQUEST },\n overflow: { default: \"auto\" }\n },\n emits: [\"close\", \"closed\"],\n setup(__props, { emit: __emit }) {\n useCssVars((_ctx) => ({\n \"v5b2d4b6a\": _ctx.overflow\n }));\n const emit = __emit;\n const dialog = useTemplateRef(\"dialogElement\");\n const onClose = (event) => {\n emit(\"close\", event);\n };\n watch(\n () => __props.active,\n async (isActive) => {\n if (isActive) {\n await nextTick();\n dialog.value?.showModal();\n } else {\n dialog.value?.close();\n }\n },\n { immediate: true }\n );\n const renderDialog = ref(__props.active);\n const removeDialog = () => {\n if (!renderDialog.value) {\n return;\n }\n renderDialog.value = false;\n emit(\"closed\");\n };\n watch(\n () => __props.active,\n async (value, lastValue) => {\n if (value === false && lastValue === true) {\n if (dialog.value) {\n Promise.all(\n dialog.value.getAnimations({ subtree: true }).map((animation) => animation.finished)\n ).then(removeDialog);\n await sleep(350);\n removeDialog();\n } else {\n removeDialog();\n }\n } else {\n renderDialog.value = value;\n }\n }\n );\n return (_ctx, _cache) => {\n return renderDialog.value ? (openBlock(), createElementBlock(\"dialog\", {\n key: 0,\n ref: \"dialogElement\",\n class: normalizeClass([\n \"kds-modal\",\n `width-${__props.width}`,\n `height-${__props.height}`,\n `overflow-${__props.overflow}`\n ]),\n closedby: __props.closedby,\n onCancel: withModifiers(onClose, [\"prevent\"])\n }, [\n renderSlot(_ctx.$slots, \"default\", {\n headline: __props.headline,\n leadingIcon: __props.leadingIcon,\n variant: __props.variant,\n overflow: __props.overflow,\n onClose\n }, () => [\n createVNode(KdsModalLayout, {\n headline: __props.headline,\n \"leading-icon\": __props.leadingIcon,\n variant: __props.variant,\n overflow: __props.overflow,\n onClose\n }, {\n body: withCtx(() => [\n renderSlot(_ctx.$slots, \"body\", {}, void 0, true)\n ]),\n footer: withCtx(() => [\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"headline\", \"leading-icon\", \"variant\", \"overflow\"])\n ], true)\n ], 42, _hoisted_1$3)) : createCommentVNode(\"\", true);\n };\n }\n});\n\nconst KdsModal = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"__scopeId\", \"data-v-f4a6776f\"]]);\n\nconst defaultCancelButton = {\n type: \"cancel\",\n label: \"Cancel\"\n};\nconst defaultConfirmButton = {\n type: \"confirm\",\n label: \"Confirm\"\n};\nconst isActive = ref(false);\nconst activeModalConfig = ref(null);\nconst unwrappedPromise = ref(createUnwrappedPromise());\nconst resetInternalState = () => {\n isActive.value = false;\n unwrappedPromise.value = createUnwrappedPromise();\n};\nconst onClosed = () => {\n activeModalConfig.value = null;\n};\nconst confirm = (doNotAskAgain = false) => {\n unwrappedPromise.value.resolve({\n confirmed: true,\n doNotAskAgain\n });\n resetInternalState();\n};\nconst close = () => {\n const isConfirm = activeModalConfig.value?.type === \"confirm\";\n unwrappedPromise.value.resolve(isConfirm ? { confirmed: false } : void 0);\n resetInternalState();\n};\nconst isTemplateBasedConfirm = (config) => {\n return \"component\" in config;\n};\nconst updateConfig = (config) => {\n if (!isActive.value || !activeModalConfig.value || activeModalConfig.value.type === \"confirm\") {\n consola.warn(\"useKdsDynamicModal: invalid invocation of updateConfig\");\n return;\n }\n activeModalConfig.value.value = {\n ...activeModalConfig.value.value,\n ...config\n };\n};\nconst internal = {\n confirm,\n close,\n isTemplateBasedConfirm,\n onClosed,\n updateConfig\n};\nfunction askConfirmation(config) {\n activeModalConfig.value = {\n type: \"confirm\",\n value: {\n buttons: [defaultCancelButton, defaultConfirmButton],\n ...config\n }\n };\n isActive.value = true;\n return unwrappedPromise.value.promise;\n}\nconst showByTemplate = (config) => {\n activeModalConfig.value = {\n type: \"dynamic\",\n value: config\n };\n isActive.value = true;\n return unwrappedPromise.value.promise;\n};\nconst useKdsDynamicModal = () => {\n return {\n askConfirmation,\n showByTemplate,\n config: computed(() => activeModalConfig.value),\n isActive: computed(() => isActive.value),\n close: () => internal.close()\n };\n};\n\nconst _hoisted_1$2 = {\n key: 1,\n class: \"confirmation\"\n};\nconst _hoisted_2$1 = { class: \"message\" };\nconst _hoisted_3 = {\n key: 0,\n class: \"ask-again\"\n};\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"KdsDynamicModalProvider\",\n setup(__props) {\n const askAgain = ref(false);\n const { config, isActive } = useKdsDynamicModal();\n const reset = () => {\n askAgain.value = false;\n };\n const onConfirm = () => {\n internal.confirm(askAgain.value);\n reset();\n };\n const onClose = () => {\n internal.close();\n reset();\n };\n const handleConfirmButton = (button) => {\n if (!button.customHandler) {\n const handler = button.type === \"cancel\" ? onClose : onConfirm;\n handler();\n return;\n }\n if (button.type === \"cancel\") {\n button.customHandler({ cancel: onClose });\n }\n if (button.type === \"confirm\") {\n button.customHandler({ confirm: onConfirm });\n }\n };\n const defaultVariant = (type) => type === \"cancel\" ? \"transparent\" : \"filled\";\n const kdsModalProps = computed(() => {\n if (!config.value) {\n return {};\n }\n const { leadingIcon, headline, height, width, variant, overflow, closedby } = config.value.value;\n return {\n leadingIcon,\n headline,\n height,\n width,\n variant,\n overflow,\n closedby,\n onClose,\n onClosed: internal.onClosed,\n active: isActive.value\n };\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(KdsModal, mergeProps({ class: \"confirm-modal\" }, kdsModalProps.value), createSlots({ _: 2 }, [\n unref(config)?.type === \"confirm\" ? {\n name: \"body\",\n fn: withCtx(() => [\n unref(internal).isTemplateBasedConfirm(unref(config).value) ? (openBlock(), createBlock(resolveDynamicComponent(unref(config).value.component), { key: 0 })) : (openBlock(), createElementBlock(\"div\", _hoisted_1$2, [\n createElementVNode(\"div\", _hoisted_2$1, toDisplayString(unref(config).value.message), 1),\n unref(config).value.doNotAskAgain ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_sfc_main$10, {\n modelValue: askAgain.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => askAgain.value = $event),\n label: unref(config).value.doNotAskAgain.label,\n \"sub-text\": unref(config).value.doNotAskAgain.subText\n }, null, 8, [\"modelValue\", \"label\", \"sub-text\"])\n ])) : createCommentVNode(\"\", true)\n ]))\n ]),\n key: \"0\"\n } : void 0,\n unref(config)?.type === \"confirm\" ? {\n name: \"footer\",\n fn: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(config).value.buttons, (button, index) => {\n return openBlock(), createBlock(_sfc_main$1s, {\n key: index,\n destructive: button.destructive,\n autofocus: button.autofocus,\n label: button.label,\n variant: button.variant ?? defaultVariant(button.type),\n class: normalizeClass({ \"flush-left\": button.flushLeft }),\n \"data-test-id\": `${button.type}-button`,\n onClick: ($event) => handleConfirmButton(button)\n }, null, 8, [\"destructive\", \"autofocus\", \"label\", \"variant\", \"class\", \"data-test-id\", \"onClick\"]);\n }), 128))\n ]),\n key: \"1\"\n } : void 0,\n unref(config)?.type === \"dynamic\" ? {\n name: \"default\",\n fn: withCtx((slotProps) => [\n (openBlock(), createBlock(resolveDynamicComponent(unref(config).value.component), normalizeProps(guardReactiveProps({\n ...slotProps,\n context: unref(config).value.context,\n updateConfig: unref(internal).updateConfig\n })), null, 16))\n ]),\n key: \"2\"\n } : void 0\n ]), 1040);\n };\n }\n});\n\nconst KdsDynamicModalProvider = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__scopeId\", \"data-v-41fc8d84\"]]);\n\nconst _hoisted_1$1 = {\n ref: \"measureContainer\",\n class: \"kds-button-group-measure\",\n \"aria-hidden\": \"true\",\n inert: \"\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"KdsResponsiveButtonGroup\",\n props: {\n buttons: {},\n alignment: { default: \"left\" }\n },\n emits: [\"buttonClick\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const measureContainerEl = useTemplateRef(\"measureContainer\");\n const measureButtonEls = useTemplateRef(\"measureButton\");\n const measureMenuButtonEl = useTemplateRef(\"measureMenuButton\");\n const buttonsContainerEl = useTemplateRef(\"buttonsContainer\");\n const { width: containerWidth } = useElementSize(buttonsContainerEl);\n const gap = ref(0);\n const buttonWidths = ref([]);\n const menuButtonWidth = ref(0);\n const splitIndex = computed(() => {\n const availableSpace = containerWidth.value;\n const widths = buttonWidths.value;\n const buttonsCount = __props.buttons.length;\n if (!availableSpace || buttonsCount === 0) {\n return 0;\n }\n let buttonsWidth = 0;\n for (let i = 0; i < buttonsCount; i++) {\n if (i > 0) {\n buttonsWidth += gap.value;\n }\n buttonsWidth += widths[i] ?? 0;\n }\n if (buttonsWidth <= availableSpace) {\n return buttonsCount;\n }\n let usedWidth = menuButtonWidth.value;\n let count = 0;\n for (let i = 0; i < buttonsCount; i++) {\n const buttonWidth = widths[i] ?? 0;\n const gapBefore = count > 0 ? gap.value : 0;\n const gapAfterForMenu = gap.value;\n const totalWidth = usedWidth + gapBefore + buttonWidth + gapAfterForMenu;\n if (totalWidth > availableSpace) {\n break;\n }\n usedWidth += gapBefore + buttonWidth;\n count++;\n }\n return count;\n });\n const visibleButtons = computed(() => {\n return __props.buttons.slice(0, splitIndex.value);\n });\n const overflowButtons = computed(() => {\n return __props.buttons.slice(splitIndex.value);\n });\n const overflowMenuItems = computed(() => {\n return overflowButtons.value.map((a) => ({\n id: a.id,\n text: a.label,\n disabled: a.disabled,\n accessory: a.leadingIcon ? { type: \"icon\", name: a.leadingIcon } : void 0\n }));\n });\n const onMenuItemClick = (id) => {\n if (id) {\n emit(\"buttonClick\", id);\n }\n };\n const measureButtons = async () => {\n await nextTick();\n if (!measureContainerEl.value) {\n return;\n }\n buttonWidths.value = Array.from(measureButtonEls.value ?? []).map(\n (button) => button?.$el.offsetWidth\n );\n menuButtonWidth.value = measureMenuButtonEl.value?.menuButtonEl?.$el.offsetWidth ?? 0;\n };\n watch(() => __props.buttons, measureButtons, { deep: true });\n onMounted(() => {\n if (buttonsContainerEl.value) {\n gap.value = Number.parseFloat(getComputedStyle(buttonsContainerEl.value).gap) || 0;\n }\n measureButtons();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.buttons, (button) => {\n return openBlock(), createBlock(_sfc_main$1s, {\n ref_for: true,\n ref: \"measureButton\",\n key: button.id,\n label: button.label,\n variant: button.variant ?? \"outlined\",\n \"leading-icon\": button.leadingIcon\n }, null, 8, [\"label\", \"variant\", \"leading-icon\"]);\n }), 128)),\n createVNode(_sfc_main$1h, {\n ref: \"measureMenuButton\",\n \"leading-icon\": \"more-actions\",\n ariaLabel: \"More actions\",\n items: [{ id: \"_\", text: \"_\" }]\n }, null, 512)\n ], 512),\n createElementVNode(\"div\", mergeProps({ ref: \"buttonsContainer\" }, _ctx.$attrs, {\n class: [\"kds-button-group\", __props.alignment]\n }), [\n (openBlock(true), createElementBlock(Fragment, null, renderList(visibleButtons.value, (button) => {\n return openBlock(), createBlock(_sfc_main$1s, {\n key: button.id,\n label: button.label,\n variant: button.variant ?? \"outlined\",\n disabled: button.disabled,\n \"leading-icon\": button.leadingIcon,\n destructive: button.destructive,\n title: button.title,\n onClick: ($event) => emit(\"buttonClick\", button.id)\n }, null, 8, [\"label\", \"variant\", \"disabled\", \"leading-icon\", \"destructive\", \"title\", \"onClick\"]);\n }), 128)),\n overflowButtons.value.length ? (openBlock(), createBlock(_sfc_main$1h, {\n key: 0,\n \"leading-icon\": \"more-actions\",\n ariaLabel: \"More actions\",\n items: overflowMenuItems.value,\n onItemClick: onMenuItemClick\n }, null, 8, [\"items\"])) : createCommentVNode(\"\", true)\n ], 16)\n ], 64);\n };\n }\n});\n\nconst KdsResponsiveButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-a945c295\"]]);\n\nconst kdsResponsiveButtonGroupAlignment = {\n LEFT: \"left\",\n RIGHT: \"right\",\n MIDDLE: \"middle\"\n};\nconst kdsResponsiveButtonGroupAlignments = Object.values(\n kdsResponsiveButtonGroupAlignment\n);\n\nconst ExternalLinkIconUrl = \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20stroke='currentColor'%20stroke-linecap='round'%20stroke-linejoin='round'%20viewBox='0%200%2012%2012'%3e%3cpath%20d='M5.5%201.5h-3a1%201%200%200%200-1%201v7a1%201%200%200%200%201%201h7a1%201%200%200%200%201-1v-3m0-5L6%205.892M10.5%201.5v2.75m0-2.75H7.75'%20vector-effect='non-scaling-stroke'/%3e%3c/svg%3e\";\n\nconst _hoisted_1 = [\"innerHTML\"];\nconst _hoisted_2 = [\"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"KdsDescription\",\n props: {\n text: {},\n renderAsHtml: { type: Boolean, default: false }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v4209a14a\": externalIcon\n }));\n const externalIcon = `url(\"${ExternalLinkIconUrl}\")`;\n return (_ctx, _cache) => {\n return __props.renderAsHtml ? (openBlock(), createElementBlock(\"div\", mergeProps({ key: 0 }, { ..._ctx.$attrs }, {\n class: \"description\",\n innerHTML: __props.text\n }), null, 16, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: \"description plain\",\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_2));\n };\n }\n});\n\nconst KdsDescription = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-ed6ba7bb\"]]);\n\nexport { KdsAccordion, KdsAvatar, KdsAvatarCounter, KdsBadge, KdsBreadcrumb, _sfc_main$1s as KdsButton, _sfc_main$h as KdsCard, _sfc_main$10 as KdsCheckbox, KdsCheckboxGroup, KdsClickableCard, _sfc_main$S as KdsColorInput, KdsColorSwatch, _sfc_main$1c as KdsContextMenu, KdsDataType, _sfc_main$L as KdsDateInput, _sfc_main$J as KdsDateTimeFormatInput, KdsDescription, KdsDivider, KdsDonutChart, _sfc_main$z as KdsDropdown, KdsDynamicModalProvider, KdsEmptyState, KdsFileExplorer, KdsIcon, KdsInfoToggleButton, KdsInlineMessage, _sfc_main$C as KdsIntervalInput, KdsLabel, KdsLink, _sfc_main$1r as KdsLinkButton, KdsLinkCard, KdsListContainer, KdsLiveStatus, KdsLoadingSkeleton, KdsLoadingSpinner, _sfc_main$1d as KdsMenu, _sfc_main$1h as KdsMenuButton, KdsMissingValueIcon, KdsModal, KdsModalLayout, _sfc_main$w as KdsMultiSelectDropdown, KdsNavItem, KdsNavigation, _sfc_main$V as KdsNumberInput, KdsPanel, _sfc_main$R as KdsPasswordInput, _sfc_main$I as KdsPatternInput, KdsPopover, KdsPreviewList, KdsProgressBar, KdsProgressButton, KdsRadioButton, KdsRadioButtonGroup, KdsResponsiveButtonGroup, KdsSearchInput, KdsSelectableCard, KdsSortableListBox, KdsSplitButton, KdsSubText, KdsTabBar, KdsTextInput, KdsTextarea, _sfc_main$E as KdsTimeInput, _sfc_main$1p as KdsToggleButton, KdsTwinList, _sfc_main$Q as KdsUsernameInput, KdsValueSwitch, KdsVariableToggleButton, kdsAvatarSize, kdsAvatarSizes, kdsBadgeSize, kdsBadgeSizes, kdsBadgeVariant, kdsBadgeVariants, kdsButtonSize, kdsButtonSizes, kdsButtonVariant, kdsButtonVariants, kdsCardVariant, kdsCardVariants, kdsCheckboxGroupAlignment, kdsCheckboxGroupAlignments, kdsCheckboxValue, kdsCheckboxValues, kdsColorSwatchSize, kdsColorSwatchSizes, kdsColorSwatchType, kdsColorSwatchTypes, kdsDarkModeType, kdsDarkModeTypes, kdsDataTypeSize, kdsDataTypeSizes, kdsDateFormatCategories, kdsDateFormatCategory, kdsFileExplorerDraggingAnimationMode, kdsFileExplorerDraggingAnimationModes, kdsFileExplorerSize, kdsFileExplorerSizes, kdsIconName, iconNames as kdsIconNames, kdsIconSize, kdsIconSizes, kdsInlineMessageVariant, kdsInlineMessageVariants, kdsIntervalDirectionalities, kdsIntervalDirectionality, kdsIntervalInputFormat, kdsIntervalInputFormats, kdsLiveStatusSize, kdsLiveStatusSizes, kdsLiveStatusStatus, kdsLiveStatusStatuses, kdsLoadingSkeletonVariant, kdsLoadingSkeletonVariants, kdsLoadingSpinnerVariant, kdsLoadingSpinnerVariants, kdsModalClosedBy, kdsModalClosedByOptions, kdsModalHeight, kdsModalHeightSizes, kdsModalVariant, kdsModalVariants, kdsModalWidth, kdsModalWidthSizes, kdsPanelBodyOverflow, kdsPanelBodyOverflows, kdsPanelBodyVariant, kdsPanelBodyVariants, kdsPasswordInputAutocomplete, kdsPasswordInputAutocompletes, kdsPasswordInputVariant, kdsPasswordInputVariants, kdsPopoverPlacement, kdsPopoverPlacements, kdsPopoverRole, kdsPopoverRoles, kdsPopoverType, kdsPopoverTypes, kdsProgressBarSize, kdsProgressBarSizes, kdsProgressButtonState, kdsProgressButtonStates, kdsRadioButtonGroupAlignment, kdsRadioButtonGroupAlignments, kdsResponsiveButtonGroupAlignment, kdsResponsiveButtonGroupAlignments, kdsTabBarSize, kdsTabBarSizes, kdsTemporalType, kdsTemporalTypes, kdsTimeInputGranularities, kdsTimeInputGranularity, kdsToggleButtonVariant, kdsToggleButtonVariants, kdsTwinListSearchMode, kdsTwinListSearchModes, kdsTypeIconName, typeIconNames as kdsTypeIconNames, kdsUsernameInputAutocomplete, kdsUsernameInputAutocompletes, kdsValueSwitchSize, kdsValueSwitchSizes, kdsValueSwitchVariant, kdsValueSwitchVariants, useKdsDarkMode, useKdsDynamicModal, useKdsIsTruncated, useKdsLegacyMode };\n//# sourceMappingURL=index.js.map\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport {\n KdsAccordion,\n type KdsAccordionItem,\n KdsDescription,\n} from \"@knime/kds-components\";\n\nimport type { NodeDescriptionOptions } from \"./types\";\n\ntype Props = {\n options: Array<NodeDescriptionOptions>;\n renderAsHtml?: boolean;\n};\n\nconst { options, renderAsHtml } = defineProps<Props>();\n\ntype AccordionItemWithContent = KdsAccordionItem & {\n description?: string;\n content: NodeDescriptionOptions[\"fields\"];\n};\n\nconst accordionItems = computed<AccordionItemWithContent[]>(() => {\n return options.map(\n (option, index) =>\n ({\n id: `section-${index}`,\n headline: option.sectionName,\n description: option.sectionDescription,\n content: option.fields,\n }) satisfies AccordionItemWithContent,\n );\n});\n\nconst modelValue = ref<string[]>([]);\n</script>\n\n<template>\n <div>\n <KdsAccordion\n v-if=\"options.length > 1\"\n v-model=\"modelValue\"\n :items=\"accordionItems\"\n >\n <template v-for=\"item in accordionItems\" :key=\"item.id\" #[item.id]>\n <KdsDescription\n v-if=\"item.description\"\n :text=\"item.description\"\n :render-as-html=\"renderAsHtml\"\n class=\"section-description\"\n />\n\n <template v-for=\"field in item.content\" :key=\"field.name\">\n <div class=\"option-content\">\n <span class=\"name\">\n {{ field.name }} {{ field.optional ? \"(optional)\" : \"\" }}\n </span>\n\n <KdsDescription\n :text=\"field.description\"\n :render-as-html=\"renderAsHtml\"\n />\n </div>\n </template>\n </template>\n </KdsAccordion>\n\n <div v-if=\"options.length === 1\" class=\"single-option-wrapper\">\n <KdsDescription\n v-if=\"options[0].sectionDescription\"\n :text=\"options[0].sectionDescription\"\n :render-as-html=\"renderAsHtml\"\n class=\"section-description\"\n />\n\n <template v-for=\"field in options[0].fields\" :key=\"field.name\">\n <div class=\"option-content\">\n <span class=\"name\">\n {{ field.name }} {{ field.optional ? \"(optional)\" : \"\" }}\n </span>\n\n <KdsDescription\n :text=\"field.description\"\n :render-as-html=\"renderAsHtml\"\n />\n </div>\n </template>\n </div>\n </div>\n</template>\n\n<style scoped>\n.section-description {\n margin-bottom: var(--kds-spacing-container-1x);\n}\n\n.single-option-wrapper {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-1x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.option-content {\n & .name {\n font: var(--kds-font-base-title-small-strong);\n }\n}\n</style>\n","export const PortType = Object.freeze({\n TABLE: \"table\",\n FLOW_VARIABLE: \"flowVariable\",\n OTHER: \"other\",\n GENERIC: \"generic\",\n} as const);\n\nexport const PortTypes = Object.freeze(Object.values(PortType));\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { PortType as PortTypeEnum } from \"./enums\";\nimport type { PortIconProps } from \"./types\";\n\nconst portSize = 9; // 9px\nconst strokeWidth = 1.4; // 1.4px\n\n// TODO: KDS-871 Use tokens once they're available in JS code\nconst colors = {\n [PortTypeEnum.TABLE]: \"hsl(0, 3%, 12%)\",\n [PortTypeEnum.FLOW_VARIABLE]: \"hsl(0, 100%, 64.7%)\",\n} as const;\n\nconst { filled = true, ...props } = defineProps<PortIconProps>();\n\nconst trianglePath = computed(() => {\n // draw triangle around middle point\n let [x1, y1, x2, y3] = [\n -portSize / 2,\n -portSize / 2,\n portSize / 2,\n portSize / 2,\n ];\n\n // y and d are chosen so the triangle (including strokeWidth) fits precisely in the 9x9 port\n /* eslint-disable no-magic-numbers */\n const d = Math.sqrt(5) / 2;\n const y = d / 2 + 1 / 4;\n /* eslint-enable no-magic-numbers */\n\n // move points towards the center of the triangle according to strokeWidth\n x1 += strokeWidth / 2;\n x2 -= strokeWidth * d;\n y1 += strokeWidth * y;\n y3 -= strokeWidth * y;\n\n // draw triangle clock-wise\n return `${x1},${y1} ${x2},${0} ${x1},${y3}`;\n});\n\nconst viewBox = computed(() =>\n [-portSize / 2, -portSize / 2, portSize, portSize].join(\" \"),\n);\n\nconst portColor = computed(() => {\n if (props.type === \"table\" || props.type === \"flowVariable\") {\n return colors[props.type];\n }\n\n return props.color;\n});\n\nconst fillColor = computed(() => {\n return filled ? portColor.value : \"transparent\";\n});\n</script>\n\n<template>\n <svg :viewBox=\"viewBox\" :width=\"portSize\" :height=\"portSize\">\n <!-- data table port -->\n <polygon\n v-if=\"type === 'table'\"\n :points=\"trianglePath\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n <!-- flow variable port -->\n <circle\n v-else-if=\"type === 'flowVariable'\"\n :r=\"portSize / 2 - strokeWidth / 2\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n <!-- other port -->\n <rect\n v-else\n :width=\"portSize - strokeWidth\"\n :height=\"portSize - strokeWidth\"\n :x=\"-portSize / 2 + strokeWidth / 2\"\n :y=\"-portSize / 2 + strokeWidth / 2\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport PortIcon from \"../PortIcon/PortIcon.vue\";\n\nimport type { PortTemplate } from \"./types\";\n\ntype Props = {\n port: PortTemplate;\n showDescription: boolean;\n};\n\ndefineProps<Props>();\n</script>\n\n<template>\n <div class=\"wrapper\">\n <div class=\"icon\">\n <PortIcon\n :type=\"port.type\"\n :color=\"port.color\"\n :filled=\"!port.optional\"\n />\n </div>\n <span class=\"title\">Type: {{ port.typeDisplayName }}</span>\n\n <span class=\"name title\">Name: {{ port.name }}</span>\n\n <KdsDescription\n v-if=\"showDescription\"\n class=\"description\"\n :text=\"port.description\"\n render-as-html\n />\n </div>\n</template>\n\n<style scoped>\n.wrapper {\n display: grid;\n grid-template-columns: var(--kds-spacing-container-0-5x) 1fr;\n gap: var(--kds-spacing-container-0-5x);\n}\n\n.icon {\n display: flex;\n align-items: center;\n}\n\n.name,\n.description {\n grid-column: 2;\n}\n\n.title {\n font: var(--kds-font-base-title-small-strong);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport PortTemplateInfo from \"./PortTemplateInfo.vue\";\nimport type { PortTemplate } from \"./types\";\n\ntype Props = {\n name: string;\n description?: string;\n ports: Array<PortTemplate>;\n isDynamicGroup?: boolean;\n};\n\ndefineProps<Props>();\n</script>\n\n<template>\n <div class=\"port-group-card\">\n <span class=\"group-name\">{{ name }}</span>\n\n <KdsDescription v-if=\"description\" :text=\"description\" render-as-html />\n\n <template v-for=\"port in ports\" :key=\"port.id\">\n <PortTemplateInfo :port=\"port\" :show-description=\"!isDynamicGroup\" />\n </template>\n </div>\n</template>\n\n<style scoped>\n.port-group-card {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-75x);\n padding: var(--kds-spacing-container-1x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n & .group-name {\n font: var(--kds-font-base-title-small-strong);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport PortGroup from \"./PortGroup.vue\";\nimport type { DynamicPortGroup, PortTemplate } from \"./types\";\n\ntype Props = {\n inputPorts: Array<PortTemplate>;\n outputPorts: Array<PortTemplate>;\n dynamicInputGroups?: Array<DynamicPortGroup>;\n dynamicOutputGroups?: Array<DynamicPortGroup>;\n};\n\nconst { dynamicInputGroups = [], dynamicOutputGroups = [] } =\n defineProps<Props>();\n</script>\n\n<template>\n <div class=\"port-list\">\n <PortGroup\n v-if=\"inputPorts.length > 0\"\n name=\"Input ports\"\n :ports=\"inputPorts\"\n />\n\n <PortGroup\n v-if=\"outputPorts.length > 0\"\n name=\"Output ports\"\n :ports=\"outputPorts\"\n />\n\n <template v-for=\"group in dynamicInputGroups\" :key=\"group.name\">\n <PortGroup\n v-if=\"group.types.length > 0\"\n :name=\"group.name + ' (Dynamic Inport)'\"\n :description=\"group.description\"\n :ports=\"group.types\"\n is-dynamic-group\n />\n </template>\n\n <template v-for=\"group in dynamicOutputGroups\" :key=\"group.name\">\n <PortGroup\n v-if=\"group.types.length > 0\"\n :name=\"group.name + ' (Dynamic Outport)'\"\n :description=\"group.description\"\n :ports=\"group.types\"\n is-dynamic-group\n />\n </template>\n </div>\n</template>\n\n<style scoped>\n.port-list {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport type { NodeDescriptionView } from \"./types\";\n\ntype Props = {\n views: Array<NodeDescriptionView>;\n};\n\nconst props = defineProps<Props>();\n\nconst viewsWithId = computed<Array<NodeDescriptionView & { id: string }>>(() =>\n props.views.map((view, index) => {\n const id = `view-${index}`;\n return { id, ...view };\n }),\n);\n</script>\n\n<template>\n <div v-for=\"view in viewsWithId\" :key=\"view.id\" class=\"card-wrapper\">\n <span class=\"name\">{{ view.name }}</span>\n <KdsDescription\n v-if=\"view.description\"\n :text=\"view.description\"\n render-as-html\n />\n </div>\n</template>\n\n<style scoped>\n.card-wrapper {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-1x);\n margin-bottom: var(--kds-spacing-container-0-25x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.name {\n font: var(--kds-font-base-title-small-strong);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport {\n KdsEmptyState,\n KdsTabBar,\n type KdsTabBarItem,\n} from \"@knime/kds-components\";\n\nimport OptionsTab from \"./OptionsTab.vue\";\nimport PortsTab from \"./PortsTab.vue\";\nimport ViewsTab from \"./ViewsTab.vue\";\nimport type { NodeDescriptionTabsProps } from \"./types\";\n\nconst {\n inputPorts = [],\n outputPorts = [],\n dynamicInputPorts = [],\n dynamicOutputPorts = [],\n optionsData = [],\n viewsData = [],\n emptyText = \"No ports, options or views available.\",\n renderAsHtml = false,\n tabBarFullWidth = false,\n} = defineProps<NodeDescriptionTabsProps>();\n\nconst TAB_IDS = {\n PORTS: \"ports\",\n OPTIONS: \"options\",\n VIEW: \"view\",\n} as const;\n\ntype TabIds = (typeof TAB_IDS)[keyof typeof TAB_IDS];\n\nconst activeTab = ref<TabIds | undefined>();\n\nconst hasPorts = computed(\n () =>\n inputPorts.length > 0 ||\n outputPorts.length > 0 ||\n dynamicInputPorts.length > 0 ||\n dynamicOutputPorts.length > 0,\n);\n\nconst tabs = computed<KdsTabBarItem[]>(() => [\n {\n id: \"tab-ports\",\n value: TAB_IDS.PORTS,\n label: \"Ports\",\n panelId: \"panel-ports\",\n accessory: {\n type: \"icon\",\n name: \"connection\",\n },\n disabled: !hasPorts.value,\n },\n {\n id: \"tab-options\",\n value: TAB_IDS.OPTIONS,\n label: \"Options\",\n panelId: \"panel-options\",\n accessory: {\n type: \"icon\",\n name: \"parameter\",\n },\n disabled: optionsData.length < 1,\n },\n {\n id: \"tab-view\",\n value: TAB_IDS.VIEW,\n label: \"View\",\n panelId: \"panel-view\",\n accessory: {\n type: \"icon\",\n name: \"eye\",\n },\n disabled: viewsData.length < 1,\n },\n]);\n</script>\n\n<template>\n <div>\n <KdsTabBar\n v-model=\"activeTab\"\n :full-width=\"tabBarFullWidth\"\n size=\"small\"\n :tabs=\"tabs\"\n />\n\n <div class=\"content\">\n <PortsTab\n v-if=\"activeTab === TAB_IDS.PORTS\"\n id=\"panel-ports\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-ports\"\n tabindex=\"0\"\n :input-ports=\"inputPorts\"\n :output-ports=\"outputPorts\"\n :dynamic-input-groups=\"dynamicInputPorts\"\n :dynamic-output-groups=\"dynamicOutputPorts\"\n />\n\n <OptionsTab\n v-if=\"activeTab === TAB_IDS.OPTIONS\"\n id=\"panel-options\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-options\"\n tabindex=\"0\"\n :options=\"optionsData\"\n :render-as-html=\"renderAsHtml\"\n />\n\n <ViewsTab\n v-if=\"activeTab === TAB_IDS.VIEW\"\n id=\"panel-view\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-view\"\n tabindex=\"0\"\n :views=\"viewsData\"\n />\n\n <KdsEmptyState\n v-if=\"!activeTab\"\n :headline=\"emptyText\"\n class=\"empty-state\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.content {\n padding: var(--kds-spacing-container-0-5x) 0;\n color: var(--kds-color-text-and-icon-neutral);\n}\n\n.empty-state {\n margin: 0 auto;\n}\n</style>\n"],"names":["_export_sfc","_hoisted_1","_hoisted_2","_sfc_main","_createElementBlock","_createBlock","_unref","_renderList","_openBlock","_Fragment","_createElementVNode","_toDisplayString","_createVNode","_hoisted_3","PortTypeEnum","_createPropsRestProxy","_mergeProps","$attrs","_hoisted_4","PortIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodes.js","sources":["../src/nodes/NodeDescriptionTabs/OptionsTab.vue","../src/nodes/PortIcon/enums.ts","../src/nodes/PortIcon/PortIcon.vue","../src/nodes/NodeDescriptionTabs/PortTemplateInfo.vue","../src/nodes/NodeDescriptionTabs/PortGroup.vue","../src/nodes/NodeDescriptionTabs/PortsTab.vue","../src/nodes/NodeDescriptionTabs/ViewsTab.vue","../src/nodes/NodeDescriptionTabs/NodeDescriptionTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport {\n KdsAccordion,\n type KdsAccordionItem,\n KdsDescription,\n} from \"@knime/kds-components\";\n\nimport type { NodeDescriptionOptions } from \"./types\";\n\ntype Props = {\n options: Array<NodeDescriptionOptions>;\n renderAsHtml?: boolean;\n};\n\nconst { options, renderAsHtml } = defineProps<Props>();\n\ntype AccordionItemWithContent = KdsAccordionItem & {\n description?: string;\n content: NodeDescriptionOptions[\"fields\"];\n};\n\nconst accordionItems = computed<AccordionItemWithContent[]>(() => {\n return options.map(\n (option, index) =>\n ({\n id: `section-${index}`,\n headline: option.sectionName,\n description: option.sectionDescription,\n content: option.fields,\n }) satisfies AccordionItemWithContent,\n );\n});\n\nconst modelValue = ref<string[]>([]);\n</script>\n\n<template>\n <div>\n <KdsAccordion\n v-if=\"options.length > 1\"\n v-model=\"modelValue\"\n :items=\"accordionItems\"\n >\n <template v-for=\"item in accordionItems\" :key=\"item.id\" #[item.id]>\n <KdsDescription\n v-if=\"item.description\"\n :text=\"item.description\"\n :render-as-html=\"renderAsHtml\"\n class=\"section-description\"\n />\n\n <template v-for=\"field in item.content\" :key=\"field.name\">\n <div class=\"option-content\">\n <span class=\"name\">\n {{ field.name }} {{ field.optional ? \"(optional)\" : \"\" }}\n </span>\n\n <KdsDescription\n :text=\"field.description\"\n :render-as-html=\"renderAsHtml\"\n />\n </div>\n </template>\n </template>\n </KdsAccordion>\n\n <div v-if=\"options.length === 1\" class=\"single-option-wrapper\">\n <KdsDescription\n v-if=\"options[0].sectionDescription\"\n :text=\"options[0].sectionDescription\"\n :render-as-html=\"renderAsHtml\"\n class=\"section-description\"\n />\n\n <template v-for=\"field in options[0].fields\" :key=\"field.name\">\n <div class=\"option-content\">\n <span class=\"name\">\n {{ field.name }} {{ field.optional ? \"(optional)\" : \"\" }}\n </span>\n\n <KdsDescription\n :text=\"field.description\"\n :render-as-html=\"renderAsHtml\"\n />\n </div>\n </template>\n </div>\n </div>\n</template>\n\n<style scoped>\n.section-description {\n margin-bottom: var(--kds-spacing-container-1x);\n}\n\n.single-option-wrapper {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-1x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.option-content {\n & .name {\n font: var(--kds-font-base-title-small-strong);\n }\n}\n</style>\n","export const PortType = Object.freeze({\n TABLE: \"table\",\n FLOW_VARIABLE: \"flowVariable\",\n OTHER: \"other\",\n GENERIC: \"generic\",\n} as const);\n\nexport const PortTypes = Object.freeze(Object.values(PortType));\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { PortType as PortTypeEnum } from \"./enums\";\nimport type { PortIconProps } from \"./types\";\n\nconst portSize = 9; // 9px\nconst strokeWidth = 1.4; // 1.4px\n\n// TODO: KDS-871 Use tokens once they're available in JS code\nconst colors = {\n [PortTypeEnum.TABLE]: \"hsl(0, 3%, 12%)\",\n [PortTypeEnum.FLOW_VARIABLE]: \"hsl(0, 100%, 64.7%)\",\n} as const;\n\nconst { filled = true, ...props } = defineProps<PortIconProps>();\n\nconst trianglePath = computed(() => {\n // draw triangle around middle point\n let [x1, y1, x2, y3] = [\n -portSize / 2,\n -portSize / 2,\n portSize / 2,\n portSize / 2,\n ];\n\n // y and d are chosen so the triangle (including strokeWidth) fits precisely in the 9x9 port\n /* eslint-disable no-magic-numbers */\n const d = Math.sqrt(5) / 2;\n const y = d / 2 + 1 / 4;\n /* eslint-enable no-magic-numbers */\n\n // move points towards the center of the triangle according to strokeWidth\n x1 += strokeWidth / 2;\n x2 -= strokeWidth * d;\n y1 += strokeWidth * y;\n y3 -= strokeWidth * y;\n\n // draw triangle clock-wise\n return `${x1},${y1} ${x2},${0} ${x1},${y3}`;\n});\n\nconst viewBox = computed(() =>\n [-portSize / 2, -portSize / 2, portSize, portSize].join(\" \"),\n);\n\nconst portColor = computed(() => {\n if (props.type === \"table\" || props.type === \"flowVariable\") {\n return colors[props.type];\n }\n\n return props.color;\n});\n\nconst fillColor = computed(() => {\n return filled ? portColor.value : \"transparent\";\n});\n</script>\n\n<template>\n <svg :viewBox=\"viewBox\" :width=\"portSize\" :height=\"portSize\">\n <!-- data table port -->\n <polygon\n v-if=\"type === 'table'\"\n :points=\"trianglePath\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n <!-- flow variable port -->\n <circle\n v-else-if=\"type === 'flowVariable'\"\n :r=\"portSize / 2 - strokeWidth / 2\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n <!-- other port -->\n <rect\n v-else\n :width=\"portSize - strokeWidth\"\n :height=\"portSize - strokeWidth\"\n :x=\"-portSize / 2 + strokeWidth / 2\"\n :y=\"-portSize / 2 + strokeWidth / 2\"\n :fill=\"fillColor\"\n :stroke=\"portColor\"\n :stroke-width=\"strokeWidth\"\n v-bind=\"$attrs\"\n />\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport PortIcon from \"../PortIcon/PortIcon.vue\";\n\nimport type { PortTemplate } from \"./types\";\n\ntype Props = {\n port: PortTemplate;\n showDescription: boolean;\n};\n\ndefineProps<Props>();\n</script>\n\n<template>\n <div class=\"wrapper\">\n <div class=\"icon\">\n <PortIcon\n :type=\"port.type\"\n :color=\"port.color\"\n :filled=\"!port.optional\"\n />\n </div>\n <span class=\"title\">Type: {{ port.typeDisplayName }}</span>\n\n <span class=\"name title\">Name: {{ port.name }}</span>\n\n <KdsDescription\n v-if=\"showDescription\"\n class=\"description\"\n :text=\"port.description\"\n render-as-html\n />\n </div>\n</template>\n\n<style scoped>\n.wrapper {\n display: grid;\n grid-template-columns: var(--kds-spacing-container-0-5x) 1fr;\n gap: var(--kds-spacing-container-0-5x);\n}\n\n.icon {\n display: flex;\n align-items: center;\n}\n\n.name,\n.description {\n grid-column: 2;\n}\n\n.title {\n font: var(--kds-font-base-title-small-strong);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport PortTemplateInfo from \"./PortTemplateInfo.vue\";\nimport type { PortTemplate } from \"./types\";\n\ntype Props = {\n name: string;\n description?: string;\n ports: Array<PortTemplate>;\n isDynamicGroup?: boolean;\n};\n\ndefineProps<Props>();\n</script>\n\n<template>\n <div class=\"port-group-card\">\n <span class=\"group-name\">{{ name }}</span>\n\n <KdsDescription v-if=\"description\" :text=\"description\" render-as-html />\n\n <template v-for=\"port in ports\" :key=\"port.id\">\n <PortTemplateInfo :port=\"port\" :show-description=\"!isDynamicGroup\" />\n </template>\n </div>\n</template>\n\n<style scoped>\n.port-group-card {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-75x);\n padding: var(--kds-spacing-container-1x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n & .group-name {\n font: var(--kds-font-base-title-small-strong);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport PortGroup from \"./PortGroup.vue\";\nimport type { DynamicPortGroup, PortTemplate } from \"./types\";\n\ntype Props = {\n inputPorts: Array<PortTemplate>;\n outputPorts: Array<PortTemplate>;\n dynamicInputGroups?: Array<DynamicPortGroup>;\n dynamicOutputGroups?: Array<DynamicPortGroup>;\n};\n\nconst { dynamicInputGroups = [], dynamicOutputGroups = [] } =\n defineProps<Props>();\n</script>\n\n<template>\n <div class=\"port-list\">\n <PortGroup\n v-if=\"inputPorts.length > 0\"\n name=\"Input ports\"\n :ports=\"inputPorts\"\n />\n\n <PortGroup\n v-if=\"outputPorts.length > 0\"\n name=\"Output ports\"\n :ports=\"outputPorts\"\n />\n\n <template v-for=\"group in dynamicInputGroups\" :key=\"group.name\">\n <PortGroup\n v-if=\"group.types.length > 0\"\n :name=\"group.name + ' (Dynamic Inport)'\"\n :description=\"group.description\"\n :ports=\"group.types\"\n is-dynamic-group\n />\n </template>\n\n <template v-for=\"group in dynamicOutputGroups\" :key=\"group.name\">\n <PortGroup\n v-if=\"group.types.length > 0\"\n :name=\"group.name + ' (Dynamic Outport)'\"\n :description=\"group.description\"\n :ports=\"group.types\"\n is-dynamic-group\n />\n </template>\n </div>\n</template>\n\n<style scoped>\n.port-list {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { KdsDescription } from \"@knime/kds-components\";\n\nimport type { NodeDescriptionView } from \"./types\";\n\ntype Props = {\n views: Array<NodeDescriptionView>;\n};\n\nconst props = defineProps<Props>();\n\nconst viewsWithId = computed<Array<NodeDescriptionView & { id: string }>>(() =>\n props.views.map((view, index) => {\n const id = `view-${index}`;\n return { id, ...view };\n }),\n);\n</script>\n\n<template>\n <div v-for=\"view in viewsWithId\" :key=\"view.id\" class=\"card-wrapper\">\n <span class=\"name\">{{ view.name }}</span>\n <KdsDescription\n v-if=\"view.description\"\n :text=\"view.description\"\n render-as-html\n />\n </div>\n</template>\n\n<style scoped>\n.card-wrapper {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-1x);\n margin-bottom: var(--kds-spacing-container-0-25x);\n background: var(--kds-color-surface-muted);\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.name {\n font: var(--kds-font-base-title-small-strong);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport {\n KdsEmptyState,\n KdsTabBar,\n type KdsTabBarItem,\n} from \"@knime/kds-components\";\n\nimport OptionsTab from \"./OptionsTab.vue\";\nimport PortsTab from \"./PortsTab.vue\";\nimport ViewsTab from \"./ViewsTab.vue\";\nimport type { NodeDescriptionTabsProps } from \"./types\";\n\nconst {\n inputPorts = [],\n outputPorts = [],\n dynamicInputPorts = [],\n dynamicOutputPorts = [],\n optionsData = [],\n viewsData = [],\n emptyText = \"No ports, options or views available.\",\n renderAsHtml = false,\n tabBarFullWidth = false,\n} = defineProps<NodeDescriptionTabsProps>();\n\nconst TAB_IDS = {\n PORTS: \"ports\",\n OPTIONS: \"options\",\n VIEW: \"view\",\n} as const;\n\ntype TabIds = (typeof TAB_IDS)[keyof typeof TAB_IDS];\n\nconst activeTab = ref<TabIds | undefined>();\n\nconst hasPorts = computed(\n () =>\n inputPorts.length > 0 ||\n outputPorts.length > 0 ||\n dynamicInputPorts.length > 0 ||\n dynamicOutputPorts.length > 0,\n);\n\nconst tabs = computed<KdsTabBarItem[]>(() => [\n {\n id: \"tab-ports\",\n value: TAB_IDS.PORTS,\n label: \"Ports\",\n panelId: \"panel-ports\",\n accessory: {\n type: \"icon\",\n name: \"connection\",\n },\n disabled: !hasPorts.value,\n },\n {\n id: \"tab-options\",\n value: TAB_IDS.OPTIONS,\n label: \"Options\",\n panelId: \"panel-options\",\n accessory: {\n type: \"icon\",\n name: \"parameter\",\n },\n disabled: optionsData.length < 1,\n },\n {\n id: \"tab-view\",\n value: TAB_IDS.VIEW,\n label: \"View\",\n panelId: \"panel-view\",\n accessory: {\n type: \"icon\",\n name: \"eye\",\n },\n disabled: viewsData.length < 1,\n },\n]);\n</script>\n\n<template>\n <div>\n <KdsTabBar\n v-model=\"activeTab\"\n :full-width=\"tabBarFullWidth\"\n size=\"small\"\n :tabs=\"tabs\"\n />\n\n <div class=\"content\">\n <PortsTab\n v-if=\"activeTab === TAB_IDS.PORTS\"\n id=\"panel-ports\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-ports\"\n tabindex=\"0\"\n :input-ports=\"inputPorts\"\n :output-ports=\"outputPorts\"\n :dynamic-input-groups=\"dynamicInputPorts\"\n :dynamic-output-groups=\"dynamicOutputPorts\"\n />\n\n <OptionsTab\n v-if=\"activeTab === TAB_IDS.OPTIONS\"\n id=\"panel-options\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-options\"\n tabindex=\"0\"\n :options=\"optionsData\"\n :render-as-html=\"renderAsHtml\"\n />\n\n <ViewsTab\n v-if=\"activeTab === TAB_IDS.VIEW\"\n id=\"panel-view\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-view\"\n tabindex=\"0\"\n :views=\"viewsData\"\n />\n\n <KdsEmptyState\n v-if=\"!activeTab\"\n :headline=\"emptyText\"\n class=\"empty-state\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.content {\n padding: var(--kds-spacing-container-0-5x) 0;\n color: var(--kds-color-text-and-icon-neutral);\n}\n\n.empty-state {\n margin: 0 auto;\n}\n</style>\n"],"names":["_createElementBlock","_createBlock","_unref","_renderList","_openBlock","_Fragment","_createElementVNode","_hoisted_1","_toDisplayString","_createVNode","_hoisted_2","_hoisted_3","PortTypeEnum","_createPropsRestProxy","_mergeProps","$attrs","_hoisted_4","PortIcon"],"mappings":"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"}
|