@flux-ui/components 3.0.0-next.12 → 3.0.0-next.13

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/clsx/dist/clsx.mjs","../src/composable/useBreakpoints.ts","../src/data/di.ts","../src/data/filter.ts","../src/data/helper.ts","../src/data/i18n.ts","../src/data/iconRegistry.ts","../src/data/store.ts","../../../node_modules/imask/esm/core/utils.js","../../../node_modules/imask/esm/core/action-details.js","../../../node_modules/imask/esm/core/holder.js","../../../node_modules/imask/esm/masked/factory.js","../../../node_modules/imask/esm/controls/mask-element.js","../../../node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/imask/esm/controls/input-history.js","../../../node_modules/imask/esm/controls/input.js","../../../node_modules/imask/esm/core/change-details.js","../../../node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/imask/esm/masked/base.js","../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/imask/esm/masked/regexp.js","../../../node_modules/imask/esm/masked/pattern.js","../src/data/inputMask.ts","../src/composable/useDisabledInjection.ts","../src/composable/useDisabled.ts","../src/composable/useExpandableGroupInjection.ts","../src/composable/useFilterInjection.ts","../src/composable/useFlyoutInjection.ts","../src/composable/useFormFieldInjection.ts","../src/composable/useTableInjection.ts","../../../node_modules/@basmilius/utils/dist/index.js","../../../node_modules/lodash-es/_freeGlobal.js","../../../node_modules/lodash-es/_root.js","../../../node_modules/lodash-es/_Symbol.js","../../../node_modules/lodash-es/_getRawTag.js","../../../node_modules/lodash-es/_objectToString.js","../../../node_modules/lodash-es/_baseGetTag.js","../../../node_modules/lodash-es/isObjectLike.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/isArray.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_baseSlice.js","../../../node_modules/lodash-es/_castSlice.js","../../../node_modules/lodash-es/_hasUnicode.js","../../../node_modules/lodash-es/_asciiToArray.js","../../../node_modules/lodash-es/_unicodeToArray.js","../../../node_modules/lodash-es/_stringToArray.js","../../../node_modules/lodash-es/_createCaseFirst.js","../../../node_modules/lodash-es/upperFirst.js","../../../node_modules/lodash-es/capitalize.js","../../../node_modules/lodash-es/_arrayReduce.js","../../../node_modules/lodash-es/_basePropertyOf.js","../../../node_modules/lodash-es/_deburrLetter.js","../../../node_modules/lodash-es/deburr.js","../../../node_modules/lodash-es/_asciiWords.js","../../../node_modules/lodash-es/_hasUnicodeWord.js","../../../node_modules/lodash-es/_unicodeWords.js","../../../node_modules/lodash-es/words.js","../../../node_modules/lodash-es/_createCompounder.js","../../../node_modules/lodash-es/camelCase.js","../../internals/dist/index.js","../src/component/FluxIcon.vue","../src/component/FluxPressable.vue","../src/component/FluxSpinner.vue","../src/component/FluxButton.vue","../src/component/FluxAction.vue","../src/composable/private/useFormSelect.ts","../src/composable/private/useLoaded.ts","../src/composable/private/useTranslate.ts","../src/component/FluxButtonGroup.vue","../src/component/FluxDestructiveButton.vue","../src/component/FluxPane.vue","../src/component/FluxFlyout.vue","../src/component/FluxSecondaryButton.vue","../src/component/FluxSpacer.vue","../src/component/FluxStack.vue","../src/component/FluxTooltip.vue","../src/component/FluxActionBar.vue","../src/component/FluxButtonStack.vue","../src/component/FluxPaneBody.vue","../src/component/FluxActionPane.vue","../src/component/FluxActions.vue","../src/component/FluxAnimatedColors.vue","../src/component/FluxAspectRatio.vue","../src/component/FluxAutoGrid.vue","../src/transition/FluxAutoHeightTransition.vue","../src/transition/FluxAutoWidthTransition.vue","../src/transition/FluxBreakthroughTransition.vue","../src/transition/FluxFadeTransition.vue","../src/transition/FluxOverlayTransition.vue","../src/transition/FluxRouteTransition.vue","../src/transition/FluxSlideOverTransition.vue","../src/transition/FluxTooltipTransition.vue","../src/transition/FluxVerticalWindowTransition.vue","../src/transition/FluxWindowTransition.vue","../src/component/FluxAvatar.vue","../src/component/FluxBadge.vue","../src/component/FluxBadgeStack.vue","../src/component/FluxBorderShine.vue","../src/component/FluxBoxedIcon.vue","../src/component/primitive/Anchor.vue","../src/component/primitive/AnchorPopup.vue","../src/component/FluxMenuItem.vue","../src/component/FluxFormInput.vue","../src/component/FluxMenuGroup.vue","../src/component/FluxMenuSubHeader.vue","../src/component/primitive/FilterOptionBase.vue","../src/component/FluxMenu.vue","../src/component/FluxTag.vue","../src/component/primitive/SelectBase.vue","../src/component/FluxTicks.vue","../src/component/primitive/SliderBase.vue","../src/component/primitive/SliderThumb.vue","../src/component/primitive/SliderTrack.vue","../src/util/createDialogRenderer.ts","../src/util/createLabelForDateRange.ts","../src/component/FluxSeparator.vue","../src/component/primitive/FilterItem.vue","../src/component/primitive/FilterMenuRenderer.ts","../src/component/primitive/VNodeRenderer.ts","../src/component/FluxCalendar.vue","../src/component/FluxCalendarEvent.vue","../src/component/FluxCheckbox.vue","../src/component/FluxChip.vue","../src/component/FluxClickablePane.vue","../src/component/FluxComment.vue","../src/component/primitive/CoordinatePickerThumb.vue","../src/component/primitive/CoordinatePicker.vue","../src/component/FluxFormFieldAddition.vue","../src/component/FluxFormField.vue","../src/component/FluxFormSlider.vue","../src/component/FluxColorPicker.vue","../src/component/FluxPrimaryButton.vue","../src/component/FluxColorSelect.vue","../src/component/FluxContainer.vue","../src/component/FluxFormSelect.vue","../src/component/FluxPaginationButton.vue","../src/component/FluxPagination.vue","../src/component/FluxPaginationBar.vue","../src/component/FluxTableCell.vue","../src/component/FluxTableRow.vue","../src/component/FluxTable.vue","../src/component/FluxDataTable.vue","../src/component/FluxDatePicker.vue","../src/component/FluxDisabled.vue","../src/component/FluxDivider.vue","../src/component/FluxDotPattern.vue","../src/component/FluxDropZone.vue","../src/component/FluxDynamicView.vue","../src/component/FluxExpandable.vue","../src/component/FluxExpandableGroup.vue","../src/component/FluxFader.vue","../src/component/FluxFaderItem.vue","../src/component/FluxWindow.vue","../src/component/FluxFilter.vue","../src/component/FluxFilterDate.vue","../src/component/FluxFilterDateRange.vue","../src/component/FluxFilterOption.vue","../src/component/FluxFilterOptionAsync.vue","../src/component/FluxFilterOptions.vue","../src/component/FluxFilterOptionsAsync.vue","../src/component/FluxFormColumn.vue","../src/component/FluxFilterRange.vue","../src/component/FluxFlickeringGrid.vue","../src/component/FluxPaneFooter.vue","../src/component/FluxFocalPointEditor.vue","../src/component/FluxFocalPointImage.vue","../src/component/FluxForm.vue","../src/component/FluxFormInputGroup.vue","../src/component/FluxFormDateInput.vue","../src/component/FluxFormDateRangeInput.vue","../src/component/FluxFormDateTimeInput.vue","../src/component/FluxFormInputAddition.vue","../src/component/FluxFormPinInput.vue","../src/component/FluxFormRangeSlider.vue","../src/component/FluxFormRow.vue","../src/component/FluxFormSection.vue","../src/component/FluxFormSelectAsync.vue","../src/component/FluxFormTextArea.vue","../src/component/FluxFormTimeZonePicker.vue","../src/component/FluxRemove.vue","../src/component/FluxGalleryItem.vue","../src/component/FluxGallery.vue","../src/component/FluxGrid.vue","../src/component/FluxGridColumn.vue","../src/component/FluxGridPattern.vue","../src/component/FluxInfo.vue","../src/component/FluxInfoStack.vue","../src/component/FluxLegend.vue","../src/component/FluxLink.vue","../src/component/FluxMenuOptions.vue","../src/component/FluxMenuTitle.vue","../src/component/FluxNotice.vue","../src/component/FluxNoticeStack.vue","../src/component/FluxOverlay.vue","../src/component/FluxPaneDeck.vue","../src/component/FluxPaneGroup.vue","../src/component/FluxPaneHeader.vue","../src/component/FluxPaneIllustration.vue","../src/component/FluxPaneMedia.vue","../src/component/FluxPercentageBar.vue","../src/component/FluxPersona.vue","../src/component/FluxPlaceholder.vue","../src/component/FluxProgressBar.vue","../src/component/FluxPublishButton.vue","../src/component/FluxQuantitySelector.vue","../src/component/FluxAlert.vue","../src/component/FluxConfirm.vue","../src/component/FluxPrompt.vue","../src/component/FluxSnackbar.vue","../src/component/FluxSnackbarProvider.vue","../src/component/FluxTooltipProvider.vue","../src/component/FluxRoot.vue","../src/component/FluxSegmentedControl.vue","../src/component/FluxSegmentedView.vue","../src/component/FluxSlideOver.vue","../src/component/FluxSpacing.vue","../src/component/FluxSplitButton.vue","../src/component/FluxStatistic.vue","../src/component/FluxStepperSteps.vue","../src/component/FluxStepper.vue","../src/component/FluxStepperStep.vue","../src/component/FluxTab.vue","../src/component/FluxTabBar.vue","../src/component/FluxTabBarItem.vue","../src/component/FluxTabs.vue","../src/component/FluxTableActions.vue","../src/component/FluxTableHeader.vue","../src/component/FluxTagStack.vue","../src/component/FluxTimeline.vue","../src/component/FluxTimelineItem.vue","../src/component/FluxToggle.vue","../src/component/FluxToolbar.vue","../src/component/FluxToolbarGroup.vue"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type { Ref } from 'vue';\nimport { onMounted, onUnmounted, ref } from 'vue';\n\nconst BREAKPOINTS = {\n xs: 0,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280\n} as const;\n\ntype Breakpoint = keyof typeof BREAKPOINTS;\n\nexport default function () {\n const currentBreakpoint = ref<Breakpoint | null>(null);\n const breakpointRefs = Object.fromEntries(\n Object.keys(BREAKPOINTS).map((key) => [key, ref(false)])\n ) as Record<Breakpoint, Ref<boolean>>;\n\n const updateBreakpoints = () => {\n const width = window.innerWidth;\n let activeBreakpoint: Breakpoint | null = null;\n\n for (const [key, value] of Object.entries(BREAKPOINTS).reverse() as [\n Breakpoint,\n number\n ][]) {\n if (width >= value) {\n activeBreakpoint = key;\n break;\n }\n }\n\n currentBreakpoint.value = activeBreakpoint;\n\n for (const key of Object.keys(BREAKPOINTS) as Breakpoint[]) {\n breakpointRefs[key].value = key === activeBreakpoint;\n }\n };\n\n onMounted(() => {\n updateBreakpoints();\n window.addEventListener('resize', updateBreakpoints, {passive: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', updateBreakpoints);\n });\n\n return {\n currentBreakpoint,\n ...breakpointRefs\n };\n}\n","import type { FluxFilterState, FluxFilterValue } from '@flux-ui/types';\nimport type { ComponentInternalInstance, InjectionKey, Ref } from 'vue';\n\nexport const FluxDisabledInjectionKey: InjectionKey<Ref<boolean>> = Symbol();\nexport const FluxExpandableGroupInjectionKey: InjectionKey<FluxExpandableGroupInjection> = Symbol();\nexport const FluxFlyoutInjectionKey: InjectionKey<FluxFlyoutInjection> = Symbol();\nexport const FluxFilterInjectionKey: InjectionKey<FluxFilterInjection> = Symbol();\nexport const FluxFormFieldInjectionKey: InjectionKey<FluxFormFieldInjection> = Symbol();\nexport const FluxTableInjectionKey: InjectionKey<FluxTableInjection> = Symbol();\n\nexport type FluxExpandableGroupInjection = {\n closeAll(): void;\n register(uid: number, expandable: ComponentInternalInstance): void;\n unregister(uid: number): void;\n};\n\nexport type FluxFilterInjection = {\n readonly state: Ref<FluxFilterState>;\n\n back(): void;\n reset(name: string | number): void;\n getValue(name: string | number): FluxFilterValue | undefined;\n hasValue(name: string | number): boolean;\n setValue(name: string | number, value?: FluxFilterValue): void;\n};\n\nexport type FluxFlyoutInjection = {\n readonly isClosing: Ref<boolean>;\n readonly isOpen: Ref<boolean>;\n readonly isOpening: Ref<boolean>;\n};\n\nexport type FluxFormFieldInjection = {\n readonly id?: string;\n};\n\nexport type FluxTableInjection = {\n readonly isBordered: boolean;\n readonly isHoverable: boolean;\n readonly isSeparated: boolean;\n readonly isStriped: boolean;\n};\n","import type { FluxFilterOptionHeader, FluxFilterOptionItem } from '@flux-ui/types';\n\nexport function isFluxFilterOptionHeader(obj: object): obj is FluxFilterOptionHeader {\n return 'title' in obj;\n}\n\nexport function isFluxFilterOptionItem(obj: object): obj is FluxFilterOptionItem {\n return 'label' in obj && 'value' in obj;\n}\n","import type { FluxFormSelectGroup, FluxFormSelectOption } from '@flux-ui/types';\n\nexport function isFluxFormSelectGroup(item: unknown): item is FluxFormSelectGroup {\n return item !== null && typeof item === 'object' && !('value' in item);\n}\n\nexport function isFluxFormSelectOption(item: unknown): item is FluxFormSelectOption {\n return item !== null && typeof item === 'object' && 'value' in item;\n}\n","export type FluxTranslate = (key: FluxTranslation, params?: Record<string, string | number>) => string;\nexport type FluxTranslation = keyof typeof english;\n\nexport const english = {\n 'flux.back': 'Back',\n 'flux.cancel': 'Cancel',\n 'flux.comingSoon': 'Coming soon',\n 'flux.continue': 'Continue',\n 'flux.customPeriod': 'Custom period',\n 'flux.filter': 'Filter',\n 'flux.filterReset': 'Reset filters',\n 'flux.justNow': 'Just now',\n 'flux.max': 'Max',\n 'flux.min': 'Min',\n 'flux.nSelected': '{n} selected',\n 'flux.ok': 'Ok',\n 'flux.optional': 'Optional',\n 'flux.preview': 'Preview',\n 'flux.previewClose': 'Close preview',\n 'flux.displayingOf': '{from}–{to} of {total}',\n 'flux.showN': 'Show {n}',\n 'flux.next': 'Next',\n 'flux.noItems': 'There are no items (left).',\n 'flux.pagination': 'Pagination',\n 'flux.paginationNavigateTitle': 'Navigate',\n 'flux.paginationNavigateMessage': 'Please provide the desired page number you wish to navigate to.',\n 'flux.paginationNavigatePage': 'Page',\n 'flux.previous': 'Previous',\n 'flux.search': 'Search...',\n 'flux.sort': 'Sort',\n 'flux.sortAscending': 'Ascending',\n 'flux.sortDescending': 'Descending',\n 'flux.sortRemove': 'Remove sorting',\n 'flux.today': 'Today',\n 'flux.galleryPlaceholderButton': 'Pick image',\n 'flux.galleryPlaceholderMessage': 'Drop an image here or click the button to upload...',\n 'flux.galleryPlaceholderTitle': 'Gallery',\n 'flux.timezoneEurope': 'Europe',\n 'flux.timezoneAmerica': 'America',\n 'flux.timezoneUs': 'United States',\n 'flux.timezoneAustralia': 'Australia',\n 'flux.timezoneCanada': 'Canada',\n 'flux.timezoneMexico': 'Mexico',\n 'flux.timezoneAfrica': 'Africa',\n 'flux.timezoneAntarctica': 'Antarctica',\n 'flux.timezoneArctic': 'Arctic',\n 'flux.timezoneAsia': 'Asia',\n 'flux.timezoneAtlantic': 'Atlantic',\n 'flux.timezoneBrazil': 'Brazil',\n 'flux.timezoneChile': 'Chile',\n 'flux.timezoneEtc': 'ETC',\n 'flux.timezoneOther': 'Other',\n 'flux.timezoneIndian': 'Indian',\n 'flux.timezonePacific': 'Pacific'\n} as const;\n","import type { FluxIconName } from '@flux-ui/types';\nimport type { IconDefinition, IconPathData } from '@fortawesome/fontawesome-common-types';\n\ntype Icon = [number, number, string[], string, IconPathData];\ntype IconRegistry = Partial<{ [key in FluxIconName]: Icon; }>;\ntype Icons = Record<string, IconDefinition>;\n\nexport let iconRegistry: IconRegistry = {};\n\nexport function fluxRegisterIcons(icons: Icons): void {\n iconRegistry = Object.keys(icons).reduce((acc: IconRegistry, key: string) => {\n const {icon, iconName} = icons[key];\n acc[iconName] = icon;\n\n if (Array.isArray(icon[2])) {\n icon[2].forEach((iconName: string) => acc[iconName as FluxIconName] = icon);\n }\n\n return acc;\n }, {});\n}\n","import type { FluxAlertObject, FluxConfirmObject, FluxPromptObject, FluxSnackbarObject, FluxTooltipObject } from '@flux-ui/types';\nimport type { ComputedRef } from 'vue';\nimport { computed, reactive } from 'vue';\n\nexport type FluxState = {\n dialogCount: number;\n readonly alerts: FluxAlertObject[];\n readonly confirms: FluxConfirmObject[];\n readonly prompts: FluxPromptObject[];\n readonly snackbars: FluxSnackbarObject[];\n readonly tooltips: FluxTooltipObject[];\n};\n\nexport type FluxStore = FluxState & {\n readonly inertMain: ComputedRef<boolean>;\n readonly tooltip: ComputedRef<FluxTooltipObject | null>;\n\n addAlert(spec: Omit<FluxAlertObject, 'id'>): number;\n addConfirm(spec: Omit<FluxConfirmObject, 'id'>): number;\n addPrompt(spec: Omit<FluxPromptObject, 'id'>): number;\n addSnackbar(spec: Omit<FluxSnackbarObject, 'id'>): number;\n addTooltip(spec: Omit<FluxTooltipObject, 'id'>): number;\n registerDialog(): VoidFunction;\n removeAlert(id: number): void;\n removeConfirm(id: number): void;\n removePrompt(id: number): void;\n removeSnackbar(id: number): void;\n removeTooltip(id: number): void;\n showAlert(spec: Omit<FluxAlertObject, 'id' | 'onClose'>): Promise<void>;\n showConfirm(spec: Omit<FluxConfirmObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<boolean>;\n showPrompt(spec: Omit<FluxPromptObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<string | false>;\n showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): Promise<void> | void;\n updateSnackbar(id: number, spec: Partial<Omit<FluxSnackbarObject, 'id'>>): void;\n updateTooltip(id: number, spec: Partial<Omit<FluxTooltipObject, 'id'>>): void;\n showSnackbarSync({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): void;\n};\n\nconst DEFAULT_SNACKBAR_DURATION = 6000;\n\nconst state = reactive<FluxState>({\n dialogCount: 0,\n alerts: [],\n confirms: [],\n prompts: [],\n snackbars: [],\n tooltips: []\n});\n\nlet alertId: number = 0;\nlet tooltipId: number = 0;\n\nexport function addAlert(spec: Omit<FluxAlertObject, 'id'>): number {\n const id = ++alertId;\n\n state.alerts.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addConfirm(spec: Omit<FluxConfirmObject, 'id'>): number {\n const id = ++alertId;\n\n state.confirms.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addPrompt(spec: Omit<FluxPromptObject, 'id'>): number {\n const id = ++alertId;\n\n state.prompts.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addSnackbar(spec: Omit<FluxSnackbarObject, 'id'>): number {\n const id = ++alertId;\n\n state.snackbars.unshift({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addTooltip(spec: Omit<FluxTooltipObject, 'id'>): number {\n const id = ++tooltipId;\n\n state.tooltips.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function registerDialog(): VoidFunction {\n ++state.dialogCount;\n return () => --state.dialogCount;\n}\n\nexport function removeAlert(id: number): void {\n const index = state.alerts.findIndex(a => a.id === id);\n state.alerts.splice(index, 1);\n}\n\nexport function removeConfirm(id: number): void {\n const index = state.confirms.findIndex(c => c.id === id);\n state.confirms.splice(index, 1);\n}\n\nexport function removePrompt(id: number): void {\n const index = state.prompts.findIndex(c => c.id === id);\n state.prompts.splice(index, 1);\n}\n\nexport function removeSnackbar(id: number): void {\n const index = state.snackbars.findIndex(s => s.id === id);\n state.snackbars.splice(index, 1);\n}\n\nexport function removeTooltip(id: number): void {\n const index = state.tooltips.findIndex(t => t.id === id);\n state.tooltips.splice(index, 1);\n}\n\nexport function updateSnackbar(id: number, spec: Partial<Omit<FluxSnackbarObject, 'id'>>): void {\n const index = state.snackbars.findIndex(s => s.id === id);\n Object.assign(state.snackbars[index], spec);\n}\n\nexport function updateTooltip(id: number, spec: Partial<Omit<FluxTooltipObject, 'id'>>): void {\n const index = state.tooltips.findIndex(s => s.id === id);\n Object.assign(state.tooltips[index], spec);\n}\n\nexport async function showAlert(spec: Omit<FluxAlertObject, 'id' | 'onClose'>): Promise<void> {\n return new Promise(resolve => {\n const id = addAlert({\n ...spec,\n onClose(): void {\n resolve();\n removeAlert(id);\n }\n });\n });\n}\n\nexport async function showConfirm(spec: Omit<FluxConfirmObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<boolean> {\n return new Promise(resolve => {\n const id = addConfirm({\n ...spec,\n onCancel(): void {\n resolve(false);\n removeConfirm(id);\n },\n onConfirm(): void {\n resolve(true);\n removeConfirm(id);\n }\n });\n });\n}\n\nexport async function showPrompt(spec: Omit<FluxPromptObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<string | false> {\n return new Promise(resolve => {\n const id = addPrompt({\n ...spec,\n onCancel(): void {\n resolve(false);\n removePrompt(id);\n },\n onConfirm(text: string): void {\n resolve(text);\n removePrompt(id);\n }\n });\n });\n}\n\nexport function showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): void;\n\nexport async function showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): Promise<void> {\n const id = addSnackbar(spec);\n await new Promise(resolve => setTimeout(() => requestAnimationFrame(resolve), duration ?? DEFAULT_SNACKBAR_DURATION));\n removeSnackbar(id);\n}\n\nexport function useFluxStore(): FluxStore {\n const inertMain = computed(() => state.dialogCount > 0);\n const tooltip = computed(() => state.tooltips[state.tooltips.length - 1] || null);\n\n return {\n ...state,\n inertMain,\n tooltip,\n addAlert,\n addConfirm,\n addPrompt,\n addSnackbar,\n addTooltip,\n registerDialog,\n removeAlert,\n removeConfirm,\n removePrompt,\n removeSnackbar,\n removeTooltip,\n showAlert,\n showConfirm,\n showPrompt,\n showSnackbar,\n updateSnackbar,\n updateTooltip,\n showSnackbarSync: promiseToVoidFunction(showSnackbar)\n };\n}\n\ntype Fn = (...args: any[]) => any;\ntype FnSync<T extends Fn> = (...args: Parameters<T>) => void;\n\nfunction promiseToVoidFunction<T extends Fn>(fn: T): FnSync<T> {\n return (...args: any[]) => fn(...args);\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import type { InputMask } from 'imask';\nimport imask from 'imask/holder';\n\nimport 'imask/masked/pattern';\n\nexport function bic(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aaaaaa##[000]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n\nexport function iban(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aa00 #### 0000 0000[ 0000 0000 0000 0000]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n\nexport function vat(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aa########[#####]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxDisabledInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxDisabledInjectionKey, ref(false));\n}\n","import type { Ref } from 'vue';\nimport { computed, unref } from 'vue';\nimport useDisabledInjection from './useDisabledInjection';\n\nexport default function (componentDisabled: Ref<boolean>) {\n const treeDisabled = useDisabledInjection();\n\n return computed(() => unref(componentDisabled) || unref(treeDisabled));\n}\n","import { inject } from 'vue';\nimport { FluxExpandableGroupInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxExpandableGroupInjectionKey, {\n closeAll: () => void 0,\n register: () => void 0,\n unregister: () => void 0\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxFilterInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFilterInjectionKey, {\n // note(Bas): The default value is never used, but required by\n // Vue, so that explains the empty getter and function below.\n state: ref({\n get resettable() {\n return [];\n },\n\n reset(): void {\n }\n }),\n back: () => void 0,\n reset: () => void 0,\n getValue: () => void 0,\n hasValue: () => false,\n setValue: () => void 0\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxFlyoutInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFlyoutInjectionKey, {\n isClosing: ref(false),\n isOpen: ref(false),\n isOpening: ref(false)\n });\n}\n","import { inject, useId } from 'vue';\nimport { FluxFormFieldInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFormFieldInjectionKey, {\n id: useId()\n });\n}\n","import { inject } from 'vue';\nimport { FluxTableInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxTableInjectionKey, {\n isBordered: false,\n isHoverable: false,\n isSeparated: false,\n isStriped: false\n });\n}\n","function d(e,r){return Math.round(e/r)*r}function M(e,r,t,o){return Math.max(r,Math.min(t,+d(e*(t-r)+r,o).toPrecision(4)))}function R(e){return e.toString().split(\".\")[1]?.length??0}import{defineStore as q,storeToRefs as Q}from\"pinia\";function P(e,r){let t=q(e,r);return()=>{let o=t(),i=Object.getOwnPropertyNames(o),u=Q(o),n={};for(let a of i){if(a.startsWith(\"$\")||a.startsWith(\"_\"))continue;if(a in u){n[a]=u[a];continue}n[a]=o[a]}return n}}function b(e,r){let t=document.createElement(\"a\");t.download=r,t.href=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function x(e,r){let t=URL.createObjectURL(e);b(t,r),URL.revokeObjectURL(t)}function k(e,r,t){let o=new Blob([e],{type:t});x(o,r)}function O(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function F(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function L(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function B(e){return e.toLocaleString({month:\"long\"})}function H(e,r=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:r,minimumFractionDigits:r}).format(e)}function I(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function v(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function C(e,r,t=5,o){let i=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],u=[0.1,0.5,...i],n=r-e,a=o?u:i;for(let l of a){let D=Math.floor(n/l),p=[];if(D>t+1)continue;p.push(e);for(let w=1;w<D;++w)p.push(w*l+e);return p.push(r),p}let m=n.toString().length-1,s=Math.pow(10,m),f=[];for(let l=0;l<n;l+=s)f.push(l+e);return f}function j(e){let r={};do{if(e.name===\"\")break;for(let[t,o]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(t))continue;if(!o.get&&!o.set)continue;r[t]=o}}while(e=Object.getPrototypeOf(e));return r}function E(e){let r=parseInt(e.startsWith(\"#\")?e.substring(1):e,16);return[r>>16&255,r>>8&255,r&255]}function c(e,r,t){if(t<0)t+=1;if(t>1)t-=1;if(t<0.16666666666666666)return e+(r-e)*6*t;if(t<0.5)return r;if(t<0.6666666666666666)return e+(r-e)*(0.6666666666666666-t)*6;return e}function g(e,r,t){let o,i,u;if(e/=360,r/=100,t/=100,r===0)o=i=u=t;else{let n=t<0.5?t*(1+r):t+r-t*r,a=2*t-n;o=c(a,n,e+0.3333333333333333),i=c(a,n,e),u=c(a,n,e-0.3333333333333333)}return o=Math.round(o*255),i=Math.round(i*255),u=Math.round(u*255),[o,i,u]}function T(e,r,t){e/=255,r/=255,t/=255;let o=Math.min(e,r,t),i=Math.max(e,r,t),u=i-o,n,a=i===0?0:u/i,m=i;if(i===o)n=0;else{if(i===e)n=(r-t)/u+(r<t?6:0);else if(i===r)n=(t-e)/u+2;else n=(e-r)/u+4;n/=6}return[n,a,m]}function U(e,r,t){return T(...g(e,r,t))}function h(e,r,t){let o=0,i=0,u=0,n=Math.floor(e*6),a=e*6-n,m=t*(1-r),s=t*(1-a*r),f=t*(1-(1-a)*r);switch(n%6){case 0:o=t,i=f,u=m;break;case 1:o=s,i=t,u=m;break;case 2:o=m,i=t,u=f;break;case 3:o=m,i=s,u=t;break;case 4:o=f,i=m,u=t;break;case 5:o=t,i=m,u=s;break}return o=Math.round(o*255),i=Math.round(i*255),u=Math.round(u*255),[o,i,u]}function S(e,r,t){e/=255,r/=255,t/=255;let o=Math.min(e,r,t),i=Math.max(e,r,t),u=i-o,n,a,m;if(u===0)n=0;else if(i===e)n=(r-t)/u%6;else if(i===r)n=(t-e)/u+2;else n=(e-r)/u+4;if(n=Math.round(n*60),n<0)n+=360;return m=(i+o)/2,a=u===0?0:u/(1-Math.abs(2*m-1)),a=+(a*100).toFixed(1),m=+(m*100).toFixed(1),[n,a,m]}function G(e,r,t){return S(...h(e,r,t))}function N(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function V(e,r){let t=!1;for(let o=0,i=r.length-1;o<r.length;i=o++){let u=r[o][0],n=r[o][1],a=r[i][0],m=r[i][1];if(n>e[1]!=m>e[1]&&e[0]<(a-u)*(e[1]-n)/(m-n)+u)t=!t}return t}function _(e,r){return r.hasSame(e,\"day\")}function z(e){let r=new Uint32Array(1);r[0]=e;function t(){let u=r[0]=r[0]+1831565813|0,n=Math.imul(u^u>>>15,1|u);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}function o(u,n){return t()*(n-u)+u}function i(){return z(t()*4294967296)}return{fork:i,next:t,nextBetween:o}}var Y=z;function A(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as ee,watch as te}from\"vue\";function y(e,r,t=JSON.stringify,o=JSON.parse){let i=localStorage.getItem(e),u=i?o(i):r,n=ee(u);return te(n,(a)=>{if(a===null||a===void 0)localStorage.removeItem(e);else localStorage.setItem(e,t(a))},{deep:!0,immediate:!0}),n}function W(e,r){return y(e,r,(t)=>t??\"\",(t)=>t===\"\"?null:t)}function $(e,r,t){let o=e.toString(16).padStart(2,\"0\"),i=r.toString(16).padStart(2,\"0\"),u=t.toString(16).padStart(2,\"0\");return`#${o}${i}${u}`}function J(e,r,t){e.prototype[r]=t}function K(e,r,t){Object.defineProperty(e,r,{value:t})}function Z(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function X(e){return new Promise((r)=>setTimeout(r,e))}var Xe=\"✔\",qe=\"✘\",Qe=\"—\",Ye=\"–\",et=()=>{return};export{X as waitFor,Z as viewTransition,K as setObjectValue,J as setObjectMethod,d as roundStep,T as rgbToHSV,S as rgbToHSL,$ as rgbToHEX,W as persistentStringRef,y as persistentRef,A as openUrl,Y as mulberry32,_ as isToday,V as isPointInPolygon,N as isHtmlElement,c as hueToRGB,h as hsvToRGB,G as hsvToHSL,g as hslToRGB,U as hslToHSV,E as hexToRGB,j as getPrototypeChain,C as generateStepTicks,v as formatTime,I as formatPercentage,H as formatNumber,B as formatMonth,L as formatDateTime,F as formatDateFull,O as formatDate,b as downloadUrl,k as downloadString,x as downloadBlob,P as defineStore,R as countDecimals,M as clampWithStepPrecision,et as NOOP,Ye as NDASH,Qe as MDASH,qe as CROSS,Xe as CHECK};\n\n//# debugId=A730E4502025CE4164756E2164756E21\n//# sourceMappingURL=index.js.map\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import{computed as E,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=E(()=>{let c=[],m=b(n).month,h=b(n).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let S=1;S<=7;++S)c.push(x.plus({day:S}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),i=E(()=>b(n).plus({month:1})),a=E(()=>b(n).minus({month:1})),f=E(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=E(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function v(){u(b(n).plus({month:1}))}function L(){u(b(n).minus({month:1}))}return{isTransitioningToPast:o,viewDate:n,viewDateNext:i,viewDatePrevious:a,viewMonth:f,viewYear:l,dates:s,days:r,setViewDate:u,nextMonth:v,previousMonth:L}}import{computed as me,unref as xe}from\"vue\";function U(e,t){return{months:me(()=>{let n=[],s=xe(e),r=s.startOf(\"year\");while(r.month<=12&&r.year===s.year)n.push({date:r,label:r.toLocaleString({month:t})}),r=r.plus({months:1});return n})}}import{computed as be,ref as he,unref as P,watch as ye}from\"vue\";function K(e,t=10){let o=he(0),n=be(()=>{let i=P(e).year,a=[],f=i-i%t+P(o)*t;for(let l=0;l<t;++l)a.push(f+l);return a});function s(){++o.value}function r(){--o.value}return ye(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as De,onUnmounted as Ae,ref as Se,unref as Y,watchEffect as Ie}from\"vue\";import{Fragment as Te}from\"vue\";function z(e){let t=[];for(let o of e){if(o.type===Te&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as ve}from\"@basmilius/utils\";var Ee=[\"a:not([disabled])\",\"button:not([disabled])\",\"input[type=checkbox]:not([disabled])\",\"input[type=radio]:not([disabled])\",\"input[type=text]:not([disabled])\",'[tabindex]:not([disabled]):not([tabindex=\"-1\"])'].join(\",\");function d(e){return Array.from(e.querySelectorAll(Ee)).filter(ve).filter((t)=>t.offsetWidth>0||t.offsetHeight>0||t===document.activeElement)}function M(e,t,o){let n=d(e),s=n.indexOf(t);if(s===-1)return null;let r=Le(n);ge(r,s,o);let i=we(s,o,r,n);if(!i){if(o===\"up\"||o===\"left\")i=n[s-1];if(o===\"down\"||o===\"right\")i=n[s+1]}return i}function ge(e,t,o){let n=e[t];e.forEach((s)=>{let r=s.center;switch(o){case\"up\":r={x:r.x,y:s.top+s.height};break;case\"down\":r={x:r.x,y:s.top};break;case\"left\":r={x:s.left+s.width,y:r.y};break;case\"right\":r={x:s.left,y:r.y};break}s.distance=Math.sqrt(Math.pow(n.center.x-r.x,2)+Math.pow(n.center.y-r.y,2))})}function we(e,t,o,n){let s=o[e],r=[];switch(t){case\"up\":r=o.map((a,f)=>f===e||a.top+a.height>s.top?Number.MAX_SAFE_INTEGER:a.distance);break;case\"down\":r=o.map((a,f)=>f===e||a.top<s.top+s.height?Number.MAX_SAFE_INTEGER:a.distance);break;case\"left\":r=o.map((a,f)=>f===e||a.left+a.width>s.left?Number.MAX_SAFE_INTEGER:a.distance);break;case\"right\":r=o.map((a,f)=>f===e||a.left<s.left+s.width?Number.MAX_SAFE_INTEGER:a.distance);break}let i=r.indexOf(Math.min(...r));if(r[i]!==Number.MAX_SAFE_INTEGER)return n[i];return null}function Le(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function B(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function V(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function q(e,t){if(!e.exposed||!(t in e.exposed))throw new Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Re}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Re(s))return n[0]||void 0;let r=n.indexOf(s);return n[r+t]||void 0}function F(e){return Array.from(e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])')).filter((t)=>!t.hasAttribute(\"disabled\")||t.getAttribute(\"disabled\")!==\"true\").filter((t)=>!t.hasAttribute(\"aria-disabled\")||t.getAttribute(\"aria-disabled\")!==\"true\")}import{isHtmlElement as Fe}from\"@basmilius/utils\";import{unref as ke}from\"vue\";function p(e){let t=ke(e);if(Fe(t))return t;return t?.$el}function W(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=He(e),s=t.compareDocumentPosition(e),r;if(s&&Node.DOCUMENT_POSITION_PRECEDING||o)r=n.firstChild();else r=n.lastChild();(r!==null?r:e).focus()}function He(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class G{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,o=!0){let n={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(n),o)this.toggle(n,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let n=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),n&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new G;var X=!globalThis.document;function j(e,t,o){let n=Se([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Ae(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!Y(t))return;!Y(n).some((a)=>a.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((i)=>{let a=p(i);a&&r.push(a)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function Z(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as $,ref as Ne,watch as Ue}from\"vue\";function J(e,t,o=!1){let n=Ne($(e)?e.value:e),s=_e((r,i)=>({get(){return r(),n.value},set:Pe((a)=>{n.value=a,i()},t,o)}));if($(e))Ue(e,(r)=>s.value=r);return s}function Pe(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Ke}from\"vue\";function k(e,t,o,n={passive:!0}){Ke(e,(s,r,i)=>{if(!s)return;s.addEventListener(t,o,n),i(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function Q(e,t){let o=Ve();ze(()=>{s()}),Be(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),qe(e))}function s(){n(),t()}}import{ref as We,watch as Ge}from\"vue\";function ee(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let i=p(e);if(!i)return;let a=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);a.observe(i),r(()=>a.disconnect())},{immediate:!0}),o}import{onScopeDispose as Xe,watch as Ye}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Ye(()=>p(e),(a)=>{if(r(),!a)return;n=new MutationObserver(t),n.observe(a,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function i(){r(),s()}Xe(i)}import{DateTime as te}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function oe(e,t){let o=`flux/${e}`,n=je(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=te.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let i=r;if(te.isDateTime(r))i=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(i))}),n}import{ref as I,unref as $e}from\"vue\";function ne(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=$e(e);if(n instanceof Document)n=n.scrollingElement;t.value=n?.scrollLeft??0,o.value=n?.scrollTop??0}),{x:t,y:o}}import{ref as ie,watch as ce}from\"vue\";import{onMounted as Je,onUnmounted as Qe,ref as re,unref as se}from\"vue\";var et=0;function D(e=!1){let t=re(`focus-trap-${++et}`),o=re(!1);return Je(()=>w.add(se(t),(n)=>o.value=n,e)),Qe(()=>w.remove(se(t))),o}import{onUnmounted as tt,ref as ot,unref as ae}from\"vue\";function A(e){let t=ot(document.activeElement);tt(()=>{if(ae(e))return;requestAnimationFrame(()=>ae(t)?.focus())})}function le(e,t={}){if(X)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);A(n),ce(e,(i,a,f)=>{let l=p(e),u=s||document;if(r.value&&l&&document.activeElement&&!l.contains(document.activeElement)&&!l.querySelector(\"[autofocus]\"))g(l,document.activeElement,!0);function v(c){if(!r.value||!l)return;let m=c.target||document.body;if(l.contains(m))return;c.preventDefault(),c.stopImmediatePropagation(),g(l,m)}function L(c){if(!r.value||!l)return;if(!c.relatedTarget||c.relatedTarget===document.body)c.preventDefault(),l.focus();let m=c.target||document.body;if(l.contains(m))return;g(l,m)}if(u.addEventListener(\"focusin\",v,{capture:!0}),u.addEventListener(\"focusout\",L,{capture:!0}),l){let c=d(l),m=c.findIndex((T)=>T.classList.contains(\"is-active\")),h=c.findIndex((T)=>!T.hasAttribute(\"aria-disabled\")),y=c[0];if(m>-1)y=c[m];if(h>-1)y=c[h];if(y)y.focus()}f(()=>{u.removeEventListener(\"focusin\",v),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ce(()=>o,()=>{let i=p(e);if(r.value=!o,o||!i)return;let a=d(i);if(a.includes(document.activeElement))return;a[0]?.focus()},{immediate:!0})}import{onMounted as nt,onUnmounted as rt,ref as st}from\"vue\";function fe(e){let t=st(null);nt(()=>t.value=w.subscribe(e)),rt(()=>t.value?.())}import{watch as at}from\"vue\";function pe(e,{cycle:t=!0,direction:o=\"bidirectional\"}={}){H(e,()=>s(n(),!1));function n(){let i=p(e),a=d(i),f=a.findIndex((u)=>u.classList.contains(\"is-active\")),l=a.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(i,a=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===i?0:-1),a&&l[i]?.focus()}function r(i){let a=p(e),f=d(a);if([\"Enter\",\" \"].includes(i.key))return;switch(o){case\"bidirectional\":it(i,a,f,s);break;case\"horizontal\":case\"vertical\":ct(i,a,t,o,f,s);break}}at(e,(i,a,f)=>{let l=p(e);if(!l)return;l.addEventListener(\"keydown\",r),s(n(),!1),f(()=>l.removeEventListener(\"keydown\",r))},{immediate:!0})}function it(e,t,o,n){let s;switch(e.key){case\"ArrowUp\":s=\"up\";break;case\"ArrowDown\":s=\"down\";break;case\"ArrowLeft\":s=\"left\";break;case\"ArrowRight\":s=\"right\";break;default:return}let r=M(t,document.activeElement,s);if(r)n(o.indexOf(r));e.preventDefault()}function ct(e,t,o,n,s,r){let i;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))i=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))i=1;else return;let a=R(t,i);if(a)r(s.indexOf(a));else if(o)r(i===1?0:s.length-1);e.preventDefault()}var nn=\"#f8fafc\",rn=\"#f1f5f9\",sn=\"#e2e8f0\",an=\"#cbd5e1\",cn=\"#94a3b8\",ln=\"#64748b\",fn=\"#475569\",pn=\"#334155\",un=\"#1e293b\",dn=\"#0f172a\",mn=\"#020617\",xn=\"#f9fafb\",bn=\"#f3f4f6\",hn=\"#e5e7eb\",yn=\"#d1d5db\",Tn=\"#9ca3af\",vn=\"#6b7280\",En=\"#4b5563\",gn=\"#374151\",wn=\"#1f2937\",Ln=\"#111827\",Mn=\"#030712\",Rn=\"#fafafa\",Fn=\"#f4f4f5\",kn=\"#e4e4e7\",Hn=\"#d4d4d8\",Dn=\"#a1a1aa\",An=\"#71717a\",Sn=\"#52525b\",In=\"#3f3f46\",On=\"#27272a\",Cn=\"#18181b\",_n=\"#09090b\",Nn=\"#fafafa\",Un=\"#f5f5f5\",Pn=\"#e5e5e5\",Kn=\"#d4d4d4\",zn=\"#a3a3a3\",Bn=\"#737373\",Vn=\"#525252\",qn=\"#404040\",Wn=\"#262626\",Gn=\"#171717\",Xn=\"#0a0a0a\",Yn=\"#fafaf9\",jn=\"#f5f5f4\",Zn=\"#e7e5e4\",$n=\"#d6d3d1\",Jn=\"#a8a29e\",Qn=\"#78716c\",er=\"#57534e\",tr=\"#44403c\",or=\"#292524\",nr=\"#1c1917\",rr=\"#0c0a09\",sr=\"#fef2f2\",ar=\"#fee2e2\",ir=\"#fecaca\",cr=\"#fca5a5\",lr=\"#f87171\",fr=\"#ef4444\",pr=\"#dc2626\",ur=\"#b91c1c\",dr=\"#991b1b\",mr=\"#7f1d1d\",xr=\"#450a0a\",br=\"#fff7ed\",hr=\"#ffedd5\",yr=\"#fed7aa\",Tr=\"#fdba74\",vr=\"#fb923c\",Er=\"#f97316\",gr=\"#ea580c\",wr=\"#c2410c\",Lr=\"#9a3412\",Mr=\"#7c2d12\",Rr=\"#431407\",Fr=\"#fffbeb\",kr=\"#fef3c7\",Hr=\"#fde68a\",Dr=\"#fcd34d\",Ar=\"#fbbf24\",Sr=\"#f59e0b\",Ir=\"#d97706\",Or=\"#b45309\",Cr=\"#92400e\",_r=\"#78350f\",Nr=\"#451a03\",Ur=\"#fefce8\",Pr=\"#fef9c3\",Kr=\"#fef08a\",zr=\"#fde047\",Br=\"#facc15\",Vr=\"#eab308\",qr=\"#ca8a04\",Wr=\"#a16207\",Gr=\"#854d0e\",Xr=\"#713f12\",Yr=\"#422006\",jr=\"#f7fee7\",Zr=\"#ecfccb\",$r=\"#d9f99d\",Jr=\"#bef264\",Qr=\"#a3e635\",es=\"#84cc16\",ts=\"#65a30d\",os=\"#4d7c0f\",ns=\"#3f6212\",rs=\"#365314\",ss=\"#1a2e05\",as=\"#f0fdf4\",is=\"#dcfce7\",cs=\"#bbf7d0\",ls=\"#86efac\",fs=\"#4ade80\",ps=\"#22c55e\",us=\"#16a34a\",ds=\"#15803d\",ms=\"#166534\",xs=\"#14532d\",bs=\"#052e16\",hs=\"#ecfdf5\",ys=\"#d1fae5\",Ts=\"#a7f3d0\",vs=\"#6ee7b7\",Es=\"#34d399\",gs=\"#10b981\",ws=\"#059669\",Ls=\"#047857\",Ms=\"#065f46\",Rs=\"#064e3b\",Fs=\"#022c22\",ks=\"#f0fdfa\",Hs=\"#ccfbf1\",Ds=\"#99f6e4\",As=\"#5eead4\",Ss=\"#2dd4bf\",Is=\"#14b8a6\",Os=\"#0d9488\",Cs=\"#0f766e\",_s=\"#115e59\",Ns=\"#134e4a\",Us=\"#042f2e\",Ps=\"#ecfeff\",Ks=\"#cffafe\",zs=\"#a5f3fc\",Bs=\"#67e8f9\",Vs=\"#22d3ee\",qs=\"#06b6d4\",Ws=\"#0891b2\",Gs=\"#0e7490\",Xs=\"#155e75\",Ys=\"#164e63\",js=\"#083344\",Zs=\"#f0f9ff\",$s=\"#e0f2fe\",Js=\"#bae6fd\",Qs=\"#7dd3fc\",ea=\"#38bdf8\",ta=\"#0ea5e9\",oa=\"#0284c7\",na=\"#0369a1\",ra=\"#075985\",sa=\"#0c4a6e\",aa=\"#082f49\",ia=\"#eff6ff\",ca=\"#dbeafe\",la=\"#bfdbfe\",fa=\"#93c5fd\",pa=\"#60a5fa\",ua=\"#3b82f6\",da=\"#2563eb\",ma=\"#1d4ed8\",xa=\"#1e40af\",ba=\"#1e3a8a\",ha=\"#172554\",ya=\"#eef2ff\",Ta=\"#e0e7ff\",va=\"#c7d2fe\",Ea=\"#a5b4fc\",ga=\"#818cf8\",wa=\"#6366f1\",La=\"#4f46e5\",Ma=\"#4338ca\",Ra=\"#3730a3\",Fa=\"#312e81\",ka=\"#1e1b4b\",Ha=\"#f5f3ff\",Da=\"#ede9fe\",Aa=\"#ddd6fe\",Sa=\"#c4b5fd\",Ia=\"#a78bfa\",Oa=\"#8b5cf6\",Ca=\"#7c3aed\",_a=\"#6d28d9\",Na=\"#5b21b6\",Ua=\"#4c1d95\",Pa=\"#2e1065\",Ka=\"#faf5ff\",za=\"#f3e8ff\",Ba=\"#e9d5ff\",Va=\"#d8b4fe\",qa=\"#c084fc\",Wa=\"#a855f7\",Ga=\"#9333ea\",Xa=\"#7e22ce\",Ya=\"#6b21a8\",ja=\"#581c87\",Za=\"#3b0764\",$a=\"#fdf4ff\",Ja=\"#fae8ff\",Qa=\"#f5d0fe\",ei=\"#f0abfc\",ti=\"#e879f9\",oi=\"#d946ef\",ni=\"#c026d3\",ri=\"#a21caf\",si=\"#86198f\",ai=\"#701a75\",ii=\"#4a044e\",ci=\"#fdf2f8\",li=\"#fce7f3\",fi=\"#fbcfe8\",pi=\"#f9a8d4\",ui=\"#f472b6\",di=\"#ec4899\",mi=\"#db2777\",xi=\"#be185d\",bi=\"#9d174d\",hi=\"#831843\",yi=\"#500724\",Ti=\"#fff1f2\",vi=\"#ffe4e6\",Ei=\"#fecdd3\",gi=\"#fda4af\",wi=\"#fb7185\",Li=\"#f43f5e\",Mi=\"#e11d48\",Ri=\"#be123c\",Fi=\"#9f1239\",ki=\"#881337\",Hi=\"#4c0519\";class ue{#t;#e;constructor(e){this.#e=[],this.#t=e,this.onKeyDown=this.onKeyDown.bind(this)}focusElement(e,t=!0){if(!this.#e[e])return;for(let o=0;o<this.#e.length;++o)this.#e[o].tabIndex=o===e?0:-1;if(t)this.#e[e]?.focus()}register(){this.#e=F(this.#t),this.#t.addEventListener(\"keydown\",this.onKeyDown),this.focusElement(0,!1)}unregister(){this.#t.removeEventListener(\"keydown\",this.onKeyDown)}onKeyDown(e){let t=this.#t.querySelector('[tabindex=\"0\"]'),o=this.#e.findIndex((n)=>n===t)??0;switch(e.key){case\"ArrowUp\":case\"ArrowLeft\":this.focusElement(o-1);break;case\"ArrowDown\":case\"ArrowRight\":this.focusElement(o+1);break;default:return}e.preventDefault(),e.stopPropagation()}}var lt={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new ue(e);t.register(),O.set(e,t)}},O=new WeakMap;class de{#t;#e;constructor(e){this.#t=e,this.#e=new MutationObserver(this.onMutation.bind(this))}register(){this.#e.observe(this.#t,{childList:!0,subtree:!0}),requestAnimationFrame(this.onMutation.bind(this))}unregister(){this.#e.disconnect()}onMutation(){let{height:e}=getComputedStyle(this.#t);this.#t.style.height=\"auto\";let{height:t}=getComputedStyle(this.#t);if(this.#t.style.height=e,t===e)return;getComputedStyle(this.#t),requestAnimationFrame(()=>requestAnimationFrame(()=>this.#t.style.height=t))}}var ft={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new de(e);t.register(),C.set(e,t)}},C=new WeakMap;export{_n as zinc950,Cn as zinc900,On as zinc800,In as zinc700,Sn as zinc600,An as zinc500,Rn as zinc50,Dn as zinc400,Hn as zinc300,kn as zinc200,Fn as zinc100,Yr as yellow950,Xr as yellow900,Gr as yellow800,Wr as yellow700,qr as yellow600,Vr as yellow500,Ur as yellow50,Br as yellow400,zr as yellow300,Kr as yellow200,Pr as yellow100,g as wrapFocus,W as warn,Pa as violet950,Ua as violet900,Na as violet800,_a as violet700,Ca as violet600,Oa as violet500,Ha as violet50,Ia as violet400,Sa as violet300,Aa as violet200,Da as violet100,ft as vHeightTransition,lt as vFocusTrap,ne as useScrollPosition,oe as useRemembered,H as useMutationObserver,Q as useInterval,ee as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,A as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,J as useDebouncedRef,Z as useComponentId,j as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Us as teal950,Ns as teal900,_s as teal800,Cs as teal700,Os as teal600,Is as teal500,ks as teal50,Ss as teal400,As as teal300,Ds as teal200,Hs as teal100,rr as stone950,nr as stone900,or as stone800,tr as stone700,er as stone600,Qn as stone500,Yn as stone50,Jn as stone400,$n as stone300,Zn as stone200,jn as stone100,mn as slate950,dn as slate900,un as slate800,pn as slate700,fn as slate600,ln as slate500,nn as slate50,cn as slate400,an as slate300,sn as slate200,rn as slate100,aa as sky950,sa as sky900,ra as sky800,na as sky700,oa as sky600,ta as sky500,Zs as sky50,ea as sky400,Qs as sky300,Js as sky200,$s as sky100,Hi as rose950,ki as rose900,Fi as rose800,Ri as rose700,Mi as rose600,Li as rose500,Ti as rose50,wi as rose400,gi as rose300,Ei as rose200,vi as rose100,xr as red950,mr as red900,dr as red800,ur as red700,pr as red600,fr as red500,sr as red50,lr as red400,cr as red300,ir as red200,ar as red100,Za as purple950,ja as purple900,Ya as purple800,Xa as purple700,Ga as purple600,Wa as purple500,Ka as purple50,qa as purple400,Va as purple300,Ba as purple200,za as purple100,yi as pink950,hi as pink900,bi as pink800,xi as pink700,mi as pink600,di as pink500,ci as pink50,ui as pink400,pi as pink300,fi as pink200,li as pink100,Rr as orange950,Mr as orange900,Lr as orange800,wr as orange700,gr as orange600,Er as orange500,br as orange50,vr as orange400,Tr as orange300,yr as orange200,hr as orange100,Xn as neutral950,Gn as neutral900,Wn as neutral800,qn as neutral700,Vn as neutral600,Bn as neutral500,Nn as neutral50,zn as neutral400,Kn as neutral300,Pn as neutral200,Un as neutral100,ss as lime950,rs as lime900,ns as lime800,os as lime700,ts as lime600,es as lime500,jr as lime50,Qr as lime400,Jr as lime300,$r as lime200,Zr as lime100,X as isSSR,ka as indigo950,Fa as indigo900,Ra as indigo800,Ma as indigo700,La as indigo600,wa as indigo500,ya as indigo50,ga as indigo400,Ea as indigo300,va as indigo200,Ta as indigo100,bs as green950,xs as green900,ms as green800,ds as green700,us as green600,ps as green500,as as green50,fs as green400,ls as green300,cs as green200,is as green100,Mn as gray950,Ln as gray900,wn as gray800,gn as gray700,En as gray600,vn as gray500,xn as gray50,Tn as gray400,yn as gray300,hn as gray200,bn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,q as getExposedRef,V as getComponentProps,B as getComponentName,M as getBidirectionalFocusElement,ii as fuchsia950,ai as fuchsia900,si as fuchsia800,ri as fuchsia700,ni as fuchsia600,oi as fuchsia500,$a as fuchsia50,ti as fuchsia400,ei as fuchsia300,Qa as fuchsia200,Ja as fuchsia100,z as flattenVNodeTree,Fs as emerald950,Rs as emerald900,Ms as emerald800,Ls as emerald700,ws as emerald600,gs as emerald500,hs as emerald50,Es as emerald400,vs as emerald300,Ts as emerald200,ys as emerald100,js as cyan950,Ys as cyan900,Xs as cyan800,Gs as cyan700,Ws as cyan600,qs as cyan500,Ps as cyan50,Vs as cyan400,Bs as cyan300,zs as cyan200,Ks as cyan100,ha as blue950,ba as blue900,xa as blue800,ma as blue700,da as blue600,ua as blue500,ia as blue50,pa as blue400,fa as blue300,la as blue200,ca as blue100,Nr as amber950,_r as amber900,Cr as amber800,Or as amber700,Ir as amber600,Sr as amber500,Fr as amber50,Ar as amber400,Dr as amber300,Hr as amber200,kr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=87BCF3546FF8C71064756E2164756E21\n//# sourceMappingURL=index.js.map\n","<template>\n <svg\n v-if=\"definition\"\n :viewBox=\"`0 0 ${definition.width} ${definition.height}`\"\n :class=\"$style.fontAwesomeIcon\"\n :style=\"{\n fontSize: size && `${size}px`,\n scale: definition.scale > 1 ? definition.scale : undefined\n }\"\n focusable=\"false\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n <path\n v-for=\"path in definition.paths\"\n :d=\"path\"\n fill=\"currentColor\"/>\n </svg>\n\n <i\n v-else-if=\"name\"\n :class=\"$style.materialSymbolIcon\"\n :style=\"{\n fontSize: size && `${size}px`\n }\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n {{ name }}\n </i>\n\n <i\n v-else\n :class=\"$style.icon\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { warn } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed } from 'vue';\n import { iconRegistry } from '$flux/data';\n import $style from '$flux/css/component/Icon.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n name\n } = defineProps<{\n readonly size?: number | string;\n readonly name?: FluxIconName;\n }>();\n\n const definition = computed(() => {\n if (!name) {\n return null;\n }\n\n const icon = iconRegistry[name];\n\n if (!icon) {\n warn(`Unknown icon: ${name}`);\n\n return null;\n }\n\n return {\n width: icon[0],\n height: icon[1],\n paths: (Array.isArray(icon[4]) ? icon[4] : [icon[4]]) as string[],\n scale: Math.max(1, icon[0] / 512)\n };\n });\n\n const onClick = (evt: MouseEvent) => emit('click', evt);\n</script>\n","<template>\n <router-link\n v-if=\"componentType === 'route'\"\n v-bind=\"$attrs\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </router-link>\n\n <a\n v-else-if=\"componentType === 'link'\"\n v-bind=\"$attrs\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </a>\n\n <button\n v-else-if=\"componentType === 'button'\"\n v-bind=\"$attrs\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </button>\n\n <div\n v-else\n v-bind=\"$attrs\"\n @click=\"onClick\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPressableType, FluxTo } from '@flux-ui/types';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n mouseenter: [MouseEvent];\n mouseleave: [MouseEvent];\n }>();\n\n defineProps<{\n readonly componentType?: FluxPressableType;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onClick(evt: MouseEvent, navigate?: (evt: MouseEvent) => void): void {\n emit('click', evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n\n navigate?.(evt);\n }\n</script>\n","<template>\n <svg\n :class=\"$style.spinner\"\n viewBox=\"0 0 24 24\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <circle\n :class=\"$style.spinnerTrack\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"/>\n\n <circle\n :class=\"$style.spinnerEffect\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n\n <circle\n :class=\"$style.spinnerValue\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Spinner.module.scss';\n\n defineProps<{\n readonly size?: number;\n }>();\n</script>\n","<template>\n <FluxPressable\n :component-type=\"type\"\n :class=\"clsx(\n cssClass,\n isFilled && $style.isFilled,\n size === 'small' && $style.isSmall,\n size === 'medium' && $style.isMedium,\n size === 'large' && $style.isLarge,\n size === 'xl' && $style.isXl\n )\"\n :type=\"isSubmit ? 'submit' : 'button'\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\">\n <slot name=\"before\"/>\n\n <slot name=\"iconLeading\">\n <FluxSpinner\n v-if=\"isLoading && (iconLeading || !iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconLeading\"\n :class=\"cssClassIcon\"\n :name=\"iconLeading\"/>\n </slot>\n\n <slot name=\"label\">\n <span\n v-if=\"label\"\n :class=\"cssClassLabel\">\n {{ label }}\n </span>\n </slot>\n\n <slot name=\"iconTrailing\">\n <FluxSpinner\n v-if=\"isLoading && (!iconLeading && iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"cssClassIcon\"\n :name=\"iconTrailing\"/>\n </slot>\n\n <slot name=\"after\"/>\n </FluxPressable>\n</template>\n\n<script lang=\"ts\">\n export const SLOTS = ['default', 'after', 'before', 'iconLeading', 'iconTrailing', 'label'] as const;\n</script>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/base/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n disabled: componentDisabled,\n isLoading,\n size = 'medium',\n tabindex = 0,\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly cssClass: string;\n readonly cssClassIcon: string;\n readonly cssClassLabel: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onClick(evt: MouseEvent): void {\n if (unref(disabled) || isLoading) {\n evt.preventDefault();\n evt.stopPropagation();\n return;\n }\n\n emit('click', evt);\n }\n\n function onMouseEnter(evt: MouseEvent): void {\n emit('mouseenter', evt);\n }\n\n function onMouseLeave(evt: MouseEvent): void {\n emit('mouseleave', evt);\n }\n</script>\n","<template>\n <FluxButton\n :=\"{disabled, isLoading, label, href, rel, target, to, type}\"\n :css-class=\"$style.action\"\n :css-class-icon=\"$style.actionIcon\"\n :css-class-label=\"$style.actionLabel\"\n :class=\"isDestructive && $style.isDestructive\"\n :icon-leading=\"icon\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxIconName } from '@flux-ui/types';\n import FluxButton from './FluxButton.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading' | 'iconTrailing' | 'isFilled' | 'size'> & {\n readonly icon?: FluxIconName;\n readonly isDestructive?: boolean;\n }>();\n</script>\n","import type { FluxFormSelectEntry, FluxFormSelectOption, FluxFormSelectOptions, FluxFormSelectValue } from '@flux-ui/types';\nimport type { Ref } from 'vue';\nimport { computed, unref } from 'vue';\nimport { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n\nexport default function (modelValue: Ref<FluxFormSelectValue>, isMultiple: boolean, options: Ref<FluxFormSelectEntry[]>, searchQuery?: Ref<string>) {\n const values = computed(() => {\n const model = unref(modelValue);\n return Array.isArray(model) ? model : [model];\n });\n\n const groups = computed(() => {\n const groups: FluxFormSelectOptions[] = [];\n const search = unref(searchQuery)?.trim().toLowerCase();\n\n const available = unref(options)\n .filter(o => !('value' in o) || (!search || o.label.toLowerCase().includes(search)))\n .filter(o => !('value' in o) || !isMultiple || !unref(selected).find(s => s.value === o.value));\n\n if (available.length === 0) {\n return [];\n }\n\n if (!available.find(isFluxFormSelectGroup)) {\n return [[null, available]] as FluxFormSelectOptions[];\n }\n\n for (let i = 0; i < available.length;) {\n const item = available[i];\n\n if (isFluxFormSelectOption(item)) {\n ++i;\n groups.push([null, [item]]);\n continue;\n }\n\n const subItems: FluxFormSelectOption[] = [];\n\n for (++i; i <= available.length; ++i) {\n const subItem = available[i];\n\n if (isFluxFormSelectGroup(subItem) || i === available.length) {\n if (subItems.length > 0) {\n groups.push([item, subItems]);\n }\n\n break;\n }\n\n subItems.push(subItem);\n }\n }\n\n return groups;\n });\n\n const selected = computed(() => unref(values)\n .map(v => unref(options).find(o => isFluxFormSelectOption(o) && o.value === v))\n .filter(isFluxFormSelectOption));\n\n return {\n groups,\n selected,\n values\n };\n}\n","import { computed, shallowRef, unref } from 'vue';\n\nexport default function () {\n const tasks = shallowRef(0);\n\n const isLoading = computed(() => unref(tasks) > 0);\n\n function loaded<T extends Function>(fn: T): T {\n return (async (...args: any[]) => {\n tasks.value++;\n\n return await fn(...args)\n .finally(() => tasks.value--);\n }) as unknown as T;\n }\n\n return {\n isLoading,\n loaded\n };\n}\n","import { getCurrentInstance } from 'vue';\nimport type { FluxTranslate, FluxTranslation } from '$flux/data';\nimport { english } from '$flux/data';\n\nconst fallback: FluxTranslate = (key, params) => {\n if (!(key in english)) {\n return key;\n }\n\n let translation: string = english[key as FluxTranslation];\n\n for (let paramName in params) {\n translation = translation.replaceAll(`{${paramName}}`, params[paramName].toString());\n }\n\n return translation;\n};\n\nexport default () => {\n const instance = getCurrentInstance()?.proxy;\n\n if (!instance || !isVueI18n(instance)) {\n return fallback;\n }\n\n return instance.$t;\n};\n\ntype VueI18n = {\n $t: FluxTranslate;\n}\n\nfunction isVueI18n(obj: object | null): obj is VueI18n {\n return !!obj && '$t' in obj;\n}\n","<template>\n <div :class=\"$style.buttonGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Button.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.destructiveButton\"\n :css-class-icon=\"$style.destructiveButtonIcon\"\n :css-class-label=\"$style.destructiveButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"CLASS_MAP[variant]\">\n <slot/>\n\n <slot\n v-if=\"isLoading\"\n name=\"loader\">\n <div :class=\"$style.paneLoader\">\n <FluxSpinner/>\n </div>\n </slot>\n\n <div\n v-if=\"tag\"\n :class=\"$style.paneTag\">\n {{ tag }}\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const CLASS_MAP = {\n default: $style.paneDefault,\n flat: $style.paneFlat,\n well: $style.paneWell\n } as const;\n\n const {\n variant = 'default'\n } = defineProps<{\n readonly isLoading?: boolean;\n readonly tag?: string;\n readonly variant?: 'default' | 'flat' | 'well';\n }>();\n\n defineSlots<{\n default(): any;\n loader(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"mount\"\n :class=\"$style.flyout\"\n :style=\"{\n '--opener-width': `${openerWidth}px`,\n '--pane-mx': `${paneMarginX}px`,\n '--pane-my': `${paneMarginY}px`,\n '--pane-x': `${paneX - 12}px`,\n '--pane-y': `${paneY - 12}px`\n }\">\n <slot\n name=\"opener\"\n v-bind=\"{close, open, toggle}\"/>\n\n <dialog\n ref=\"dialog\"\n :class=\"$style.flyoutDialog\"\n @click=\"onDialogBackdropClick\"\n @keydown.prevent.esc=\"close\">\n <FluxPane\n v-if=\"isOpen\"\n ref=\"pane\"\n :class=\"clsx(\n $style.flyoutPane,\n isAutoWidth && $style.isAutoWidth,\n isClosing && $style.isClosing,\n isOpening && $style.isOpening\n )\"\n :style=\"{\n width: `${width}px`\n }\">\n <slot v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </FluxPane>\n </dialog>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useFocusTrap } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { provide, ref, unref, useTemplateRef, watch } from 'vue';\n import { FluxFlyoutInjectionKey } from '$flux/data';\n import FluxPane from './FluxPane.vue';\n import $style from '$flux/css/component/Flyout.module.scss';\n\n const {\n direction = 'vertical',\n margin = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly isAutoWidth?: boolean;\n readonly margin?: number;\n readonly width?: number | string;\n }>();\n\n defineSlots<{\n default(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n opener(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const dialogRef = useTemplateRef('dialog');\n const mountRef = useTemplateRef('mount');\n const paneRef = useTemplateRef('pane');\n\n const isClosing = ref(false);\n const isOpening = ref(false);\n const isOpen = ref(false);\n const openerWidth = ref(0);\n const openerHeight = ref(0);\n const paneX = ref(0);\n const paneY = ref(0);\n const paneMarginX = ref(0);\n const paneMarginY = ref(0);\n\n useFocusTrap(paneRef);\n\n function close(): void {\n const pane = unrefTemplateElement(paneRef);\n\n if (!pane) {\n return;\n }\n\n pane.addEventListener('animationend', () => {\n isClosing.value = false;\n isOpen.value = false;\n }, {once: true});\n\n isClosing.value = true;\n }\n\n function open(): void {\n const mount = unref(mountRef)!;\n const {width, height} = mount.children[0].getBoundingClientRect();\n\n isOpen.value = true;\n openerWidth.value = width;\n openerHeight.value = height;\n\n requestAnimationFrame(() => {\n const pane = unrefTemplateElement(paneRef)!;\n\n pane.addEventListener('animationend', () => {\n isOpening.value = false;\n }, {once: true});\n\n isOpening.value = true;\n });\n\n requestAnimationFrame(reposition);\n }\n\n function reposition(): void {\n const mount = unref(mountRef)!;\n const pane = unrefTemplateElement(paneRef)!;\n const {top, left, width, height} = mount.children[0].getBoundingClientRect();\n const {width: paneWidth, height: paneHeight} = pane.getBoundingClientRect();\n\n let x, y, mx = 0, my = 0;\n\n if (direction === 'horizontal') {\n x = left + width;\n y = top + height / 2 - paneHeight / 2;\n mx = margin;\n\n if (x + paneWidth > innerWidth - 30) {\n x = left - paneWidth;\n mx = -mx;\n }\n } else {\n x = left + width / 2 - paneWidth / 2;\n y = top + height;\n my = margin;\n\n if (y + paneHeight > innerHeight - 30) {\n y = top - paneHeight;\n my = -my;\n }\n }\n\n paneX.value = Math.max(30, Math.min(innerWidth - paneWidth - 30, x));\n paneY.value = Math.max(30, Math.min(innerHeight - paneHeight - 30, y));\n paneMarginX.value = mx;\n paneMarginY.value = my;\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n function onDialogBackdropClick(evt: Event): void {\n const target = evt.target as HTMLElement;\n\n if (target.tagName !== 'DIALOG') {\n return;\n }\n\n close();\n }\n\n watch(isOpen, (isOpen, _, onCleanup) => {\n const dialog = unref(dialogRef)!;\n\n if (isOpen && !dialog.open) {\n dialog.showModal();\n\n window.addEventListener('scroll', reposition, {passive: true});\n onCleanup(() => window.removeEventListener('scroll', reposition));\n } else if (!isOpen && dialog.open) {\n dialog.close();\n }\n });\n\n provide(FluxFlyoutInjectionKey, {\n isClosing,\n isOpen,\n isOpening\n });\n\n defineExpose({\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.secondaryButton\"\n :css-class-icon=\"$style.secondaryButtonIcon\"\n :css-class-label=\"$style.secondaryButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"$style.spacer\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n</script>\n","<template>\n <Component\n :is=\"tag ?? 'div'\"\n :class=\"clsx(\n direction === 'horizontal' && $style.stackHorizontal,\n direction === 'vertical' && $style.stackVertical,\n isCentered && $style.isCentered,\n isFill && $style.isFill,\n isWrapping && $style.isWrapping\n )\"\n :style=\"{\n '--gap': gap && `${gap}px`\n }\">\n <slot/>\n </Component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n direction = 'vertical',\n gap = 30\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isCentered?: boolean;\n readonly isFill?: boolean;\n readonly isWrapping?: boolean;\n readonly tag?: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { defineComponent, getCurrentInstance, onMounted, onUnmounted, PropType, ref, SlotsType, VNode } from 'vue';\n import { addTooltip, removeTooltip } from '$flux/data';\n\n export default defineComponent({\n props: {\n content: String as PropType<string | undefined>,\n direction: String as PropType<'horizontal' | 'vertical'>\n },\n slots: Object as SlotsType<{\n content: () => VNode[],\n default: () => VNode[],\n }>,\n setup(props, {slots}) {\n const instance = getCurrentInstance()!;\n\n const tooltipId = ref<number | null>(null);\n\n onMounted(() => {\n const elm = instance.proxy!.$el;\n elm.addEventListener('mouseenter', onHover, {passive: true});\n elm.addEventListener('mouseleave', onLeave, {passive: true});\n });\n\n onUnmounted(() => {\n const elm = instance.proxy!.$el;\n elm.removeEventListener('mouseenter', onHover);\n elm.removeEventListener('mouseleave', onLeave);\n onLeave();\n });\n\n function onHover(): void {\n onLeave();\n\n if ((props.content?.trim().length ?? 0) === 0 && !slots.content) {\n return;\n }\n\n tooltipId.value = addTooltip({\n content: props.content,\n contentSlot: slots.content,\n direction: props.direction || 'vertical',\n origin: instance.proxy?.$el\n });\n }\n\n function onLeave(): void {\n if (tooltipId.value) {\n removeTooltip(tooltipId.value);\n }\n }\n\n return () => (slots.default?.() ?? [])[0] ?? null;\n }\n });\n</script>\n","<template>\n <FluxStack\n :class=\"$style.actionBar\"\n direction=\"horizontal\"\n :gap=\"9\">\n <slot name=\"primary\"/>\n <slot name=\"actionsStart\"/>\n\n <FluxSpacer/>\n\n <slot name=\"actionsBeforeSearch\"/>\n <slot name=\"search\"/>\n <slot name=\"actionsAfterSearch\"/>\n\n <FluxFlyout v-if=\"slots.filter\">\n <template #opener=\"{close, open, toggle}\">\n <slot\n v-bind=\"{close, open, toggle}\"\n name=\"filterOpener\">\n <FluxButtonGroup>\n <FluxSecondaryButton\n icon-leading=\"filter\"\n :label=\"translate('flux.filter')\"\n @click=\"open\"/>\n\n <FluxTooltip\n v-if=\"isResettable\"\n :content=\"translate('flux.filterReset')\">\n <FluxDestructiveButton\n icon-leading=\"xmark\"\n @click=\"$emit('reset')\"/>\n </FluxTooltip>\n </FluxButtonGroup>\n </slot>\n </template>\n\n <template #default=\"{close, paneX, paneY, openerWidth, openerHeight}\">\n <slot\n name=\"filter\"\n v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </template>\n </FluxFlyout>\n\n <slot name=\"actionsEnd\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useTranslate } from '$flux/composable/private';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxDestructiveButton from './FluxDestructiveButton.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import FluxStack from './FluxStack.vue';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<{\n reset: [];\n }>();\n\n defineProps<{\n readonly isResettable?: boolean;\n }>();\n\n const slots = defineSlots<{\n primary?(): any;\n actionsEnd?(): any;\n actionsStart?(): any;\n actionsAfterSearch?(): any;\n actionsBeforeSearch?(): any;\n search?(): any;\n\n filter?(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n filterOpener?(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxStack\n :direction=\"direction\"\n :gap=\"gap\"\n :is-fill=\"isFill\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import FluxStack from './FluxStack.vue';\n\n const {\n direction = 'horizontal',\n gap = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isFill?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneBody\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane\n :class=\"$style.actionPane\"\n :variant=\"paneVariant\">\n <slot name=\"base\"/>\n\n <div :class=\"$style.actionPaneGrid\">\n <FluxPaneBody :class=\"$style.actionPaneBody\">\n <slot/>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-if=\"slots.buttons\"\n :class=\"$style.actionPaneBody\">\n <FluxButtonStack direction=\"vertical\">\n <slot name=\"buttons\"/>\n </FluxButtonStack>\n </FluxPaneBody>\n </div>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxButtonStack from './FluxButtonStack.vue';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineProps<{\n readonly paneVariant?: 'default' | 'flat' | 'well';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n buttons?(): any;\n base?(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n ref=\"element\"\n direction=\"horizontal\"\n :gap=\"1\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'horizontal'\n });\n</script>\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.animatedColors\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useComponentId } from '@flux-ui/internals';\n import { computed, onBeforeUnmount, onMounted, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n type Polygon = [number, number, string, PolygonPoint[]];\n type PolygonPoint = [number, number, number];\n\n const {\n colors,\n incrementor = 1,\n opacity = .5,\n seed\n } = defineProps<{\n readonly colors?: string[];\n readonly incrementor?: number;\n readonly opacity?: number;\n readonly seed?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n const componentId = useComponentId();\n\n const contextRef = ref<CanvasRenderingContext2D>();\n const animationFrame = ref(0);\n const tick = ref(0);\n\n const polygons = computed(() => {\n if (!colors || colors.length === 0) {\n return [];\n }\n\n const mulberry = mulberry32(seed ?? unref(componentId));\n const polygons: Polygon[] = [];\n\n for (const color of colors) {\n const localMulberry = mulberry.fork();\n\n const x = colors.length === 1 ? .5 : localMulberry.next();\n const y = colors.length === 1 ? .5 : localMulberry.next();\n const count = Math.round(localMulberry.nextBetween(6, 9));\n const points: PolygonPoint[] = [];\n\n for (let p = 0; p < count; ++p) {\n points.push([\n localMulberry.next(),\n localMulberry.next(),\n localMulberry.next()\n ]);\n }\n\n polygons.push([x, y, color, points]);\n }\n\n return polygons;\n });\n\n onMounted(() => schedule());\n onBeforeUnmount(() => cancel());\n\n function cancel(): void {\n cancelAnimationFrame(animationFrame.value);\n }\n\n function schedule(): void {\n animationFrame.value = requestAnimationFrame(update);\n tick.value += incrementor;\n }\n\n function update(): void {\n const context = unref(contextRef);\n const shapes = unref(polygons);\n\n if (!context || shapes.length === 0) {\n return;\n }\n\n const width = context.canvas.offsetWidth;\n const height = context.canvas.offsetHeight;\n context.canvas.width = width;\n context.canvas.height = height;\n\n const widthBasedOpacity = Math.min(1, Math.max(.15, 360 / width));\n\n context.globalAlpha = opacity * widthBasedOpacity;\n context.globalCompositeOperation = 'screen';\n context.clearRect(0, 0, width, height);\n\n for (const [tx, ty, color, shape] of shapes) {\n context.save();\n context.translate(tx * width, ty * height);\n context.beginPath();\n context.fillStyle = color;\n\n for (let i = 0; i < shape.length; ++i) {\n let [x, y, m] = shape[i];\n\n x = Math.cos(x * Math.PI * 2 + tick.value / (m * 200 + 300)) * (width * .8);\n y = Math.sin(y * Math.PI * 2 + tick.value / (m * 100 + 300)) * (height * .8);\n\n if (i === 0) {\n context.moveTo(x, y);\n } else {\n context.lineTo(x, y);\n }\n }\n\n context.closePath();\n context.fill();\n context.restore();\n }\n\n schedule();\n }\n\n watch(canvasRef, canvas => {\n if (!canvas) {\n contextRef.value = undefined;\n return;\n }\n\n contextRef.value = canvas.getContext('2d', {\n alpha: true,\n colorSpace: 'display-p3'\n })!;\n }, {immediate: true});\n\n watch(polygons, () => {\n cancel();\n schedule();\n });\n</script>\n","<template>\n <div\n :class=\"$style.aspectRatio\"\n :style=\"{aspectRatio}\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n defineProps<{\n aspectRatio: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.autoGrid\"\n :style=\"{\n gap: `${gap}px`,\n '--min-column-width': minColumnWidth\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n gap = 30\n } = defineProps<{\n readonly gap?: number;\n readonly minColumnWidth: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.height = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.width = width;\n elm.style.height = 'auto';\n elm.style.visibility = 'hidden';\n\n const {height} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('width');\n elm.style.removeProperty('visibility');\n elm.style.height = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = height));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.height = height;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = '0'));\n }\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.width = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.height = height;\n elm.style.width = 'auto';\n elm.style.visibility = 'hidden';\n\n const {width} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('height');\n elm.style.removeProperty('visibility');\n elm.style.width = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = width));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.width = width;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = '0'));\n }\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.breakthroughTransitionBackEnterActive : $style.breakthroughTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.breakthroughTransitionBackEnterFrom : $style.breakthroughTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.breakthroughTransitionBackLeaveActive : $style.breakthroughTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.breakthroughTransitionBackLeaveTo : $style.breakthroughTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.fadeTransitionEnterActive\"\n :enter-from-class=\"$style.fadeTransitionEnterFrom\"\n :enter-to-class=\"$style.fadeTransitionEnterTo\"\n :leave-active-class=\"$style.fadeTransitionLeaveActive\"\n :leave-from-class=\"$style.fadeTransitionLeaveFrom\"\n :leave-to-class=\"$style.fadeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.overlayTransitionEnterActive\"\n :enter-from-class=\"$style.overlayTransitionEnterFrom\"\n :leave-active-class=\"$style.overlayTransitionLeaveActive\"\n :leave-to-class=\"$style.overlayTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.routeTransitionBackEnterActive : $style.routeTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.routeTransitionBackEnterFrom : $style.routeTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.routeTransitionBackLeaveActive : $style.routeTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.routeTransitionBackLeaveTo : $style.routeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.slideOverTransitionEnterActive\"\n :enter-from-class=\"$style.slideOverTransitionEnterFrom\"\n :leave-active-class=\"$style.slideOverTransitionLeaveActive\"\n :leave-to-class=\"$style.slideOverTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.tooltipTransitionEnterActive\"\n :enter-from-class=\"$style.tooltipTransitionEnterFrom\"\n :leave-active-class=\"$style.tooltipTransitionLeaveActive\"\n :leave-to-class=\"$style.tooltipTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.verticalWindowTransitionBackEnterActive : $style.verticalWindowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.verticalWindowTransitionBackEnterFrom : $style.verticalWindowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.verticalWindowTransitionBackLeaveActive : $style.verticalWindowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.verticalWindowTransitionBackLeaveTo : $style.verticalWindowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.windowTransitionBackEnterActive : $style.windowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.windowTransitionBackEnterFrom : $style.windowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.windowTransitionBackLeaveActive : $style.windowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.windowTransitionBackLeaveTo : $style.windowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n !status && $style.avatar,\n !!status && $style.statusAvatar,\n type !== 'none' && $style.avatarClickable\n )\"\n :style=\"{\n '--color': color,\n fontSize: size && `${size}px`\n }\"\n :component-type=\"type\"\n role=\"img\"\n :aria-label=\"alt\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <img\n v-if=\"src\"\n :class=\"$style.avatarImage\"\n :alt=\"alt\"\n :src=\"src\"/>\n\n <div\n v-else\n :class=\"fallback === 'colorized' ? $style.avatarFallbackColorized : $style.avatarFallbackNeutral\">\n <span v-if=\"fallbackInitials\">\n {{ fallbackInitials }}\n </span>\n\n <FluxIcon\n v-else-if=\"fallbackIcon\"\n :name=\"fallbackIcon\"/>\n </div>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.avatarLoading\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n\n <div\n v-if=\"status\"\n :class=\"STATUS_CLASS_MAP[status]\"/>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { amber600, blue600, cyan600, emerald600, fuchsia600, green600, indigo600, lime600, orange600, pink600, purple600, red600, rose600, sky600, teal600, violet600, yellow600 } from '@flux-ui/internals';\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Avatar.module.scss';\n\n const STATUS_CLASS_MAP = {\n gray: $style.avatarStatusGray,\n primary: $style.avatarStatusPrimary,\n danger: $style.avatarStatusDanger,\n info: $style.avatarStatusInfo,\n success: $style.avatarStatusSuccess,\n warning: $style.avatarStatusWarning\n } as const;\n\n defineEmits<FluxButtonEmits>();\n\n const {\n fallback = 'colorized',\n fallbackColors = [lime600, green600, emerald600, teal600, cyan600, sky600, blue600, indigo600, violet600, purple600, fuchsia600, pink600, rose600, red600, orange600, amber600, yellow600],\n fallbackIcon = 'user',\n fallbackInitials,\n type = 'none'\n } = defineProps<{\n readonly alt?: string;\n readonly fallback?: 'colorized' | 'neutral';\n readonly fallbackColors?: string[];\n readonly fallbackIcon?: FluxIconName;\n readonly fallbackInitials?: string;\n readonly isLoading?: boolean;\n readonly size?: number;\n readonly src?: string;\n readonly status?: FluxColor;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n const color = computed(() => fallbackColors[unref(colorSeed) % fallbackColors.length]);\n const colorSeed = computed(() => {\n let seed = 6;\n\n if (fallbackInitials) {\n for (let i = 0; i < fallbackInitials.length; ++i) {\n seed ^= fallbackInitials.charCodeAt(i);\n }\n } else if (fallbackIcon) {\n for (let i = 0; i < fallbackIcon.length; ++i) {\n seed ^= fallbackIcon.charCodeAt(i);\n }\n }\n\n return seed;\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.badgeGray,\n color === 'primary' && $style.badgePrimary,\n color === 'danger' && $style.badgeDanger,\n color === 'info' && $style.badgeInfo,\n color === 'success' && $style.badgeSuccess,\n color === 'warning' && $style.badgeWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.badgeDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"\n :name=\"icon\"/>\n\n <span :class=\"$style.badgeLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"type === 'none' && isDeletable\"\n :class=\"$style.badgeClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n type = 'none'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"6\"\n is-wrapping>\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { flattenVNodeTree, orange600, pink600, purple600 } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { cloneVNode, defineComponent, Fragment, h, PropType } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n export default defineComponent({\n inheritAttrs: false,\n props: {\n colors: {default: [purple600, 'transparent', orange600, 'transparent', pink600, 'transparent', purple600], type: Array as PropType<string[]>},\n duration: {default: 9, type: Number},\n offset: {default: 1, type: Number},\n radius: {default: undefined, type: [String, Number] as PropType<string | number>},\n width: {default: 2, type: Number}\n },\n setup(props, {attrs, slots}) {\n return () => h(\n Fragment,\n flattenVNodeTree(slots.default?.() ?? []).map(vnode => cloneVNode(vnode, {\n ...attrs,\n class: clsx(\n attrs.class as string,\n $style.borderShine\n ),\n style: {\n '--shine-colors': props.colors.join(', '),\n '--shine-duration': props.duration,\n '--shine-offset': props.offset,\n '--shine-radius': props.radius,\n '--shine-width': props.width\n }\n }))\n );\n }\n });\n</script>\n","<template>\n <div\n :class=\"clsx(\n !color && $style.iconBoxedDefault,\n color === 'gray' && $style.iconBoxedGray,\n color === 'primary' && $style.iconBoxedPrimary,\n color === 'danger' && $style.iconBoxedDanger,\n color === 'info' && $style.iconBoxedInfo,\n color === 'success' && $style.iconBoxedSuccess,\n color === 'warning' && $style.iconBoxedWarning,\n )\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <FluxIcon :name=\"name\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Icon.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n defineProps<{\n readonly color?: FluxColor;\n readonly name: FluxIconName;\n readonly size?: number;\n }>();\n</script>\n","<template>\n <component :is=\"tagName\">\n <slot/>\n </component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n defineProps<{\n readonly tagName: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"popup\"\n :style=\"{\n '--x': `${state.x}px`,\n '--y': `${state.y}px`,\n '--width': state.width ? `${state.width}px` : undefined\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n import { useMutationObserver } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { ComponentPublicInstance, onMounted, onUnmounted, reactive, ref, unref, useTemplateRef, watchEffect } from 'vue';\n\n const {\n anchor,\n direction = 'vertical',\n margin = 12,\n position,\n useAnchorWidth\n } = defineProps<{\n readonly anchor?: ComponentPublicInstance | HTMLElement | null;\n readonly direction?: FluxDirection;\n readonly margin?: number;\n readonly position?:\n | 'top' | 'top-left' | 'top-right'\n | 'left' | 'left-top' | 'left-bottom'\n | 'right' | 'right-top' | 'right-bottom'\n | 'bottom' | 'bottom-left' | 'bottom-right';\n readonly useAnchorWidth?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const anchorRef = ref<HTMLElement>();\n const popupRef = useTemplateRef('popup');\n\n const state = reactive({\n x: 0,\n y: 0,\n width: null as number | null\n });\n\n onMounted(() => {\n window.addEventListener('resize', onResize, {passive: true});\n window.addEventListener('scroll', onScroll, {capture: true, passive: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', onResize);\n window.removeEventListener('scroll', onScroll);\n });\n\n useMutationObserver(popupRef, () => {\n reposition();\n }, {childList: true, subtree: true});\n\n function reposition(): void {\n const anchor = unref(anchorRef);\n const popup = unref(popupRef);\n\n if (!anchor || !popup) {\n return;\n }\n\n const {x, y, height, width} = anchor.getBoundingClientRect();\n const {height: popupHeight, width: popupWidth} = popup.getBoundingClientRect();\n\n let px: number,\n py: number;\n\n switch (position) {\n case 'top':\n px = x + width / 2 - popupWidth / 2;\n py = y - popupHeight - margin;\n break;\n\n case 'top-left':\n px = x;\n py = y - popupHeight - margin;\n break;\n\n case 'top-right':\n px = x - popupWidth + width;\n py = y - popupHeight - margin;\n break;\n\n case 'left':\n px = x - popupWidth - margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'left-top':\n px = x - popupWidth - margin;\n py = y;\n break;\n\n case 'left-bottom':\n px = x - popupWidth - margin;\n py = y + height - popupHeight;\n break;\n\n case 'right':\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'right-top':\n px = x + width + margin;\n py = y;\n break;\n\n case 'right-bottom':\n px = x + width + margin;\n py = y + height - popupHeight;\n break;\n\n case 'bottom':\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n break;\n\n case 'bottom-left':\n px = x;\n py = y + height + margin;\n break;\n\n case 'bottom-right':\n px = x - popupWidth + width;\n py = y + height + margin;\n break;\n\n default:\n if (direction === 'horizontal') {\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n\n if (px + popupWidth > innerWidth) {\n px = x - popupWidth - margin;\n }\n } else {\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n\n if (py + popupHeight > innerHeight) {\n py = y - popupHeight - margin;\n }\n }\n break;\n }\n\n state.x = px;\n state.y = py;\n }\n\n function resize(): void {\n const anchor = unref(anchorRef);\n\n if (!anchor) {\n return;\n }\n\n const {width} = anchor.getBoundingClientRect();\n state.width = useAnchorWidth ? width : null;\n }\n\n function onResize(): void {\n resize();\n reposition();\n }\n\n function onScroll(): void {\n reposition();\n }\n\n watchEffect(() => {\n if (!anchor || (!isHtmlElement(anchor) && !anchor.$el)) {\n return;\n }\n\n anchorRef.value = isHtmlElement(anchor) ? anchor : anchor.$el;\n\n requestAnimationFrame(resize);\n requestAnimationFrame(reposition);\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isLoading, label, href, rel, target, to}\"\n :css-class=\"$style.menuItem\"\n :css-class-icon=\"$style.menuItemIcon\"\n :css-class-label=\"$style.menuItemLabel\"\n is-filled\n :role=\"isSelectable ? 'menuitemradio' : 'menuitem'\"\n :class=\"{\n [$style.menuItemActive]: isActive,\n [$style.menuItemDestructive]: isDestructive,\n [$style.menuItemHighlighted]: isHighlighted,\n [$style.menuItemIndented]: isIndented,\n [$style.menuItemSelected]: isSelectable && isSelected\n }\"\n :aria-checked=\"isSelectable ? isSelected : undefined\"\n @click=\"$emit('click', $event)\">\n <template\n v-if=\"isSelectable && (!iconLeading || isSelected)\"\n #iconLeading>\n <FluxIcon\n :class=\"$style.menuItemSelectableIcon\"\n :name=\"isSelected ? 'circle-check' : undefined\"/>\n </template>\n\n <template\n v-else-if=\"imageSrc\"\n #iconLeading>\n <img\n :class=\"$style.menuItemImage\"\n :src=\"imageSrc\"\n alt=\"\"/>\n </template>\n\n <template\n v-if=\"command || commandIcon || commandLoading\"\n #after>\n <FluxSpinner\n v-if=\"commandLoading\"\n :class=\"$style.menuItemCommandIcon\"\n :size=\"16\"/>\n\n <template v-else>\n <kbd\n v-if=\"command\"\n :class=\"$style.menuItemCommand\">\n {{ command }}\n </kbd>\n\n <FluxIcon\n v-if=\"commandIcon\"\n :class=\"$style.menuItemCommandIcon\"\n :name=\"commandIcon\"/>\n </template>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxIconName } from '@flux-ui/types';\n import FluxButton from './FluxButton.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n const {\n type = 'button'\n } = defineProps<Omit<FluxButtonProps, 'isFilled' | 'isSubmit' | 'size'> & {\n readonly command?: string;\n readonly commandIcon?: FluxIconName;\n readonly commandLoading?: boolean;\n readonly imageSrc?: string;\n readonly isActive?: boolean;\n readonly isDestructive?: boolean;\n readonly isHighlighted?: boolean;\n readonly isIndented?: boolean;\n readonly isSelectable?: boolean;\n readonly isSelected?: boolean;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n disabled ? $style.formInputDisabled : $style.formInputEnabled,\n isSecondary && $style.isSecondary\n )\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n ref=\"input\"\n :class=\"clsx(\n $style.formInputNative,\n (!!iconTrailing || type === 'password') && $style.formInputNativeHasIconTrailing,\n !!iconLeading && $style.formInputNativeHasIconLeading\n )\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled\"\n :max=\"max\"\n :maxlength=\"maxLength\"\n :min=\"min\"\n :placeholder=\"placeholder\"\n :readonly=\"isReadonly\"\n :step=\"step\"\n :type=\"nativeType\"\n :value=\"localValue\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\">\n\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.formInputIconLeading\"\n :name=\"iconLeading\"\n :size=\"18\"/>\n\n <FluxIcon\n v-if=\"type === 'password'\"\n :class=\"$style.formInputIconPasswordToggle\"\n :name=\"nativeType === 'password' ? 'eye' : 'eye-slash'\"\n :size=\"18\"\n @click=\"passwordTypeToggle()\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"$style.formInputIconTrailing\"\n :name=\"iconTrailing\"\n :size=\"18\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import type { FluxAutoCompleteType, FluxIconName, FluxInputMask, FluxInputType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { inputMask } from '$flux/data';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n showPicker: [];\n }>();\n\n const modelValue = defineModel<object | string | number | null>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n pattern,\n type = 'text'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly isSecondary?: boolean;\n readonly max?: string | number;\n readonly maxLength?: number;\n readonly min?: string | number;\n readonly pattern?: FluxInputMask;\n readonly placeholder?: string;\n readonly step?: number;\n readonly type?: FluxInputType;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef<HTMLInputElement>('input');\n const {id} = useFormFieldInjection();\n\n const localValue = ref<string | null>(null);\n const nativeType = ref(type);\n\n function blur(): void {\n unrefTemplateElement(inputRef)?.blur();\n }\n\n function focus(): void {\n unrefTemplateElement(inputRef)?.focus();\n }\n\n function passwordTypeToggle(): void {\n if (type !== 'password') {\n return;\n }\n\n nativeType.value = unref(nativeType) === 'password' ? 'text' : 'password';\n }\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n function onInput(evt: Event): void {\n const value = (evt.target as HTMLInputElement).value;\n\n switch (type) {\n case 'date':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n const dateTime = DateTime.fromISO(value);\n\n if (!dateTime.isValid) {\n return;\n }\n\n modelValue.value = dateTime;\n break;\n\n case 'number':\n modelValue.value = Number(value);\n break;\n\n default:\n modelValue.value = value;\n break;\n }\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (!['date', 'datetime-local', 'month', 'week'].includes(type)) {\n return;\n }\n\n if (evt.key === ' ') {\n emit('showPicker');\n evt.preventDefault();\n }\n }\n\n watch([modelValue, () => type], ([modelValue, type]) => {\n if (!modelValue && modelValue !== 0) {\n localValue.value = null;\n return;\n }\n\n if (DateTime.isDateTime(modelValue)) {\n const iso = modelValue.toISO()!;\n\n switch (type) {\n case 'date':\n localValue.value = iso.substring(0, 10);\n break;\n\n case 'datetime-local':\n localValue.value = iso.substring(0, 16);\n break;\n\n case 'time':\n localValue.value = iso.substring(11, 16);\n break;\n\n default:\n localValue.value = iso;\n break;\n }\n\n return;\n }\n\n localValue.value = modelValue.toString();\n }, {immediate: true});\n\n watch([inputRef, () => pattern, localValue], ([input, pattern, value], __, onCleanup) => {\n if (!input || !pattern) {\n return;\n }\n\n const mask = inputMask[pattern](input);\n\n if (value) {\n mask.value = value;\n modelValue.value = mask.value;\n }\n\n onCleanup(() => mask.destroy());\n }, {immediate: true});\n\n watch(() => type, type => nativeType.value = type);\n\n defineExpose({\n blur,\n focus\n });\n</script>\n","<template>\n <div\n :class=\"isHorizontal ? $style.menuGroupHorizontal : $style.menuGroupVertical\"\n role=\"group\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isHorizontal?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.menuSubHeader\"\n role=\"presentation\">\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconLeading\"/>\n\n <span :class=\"$style.menuSubHeaderLabel\">\n {{ label }}\n </span>\n\n <FluxIcon\n v-if=\"iconTrailing\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconTrailing\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly label: string;\n }>();\n</script>\n","<template>\n <FluxMenuGroup>\n <div\n v-if=\"isSearchable\"\n :class=\"$style.filterSearch\">\n <FluxFormInput\n v-model=\"modelSearch\"\n auto-complete=\"off\"\n is-secondary\n icon-leading=\"magnifying-glass\"\n :placeholder=\"searchPlaceholder\"\n type=\"search\"/>\n </div>\n\n <FluxMenuItem\n v-if=\"isLoading && options.length === 0\"\n disabled\n is-loading/>\n\n <template\n v-else\n v-for=\"option of options\">\n <FluxMenuSubHeader\n v-if=\"isFluxFilterOptionHeader(option)\"\n :label=\"option.title\"/>\n\n <FluxMenuItem\n v-else-if=\"isFluxFilterOptionItem(option)\"\n is-selectable\n :is-selected=\"selected.includes(option.value)\"\n :label=\"option.label\"\n @click=\"select(option)\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionItem, FluxFilterOptionRow, FluxFilterValueSingle } from '@flux-ui/types';\n import { isFluxFilterOptionHeader, isFluxFilterOptionItem } from '$flux/data';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n select: [FluxFilterValueSingle];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineProps<{\n readonly isLoading?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFilterOptionRow[];\n readonly selected: FluxFilterValueSingle[];\n readonly searchPlaceholder?: string;\n }>();\n\n function select(option: FluxFilterOptionItem): void {\n emit('select', option.value);\n }\n</script>\n","<template>\n <nav\n ref=\"element\"\n :class=\"isLarge ? $style.menuLarge : $style.menuNormal\"\n role=\"menu\"\n aria-orientation=\"vertical\">\n <slot/>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isLarge?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'vertical'\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.tagGray,\n color === 'primary' && $style.tagPrimary,\n color === 'danger' && $style.tagDanger,\n color === 'info' && $style.tagInfo,\n color === 'success' && $style.tagSuccess,\n color === 'warning' && $style.tagWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.tagIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.tagDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.tagIcon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span :class=\"$style.tagLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"!isClickable && isDeletable\"\n :class=\"$style.tagClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n isClickable\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isClickable?: boolean;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <Anchor\n ref=\"anchor\"\n :=\"$attrs\"\n :class=\"clsx(\n $style.formSelect,\n disabled && $style.isDisabled,\n isPopupOpen && $style.isFocused,\n isSearchable && $style.isSearchable\n )\"\n :id=\"id\"\n :aria-disabled=\"disabled ? true : undefined\"\n tabindex=\"0\"\n tag-name=\"div\"\n @click=\"toggle()\"\n @keydown=\"onKeyDown\"\n @keyup=\"onKeyUp\">\n <template v-if=\"!isMultiple && selected[0]\">\n <FluxMenuItem\n :class=\"$style.formSelectSelected\"\n :command=\"selected[0].command\"\n :command-icon=\"selected[0].commandIcon\"\n :icon-leading=\"selected[0].icon\"\n :label=\"selected[0].label\"\n tabindex=\"-1\"/>\n </template>\n\n <template v-else-if=\"isMultiple && selected[0]\">\n <FluxTag\n v-for=\"option of selected\"\n :key=\"option.value ?? 'null option'\"\n :label=\"option.label\"\n is-deletable\n @delete=\"deselect(option.value)\"/>\n </template>\n\n <template v-else-if=\"placeholder\">\n <span :class=\"$style.formSelectPlaceholder\">\n {{ placeholder }}\n </span>\n </template>\n\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.formSelectIcon\"\n :size=\"16\"/>\n\n <FluxIcon\n v-else\n :class=\"$style.formSelectIcon\"\n name=\"angle-down\"/>\n </Anchor>\n\n <Teleport to=\"body\">\n <FluxFadeTransition>\n <AnchorPopup\n v-if=\"isPopupOpen && !disabled\"\n ref=\"anchorPopup\"\n :class=\"clsx(\n $style.formSelectPopup,\n isKeyboardAction && $style.isKeyboardAction,\n isSearchable && $style.isSearchable\n )\"\n :anchor=\"anchorRef\"\n direction=\"vertical\"\n use-anchor-width>\n <FluxFormInput\n v-if=\"isSearchable\"\n v-model=\"modelSearch\"\n ref=\"searchInputElement\"\n auto-complete=\"off\"\n :class=\"$style.formSelectInput\"\n type=\"search\"\n icon-trailing=\"magnifying-glass\"\n :placeholder=\"translate('flux.search')\"\n @keydown=\"onKeyDown\"/>\n\n <FluxMenu v-if=\"!isLoading && options.length === 0\">\n <FluxMenuSubHeader :label=\"translate('flux.noItems')\"/>\n </FluxMenu>\n\n <FluxMenu v-else>\n <template\n v-for=\"([item, subItems], index) of options\"\n :key=\"`group-${index}`\">\n <FluxMenuGroup>\n <FluxMenuSubHeader\n v-if=\"isFluxFormSelectGroup(item)\"\n :icon-leading=\"item.icon\"\n :label=\"item.label\"/>\n\n <template v-for=\"(subItem, index) of subItems\">\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(subItem)\"\n ref=\"optionElements\"\n :key=\"index\"\n :command=\"subItem.command\"\n :command-icon=\"subItem.commandIcon\"\n :icon-leading=\"subItem.icon\"\n :is-active=\"!!selected.find(so => so.value === subItem.value)\"\n :is-highlighted=\"highlightedId === subItem.value\"\n :label=\"subItem.label\"\n type=\"button\"\n @click=\"select(subItem.value)\"/>\n </template>\n </FluxMenuGroup>\n\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(item)\"\n ref=\"optionElements\"\n :key=\"`item-${index}`\"\n :command=\"item.command\"\n :command-icon=\"item.commandIcon\"\n :icon-leading=\"item.icon\"\n :is-active=\"!!selected.find(so => so.value === item.value)\"\n :is-highlighted=\"highlightedId === item.value\"\n :label=\"item.label\"\n type=\"button\"\n @click=\"select(item.value)\"/>\n </template>\n </FluxMenu>\n </AnchorPopup>\n </FluxFadeTransition>\n </Teleport>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useClickOutside } from '@flux-ui/internals';\n import type { FluxFormSelectOption, FluxFormSelectOptions } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { ComponentPublicInstance, computed, nextTick, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxIcon from '$flux/component/FluxIcon.vue';\n import FluxMenu from '$flux/component/FluxMenu.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import FluxSpinner from '$flux/component/FluxSpinner.vue';\n import FluxTag from '$flux/component/FluxTag.vue';\n import Anchor from './Anchor.vue';\n import AnchorPopup from './AnchorPopup.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const INITIAL_HIGHLIGHTED_INDEX = -1;\n\n const emit = defineEmits<{\n keyDown: [KeyboardEvent];\n deselect: [string | number | null];\n select: [string | number | null];\n search: [string];\n close: [];\n open: [];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled: componentDisabled,\n isMultiple,\n options,\n selected\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFormSelectOptions[];\n readonly placeholder?: string;\n readonly selected: FluxFormSelectOption[];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n const translate = useTranslate();\n\n const anchorRef = useTemplateRef<ComponentPublicInstance>('anchor');\n const anchorPopupRef = useTemplateRef('anchorPopup');\n const optionElementRefs = useTemplateRef<typeof FluxMenuItem[]>('optionElements');\n const searchInputElementRef = useTemplateRef<ComponentPublicInstance<typeof FluxFormInput>>('searchInputElement');\n\n const highlightedIndex = ref(INITIAL_HIGHLIGHTED_INDEX);\n const isKeyboardAction = ref(false);\n const isPopupOpen = ref(false);\n\n const focusElement = computed(() => unrefTemplateElement(searchInputElementRef) ?? unrefTemplateElement(anchorRef));\n const highlightedId = computed(() => unref(rawOptions)[unref(highlightedIndex)]?.value);\n const rawOptions = computed(() => options.map(group => group[1]).flat());\n\n useClickOutside([anchorRef, anchorPopupRef], isPopupOpen, () => isPopupOpen.value = false);\n useClickOutside(anchorRef, isPopupOpen, () => unref(focusElement)?.focus());\n\n function deselect(id: string | number | null): void {\n emit('deselect', id);\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function select(id: string | number | null): void {\n emit('select', id);\n\n !isMultiple && (isPopupOpen.value = false);\n\n highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX;\n modelSearch.value = '';\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function toggle(): void {\n if (unref(disabled)) {\n return;\n }\n\n isPopupOpen.value = !unref(isPopupOpen);\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n emit('keyDown', evt);\n\n if (!unref(isPopupOpen)) {\n if (evt.key === 'Enter') {\n isPopupOpen.value = true;\n }\n\n return;\n }\n\n isKeyboardAction.value = true;\n\n if (unref(highlightedIndex) === INITIAL_HIGHLIGHTED_INDEX && ['ArrowDown', 'ArrowUp'].includes(evt.key)) {\n const options = unref(optionElementRefs);\n const selectedIndex = options?.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n\n highlightedIndex.value = selectedIndex ?? INITIAL_HIGHLIGHTED_INDEX;\n }\n\n switch (evt.key) {\n case 'ArrowUp':\n highlightedIndex.value = Math.max(0, unref(highlightedIndex) - 1);\n break;\n\n case 'ArrowDown':\n highlightedIndex.value = Math.min(unref(rawOptions).length - 1, unref(highlightedIndex) + 1);\n break;\n\n case 'Backspace':\n const search = unref(modelSearch);\n\n if (search.length > 0 || selected.length === 0) {\n return;\n }\n\n deselect(selected[selected.length - 1].value);\n break;\n\n case 'Enter':\n const id = unref(highlightedId);\n id && select(id);\n break;\n\n case 'Escape':\n isPopupOpen.value = false;\n break;\n\n case 'Tab':\n isPopupOpen.value = false;\n return;\n\n default:\n if (evt.key.match(/[a-z]/)) {\n highlightedIndex.value = unref(rawOptions).findIndex(o => o.label.toLowerCase().startsWith(evt.key));\n } else {\n highlightedIndex.value = -1;\n }\n return;\n }\n\n evt.preventDefault();\n }\n\n function onKeyUp(): void {\n isKeyboardAction.value = false;\n }\n\n watch(highlightedIndex, highlightedIndex => {\n const options = unref(optionElementRefs)!;\n options[highlightedIndex]?.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n watch(isPopupOpen, isPopupOpen => {\n if (!isPopupOpen) {\n emit('close');\n return;\n }\n\n nextTick(() => {\n const searchInput = unref(searchInputElementRef);\n searchInput?.focus();\n });\n\n nextTick(() => {\n const options = unref(optionElementRefs);\n\n if (!options || isMultiple) {\n return;\n }\n\n const selectedIndex = options.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n const option = options[selectedIndex];\n\n if (!option) {\n return;\n }\n\n option.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n emit('open');\n });\n\n watch(modelSearch, searchQuery => emit('search', searchQuery));\n\n watch([() => options, isPopupOpen], () => highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX);\n</script>\n","<template>\n <div :class=\"$style.ticks\">\n <template\n v-for=\"tick of ticks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickLarge\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\">\n <span>{{ tick }}</span>\n </div>\n </template>\n\n <template\n v-for=\"tick of smallTicks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickSmall\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\"/>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { generateStepTicks } from '@basmilius/utils';\n import { computed } from 'vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const {\n lower,\n upper\n } = defineProps<{\n readonly lower: number;\n readonly upper: number;\n }>();\n\n const smallTicks = computed(() => generateStepTicks(lower, upper, 50, true).filter(s => !ticks.value.includes(s)));\n const ticks = computed(() => generateStepTicks(lower, upper, 5));\n</script>\n","<template>\n <div\n ref=\"root\"\n :class=\"clsx(\n $style.slider,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n role=\"slider\"\n :aria-disabled=\"disabled ? true : undefined\"\n @pointerdown=\"onPointerDown\">\n <FluxTicks\n v-if=\"isTicksVisible\"\n :lower=\"min\"\n :upper=\"max\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { onMounted, onUnmounted, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxTicks from '$flux/component/FluxTicks.vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n dragging: [boolean];\n update: [number];\n }>();\n\n const {\n disabled: componentDisabled,\n isDragging\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly isTicksVisible?: boolean;\n readonly max: number;\n readonly min: number;\n readonly step: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const rootRef = useTemplateRef('root');\n\n onMounted(() => {\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp, {passive: true});\n });\n\n onUnmounted(() => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n });\n\n function onPointerDown(evt: PointerEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n emit('dragging', true);\n requestAnimationFrame(() => onPointerMove(evt));\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const root = unrefTemplateElement(rootRef);\n\n if (!isDragging || !root) {\n return;\n }\n\n let {left, width} = root.getBoundingClientRect();\n left += 6; // margin.\n width -= 12; // margin times two.\n\n emit('update', Math.max(0, Math.min(1, (evt.pageX - left) / width)));\n evt.preventDefault();\n }\n\n function onPointerUp(): void {\n emit('dragging', false);\n }\n\n watch(() => isDragging, () => emit('dragging', isDragging));\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.sliderThumb,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n :style=\"{\n left: `${position * 100}%`\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n type=\"button\"\n @keydown=\"onKeyDown\"\n @pointerdown=\"$emit('grab', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n decrement: [];\n grab: [PointerEvent];\n increment: [];\n }>();\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly position: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n switch (evt.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n emit('decrement');\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n emit('increment');\n break;\n\n default:\n return;\n }\n\n evt.preventDefault();\n }\n</script>\n","<template>\n <div :class=\"$style.sliderTrack\">\n <div\n :class=\"$style.sliderTrackValue\"\n :style=\"{\n left: `${percentageLower * 100}%`,\n width: `${(percentageUpper - percentageLower) * 100}%`\n }\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n defineProps<{\n readonly percentageLower: number;\n readonly percentageUpper: number;\n }>();\n</script>\n","import { flattenVNodeTree } from '@flux-ui/internals';\nimport { Component, getCurrentInstance, RenderFunction, Slots } from 'vue';\nimport { Comment, h, onMounted, onUnmounted, SetupContext, Teleport, VNode } from 'vue';\nimport { registerDialog, useFluxStore } from '$flux/data';\n\ntype Emit = SetupContext<['close']>['emit'];\ntype Props = {\n readonly isCloseable?: boolean;\n readonly viewKey?: string;\n};\n\nexport default function (attrs: object, props: Props, emit: Emit, slots: Slots, className: string, transition: Component): RenderFunction {\n const instance = getCurrentInstance();\n let unregister: Function | null = null;\n let zIndex = 0;\n\n onMounted(() => {\n window.addEventListener('keydown', onKeyDown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeyDown);\n unregister?.();\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (evt.key !== 'Escape' || !unregister || !props.isCloseable) {\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n emit('close');\n }\n\n return () => {\n const {dialogCount} = useFluxStore();\n\n const children = flattenVNodeTree(slots.default?.() ?? []);\n const isVisible = children.length > 0 && children.some(child => child.type !== Comment);\n const content: VNode[] = [];\n\n if (isVisible) {\n if (!unregister) {\n unregister = registerDialog();\n zIndex = dialogCount + 1000;\n }\n\n content.push(h('div', {\n key: props.viewKey,\n class: className,\n style: {zIndex}\n }, children));\n } else {\n unregister?.();\n unregister = null;\n }\n\n return h(Teleport, {disabled: content.length === 0, to: instance?.appContext.app._container}, [\n h(transition, attrs, {\n default: () => content\n })\n ]);\n };\n}\n","import type { DateTime } from 'luxon';\nimport { useTranslate } from '$flux/composable/private';\n\nexport default function (start: DateTime, end: DateTime, preventCustom: boolean = false): string {\n const translate = useTranslate();\n\n if (start.day === end.day && start.month === end.month && start.year === end.year) {\n return start.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n }\n\n if (start.month === end.month && start.year === end.year) {\n const startStr = start.toLocaleString({\n day: 'numeric'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n if (start.year === end.year) {\n const startStr = start.toLocaleString({\n day: 'numeric',\n month: 'short'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n if (preventCustom) {\n const startStr = start.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n return translate('flux.customPeriod');\n}\n","<template>\n <div\n :class=\"direction === 'horizontal' ? $style.separatorHorizontal : $style.separatorVertical\"\n role=\"separator\"\n :aria-orientation=\"direction\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import $style from '$flux/css/component/Divider.module.scss';\n\n const {\n direction = 'horizontal'\n } = defineProps<{\n readonly direction?: FluxDirection;\n }>();\n</script>\n","<template>\n <FluxMenuItem\n :command=\"valueLabel\"\n command-icon=\"angle-right\"\n :command-loading=\"isLoading\"\n :icon-leading=\"item.icon\"\n :label=\"item.label\"\n type=\"button\"\n @click=\"onClick\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterItem, FluxFilterValue } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useLoaded } from '$flux/composable/private';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n item,\n value\n } = defineProps<{\n readonly item: FluxFilterItem;\n readonly value: FluxFilterValue;\n }>();\n\n const {isLoading, loaded} = useLoaded();\n const getValueLabel = computed(() => loaded(item.getValueLabel));\n\n const valueLabel = ref<string>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n\n watch(() => item, async () => {\n valueLabel.value = await unref(getValueLabel)(value) ?? undefined;\n }, {deep: true, immediate: true});\n</script>\n","import { formatNumber } from '@basmilius/utils';\nimport { flattenVNodeTree, getComponentName, getComponentProps } from '@flux-ui/internals';\nimport type { FluxFilterBase, FluxFilterDateEntry, FluxFilterDateRangeEntry, FluxFilterItem, FluxFilterOptionEntry, FluxFilterOptionItem, FluxFilterOptionRow, FluxFilterOptionsEntry, FluxFilterRangeEntry, FluxFilterValue, FluxFilterValueSingle } from '@flux-ui/types';\nimport { camelCase } from 'lodash-es';\nimport { DateTime } from 'luxon';\nimport { computed, defineComponent, h, isVNode, unref, VNode } from 'vue';\nimport { useTranslate } from '$flux/composable/private';\nimport { FluxTranslate, isFluxFilterOptionItem } from '$flux/data';\nimport { createLabelForDateRange } from '$flux/util';\nimport FluxMenu from '$flux/component/FluxMenu.vue';\nimport FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\nimport FluxSeparator from '$flux/component/FluxSeparator.vue';\nimport FilterItem from './FilterItem.vue';\n\nexport const FilterMenuRenderer = defineComponent({\n props: {\n navigate: Function,\n state: Object\n },\n\n setup(props, {slots}) {\n const content = computed<(FluxFilterItem | VNode)[][]>(() => {\n const children = flattenVNodeTree(slots.default?.() ?? []);\n const content: (FluxFilterItem | VNode)[][] = [[]];\n\n for (const child of children) {\n const name = getComponentName(child);\n\n if (name === 'FluxSeparator') {\n content.push([]);\n continue;\n }\n\n if (name.startsWith('FluxFilter')) {\n const props = getComponentProps<Omit<FluxFilterItem, 'type'>>(child);\n const type = camelCase(name.substring(10)) as FluxFilterItem['type'];\n\n content[content.length - 1].push(parsers[type](props));\n continue;\n }\n\n content[content.length - 1].push(child);\n }\n\n return content;\n });\n\n return () => h(FluxMenu, {}, {\n default: () => unref(content).map((group, index) => renderFilterGroup(group, index, props.navigate!, props.state!))\n });\n }\n});\n\nfunction parseDate(base: FluxFilterBase): FluxFilterDateEntry {\n return {\n ...base,\n type: 'date',\n\n async getValueLabel(value): Promise<string | null> {\n if (!DateTime.isDateTime(value)) {\n return null;\n }\n\n return value.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n }\n };\n}\n\nfunction parseDateRange(base: FluxFilterBase): FluxFilterDateRangeEntry {\n return {\n ...base,\n type: 'dateRange',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value) || value.length !== 2) {\n return null;\n }\n\n const [start, end] = value;\n\n if (!DateTime.isDateTime(start) || !DateTime.isDateTime(end)) {\n return null;\n }\n\n return createLabelForDateRange(start, end);\n }\n };\n}\n\nfunction parseOption(base: FluxFilterBase): FluxFilterOptionEntry {\n const options = (base as any).options as FluxFilterOptionItem[];\n\n return {\n ...base,\n type: 'option',\n\n async getValueLabel(value): Promise<string | null> {\n return options.find(o => o.value === value)?.label ?? null;\n }\n };\n}\n\nfunction parseOptionAsync(base: FluxFilterBase): FluxFilterOptionEntry {\n const fetchOptions = (base as any).fetchOptions as (ids: FluxFilterValue[]) => Promise<FluxFilterOptionRow[]>;\n\n return {\n ...base,\n type: 'option',\n\n async getValueLabel(value): Promise<string | null> {\n const options = (await fetchOptions([value])).filter(isFluxFilterOptionItem);\n\n return options.find(o => o.value === value)?.label ?? null;\n }\n };\n}\n\nfunction parseOptions(base: FluxFilterBase): FluxFilterOptionsEntry {\n const options = (base as any).options as FluxFilterOptionItem[];\n const translate = useTranslate();\n\n return {\n ...base,\n type: 'options',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value)) {\n return null;\n }\n\n return generateMultiOptionsLabel(translate, options, value);\n }\n };\n}\n\nfunction parseOptionsAsync(base: FluxFilterBase): FluxFilterOptionsEntry {\n const fetchOptions = (base as any).fetchOptions as (ids: FluxFilterValue[]) => Promise<FluxFilterOptionRow[]>;\n const translate = useTranslate();\n\n return {\n ...base,\n type: 'options',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value)) {\n return null;\n }\n\n const options = (await fetchOptions(value)).filter(isFluxFilterOptionItem);\n\n return generateMultiOptionsLabel(translate, options, value);\n }\n };\n}\n\nfunction parseRange(base: FluxFilterBase): FluxFilterRangeEntry {\n return {\n ...base,\n type: 'range',\n\n async getValueLabel(value): Promise<string | null> {\n if (!value || !Array.isArray(value) || value.length !== 2) {\n return null;\n }\n\n const [lower, upper] = value as number[];\n\n if ('formatter' in base) {\n const formatter = base.formatter as (value: number) => string;\n\n return `${formatter(lower)} – ${formatter(upper)}`;\n }\n\n return `${formatNumber(lower)} – ${formatNumber(upper)}`;\n }\n };\n}\n\nfunction renderFilterGroup(group: (FluxFilterItem | VNode)[], index: number, navigate: Function, state: Record<string, FluxFilterValue>): VNode[] {\n const slot: VNode[] = [];\n\n if (index > 0) {\n slot.push(h(FluxSeparator));\n }\n\n slot.push(h(FluxMenuGroup, {}, {\n default: () => group.map(item => renderFilterItem(item, navigate, state))\n }));\n\n return slot;\n}\n\nfunction renderFilterItem(item: FluxFilterItem | VNode, navigate: Function, state: Record<string, FluxFilterValue>): VNode {\n if (isVNode(item)) {\n return item;\n }\n\n return h(FilterItem, {\n item,\n value: state[item.name] ?? null,\n onClick: () => navigate(item.name)\n });\n}\n\nfunction generateMultiOptionsLabel(translate: FluxTranslate, options: FluxFilterOptionItem[], values: FluxFilterValueSingle[]): string | null {\n const selected = options.filter(o => values.includes(o.value)).length;\n\n if (selected <= 0) {\n return null;\n }\n\n if (selected === 1) {\n return options.find(o => values.includes(o.value))!.label;\n }\n\n return translate('flux.nSelected', {\n n: selected\n });\n}\n\nconst parsers = {\n date: parseDate,\n dateRange: parseDateRange,\n option: parseOption,\n optionAsync: parseOptionAsync,\n options: parseOptions,\n optionsAsync: parseOptionsAsync,\n range: parseRange\n} as const;\n","import type { PropType, VNode } from 'vue';\nimport { defineComponent } from 'vue';\n\nexport const VNodeRenderer = defineComponent({\n props: {\n vnode: Object as PropType<VNode>\n },\n setup(props) {\n return () => props.vnode;\n }\n});\n","<template>\n <div :class=\"$style.calendar\">\n <FluxActionBar :class=\"$style.calendarActions\">\n <template #primary>\n <div\n :class=\"$style.calendarCurrent\"\n role=\"presentation\">\n <FluxFlyout :width=\"300\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.calendarCurrentMonth\"\n type=\"button\"\n @click=\"open\">\n {{ viewMonth }}\n </button>\n </template>\n\n <template #default=\"{close}\">\n <div :class=\"$styleDatePicker.datePickerMonths\">\n <template\n v-for=\"month of months\"\n :key=\"month\">\n <FluxSecondaryButton\n :label=\"month.label\"\n tabindex=\"-1\"\n @click=\"setViewMonth(month.date, close)\"/>\n </template>\n </div>\n </template>\n </FluxFlyout>\n\n <FluxFlyout :width=\"300\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.calendarCurrentYear\"\n type=\"button\"\n @click=\"open\">\n {{ viewYear }}\n </button>\n </template>\n\n <template #default=\"{close}\">\n <div :class=\"$styleDatePicker.datePickerYears\">\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n tabindex=\"-1\"\n @click=\"previousYears\"/>\n\n <template\n v-for=\"year of years\"\n :key=\"year\">\n <FluxSecondaryButton\n :label=\"year.toString()\"\n tabindex=\"-1\"\n @click=\"setViewYear(year, close)\"/>\n </template>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n tabindex=\"-1\"\n @click=\"nextYears\"/>\n </div>\n </template>\n </FluxFlyout>\n </div>\n </template>\n\n <template #actionsEnd>\n <FluxSecondaryButton\n :label=\"translate('flux.today')\"\n @click=\"setToday\"/>\n\n <FluxButtonGroup>\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n @click=\"previousMonth\"/>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n @click=\"nextMonth\"/>\n </FluxButtonGroup>\n </template>\n </FluxActionBar>\n\n <FluxWindowTransition :is-back=\"isTransitioningToPast\">\n <div\n :key=\"viewDate.month\"\n :class=\"$style.calendarCells\"\n role=\"grid\">\n <template v-for=\"day of days\">\n <div :class=\"$style.calendarDay\">\n {{ day }}\n </div>\n </template>\n\n <template v-for=\"date of dates\">\n <div\n :class=\"clsx(\n $style.calendarEntry,\n viewDate.month !== date.month && $style.isDisabled\n )\"\n role=\"gridcell\">\n <div :class=\"$style.calendarEvents\">\n <VNodeRenderer\n v-for=\"event of getEventsForDate(date)\"\n :class=\"clsx(\n event.type === 'single' && $style.isSingle,\n event.type === 'start' && $style.isStart,\n event.type === 'end' && $style.isEnd,\n event.type === 'middle' && $style.isMiddle\n )\"\n :style=\"{\n gridRow: event.index\n }\"\n :vnode=\"event.vnode\"/>\n </div>\n\n <span :class=\"$style.calendarEntryDate\">\n {{ date.toLocaleString({day: 'numeric'}) }}\n </span>\n </div>\n </template>\n </div>\n </FluxWindowTransition>\n\n <div\n v-if=\"isLoading\"\n :class=\"$style.calendarLoader\">\n <FluxSpinner/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentName, getComponentProps, useCalendar, useCalendarMonthSwitcher, useCalendarYearSwitcher } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { computed, unref, VNode, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxWindowTransition } from '$flux/transition';\n import { VNodeRenderer } from './primitive';\n import FluxActionBar from './FluxActionBar.vue';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpinner from '$flux/component/FluxSpinner.vue';\n import $style from '$flux/css/component/Calendar.module.scss';\n import $styleDatePicker from '$flux/css/component/DatePicker.module.scss';\n\n type Event = {\n readonly index: number;\n readonly type: 'start' | 'end' | 'middle' | 'single';\n readonly vnode: VNode;\n };\n\n const emit = defineEmits<{\n navigate: [DateTime, DateTime, DateTime];\n }>();\n\n const {\n initialDate = DateTime.now()\n } = defineProps<{\n readonly initialDate?: DateTime;\n readonly isLoading?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n }>();\n\n const {\n isTransitioningToPast,\n viewDate,\n viewMonth,\n viewYear,\n dates,\n days,\n nextMonth,\n previousMonth,\n setViewDate\n } = useCalendar(initialDate, {\n weekDayLength: 'long'\n });\n\n const {\n months\n } = useCalendarMonthSwitcher(viewDate, 'short');\n\n const {\n years,\n next: nextYears,\n previous: previousYears\n } = useCalendarYearSwitcher(viewDate);\n\n const translate = useTranslate();\n\n const eventNodes = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const events = computed(() => unref(eventNodes)\n .filter(en => getComponentName(en) === 'FluxCalendarEvent'));\n\n function getEventsForDate(forDate: DateTime): Event[] {\n const forDateStr = forDate.toSQLDate();\n\n return unref(events)\n .map<Event | null>((vnode, index) => {\n const {date} = getComponentProps<{ date: DateTime | [DateTime, DateTime]; }>(vnode);\n\n if (Array.isArray(date)) {\n if (forDate < date[0] || forDate > date[1]) {\n return null;\n }\n\n return {\n type: forDateStr === date[0].toSQLDate() ? 'start' : (forDateStr === date[1].toSQLDate() ? 'end' : 'middle'),\n index,\n vnode\n };\n }\n\n if (forDateStr !== date.toSQLDate()) {\n return null;\n }\n\n return {\n type: 'single',\n index,\n vnode\n };\n })\n .filter(e => e !== null);\n }\n\n function setToday(): void {\n setViewDate(DateTime.now());\n }\n\n function setViewMonth(month: DateTime, close: () => void): void {\n close();\n setViewDate(month);\n }\n\n function setViewYear(year: number, close: () => void): void {\n close();\n setViewDate(unref(viewDate).set({year}));\n }\n\n watch([viewDate, dates], ([viewDate, dates]) => {\n emit('navigate', viewDate, dates[0], dates[dates.length - 1]);\n }, {immediate: true});\n\n watch(() => initialDate, setViewDate);\n</script>\n","<template>\n <FluxTooltip>\n <template #content>\n <slot name=\"tooltip\">\n {{ label }}\n </slot>\n </template>\n\n <button\n :class=\"$style.calendarEvent\"\n type=\"button\"\n @click=\"onClick\">\n <span>{{ label }}</span>\n </button>\n </FluxTooltip>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { DateTime } from 'luxon';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/Calendar.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n defineProps<{\n readonly date: DateTime | [DateTime, DateTime];\n readonly label: string;\n }>();\n\n defineSlots<{\n tooltip(): any;\n }>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n</script>\n","<template>\n <label\n :class=\"$style.checkbox\"\n :for=\"id\">\n <input\n v-model=\"modelValue\"\n ref=\"input\"\n type=\"checkbox\"\n :class=\"$style.checkboxNative\"\n :id=\"id\"/>\n\n <button\n :class=\"$style.checkboxElement\"\n role=\"checkbox\"\n :aria-checked=\"modelValue ?? false\">\n <FluxIcon\n v-if=\"isIndeterminate\"\n name=\"minus\"\n :size=\"16\"/>\n\n <FluxIcon\n v-else\n name=\"check\"\n :size=\"16\"/>\n </button>\n\n <span\n v-if=\"label\"\n :class=\"$style.checkboxLabel\">\n {{ label }}\n </span>\n </label>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref, useTemplateRef, watchEffect } from 'vue';\n import { useFormFieldInjection } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<boolean | null>({\n default: false\n });\n\n defineProps<{\n readonly label?: string;\n }>();\n\n const inputRef = useTemplateRef('input');\n const {id} = useFormFieldInjection();\n\n const isIndeterminate = computed(() => unref(modelValue) === null);\n\n watchEffect(() => {\n const input = unref(inputRef);\n input && (input.indeterminate = unref(isIndeterminate));\n });\n</script>\n","<template>\n <Component\n :is=\"isSelectable ? 'button' : 'div'\"\n :class=\"clsx(\n $style.chip,\n isSelectable && $style.isSelectable,\n isSelected && $style.isSelected\n )\"\n @click=\"$emit('click', $event)\">\n <FluxFadeTransition v-if=\"isSelectable\">\n <FluxIcon\n :key=\"selectableIcon\"\n :name=\"selectableIcon\"\n :size=\"16\"/>\n </FluxFadeTransition>\n\n <FluxIcon\n v-else-if=\"iconLeading\"\n :name=\"iconLeading\"\n :size=\"16\"/>\n\n <span>{{ label }}</span>\n\n <FluxIcon\n v-if=\"iconTrailing\"\n :name=\"iconTrailing\"\n :size=\"16\"/>\n </component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Chip.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n iconLeading,\n isSelected\n } = defineProps<{\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly isSelectable?: boolean;\n readonly isSelected?: boolean;\n readonly label: string;\n }>();\n\n const selectableIcon = computed<FluxIconName>(() => isSelected ? 'check' : (iconLeading ?? 'plus'));\n</script>\n","<template>\n <FluxPressable\n :component-type=\"type\"\n :class=\"CLASS_MAP[variant]\"\n type=\"button\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\">\n <slot/>\n\n <slot\n v-if=\"isLoading\"\n name=\"loader\">\n <div :class=\"$style.paneLoader\">\n <FluxSpinner/>\n </div>\n </slot>\n\n <div\n v-if=\"tag\"\n :class=\"$style.paneTag\">\n {{ tag }}\n </div>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPressableType, FluxTo } from '@flux-ui/types';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const CLASS_MAP = {\n default: $style.paneDefault,\n flat: $style.paneFlat,\n well: $style.paneWell\n } as const;\n\n const {\n variant = 'default'\n } = defineProps<{\n readonly isLoading?: boolean;\n readonly tag?: string;\n readonly variant?: 'default' | 'flat' | 'well';\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n defineSlots<{\n default(): any;\n loader(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.comment,\n isTyping && $style.isTyping,\n isReceived && $style.isReceived\n )\"\n role=\"article\">\n <FluxAvatar\n :alt=\"avatarAlt\"\n :fallback=\"avatarFallback\"\n :fallback-icon=\"avatarFallbackIcon\"\n :fallback-initials=\"avatarFallbackInitials\"\n :size=\"42\"\n :src=\"avatarSrc\"/>\n\n <div :class=\"$style.commentContent\">\n <div\n v-if=\"isTyping\"\n :class=\"$style.commentTyping\"/>\n <slot v-else/>\n </div>\n\n <div :class=\"$style.commentFooter\">\n <span v-if=\"isReceived && postedBy\">{{ postedBy }}</span>\n <time\n v-if=\"iso && relative && !isTyping\"\n :datetime=\"iso\">\n {{ isJustNowVisible ? translate('flux.justNow') : relative }}\n </time>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import type { DateTime } from 'luxon';\n import { computed } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxAvatar from './FluxAvatar.vue';\n import $style from '$flux/css/component/Comment.module.scss';\n\n const {\n avatarFallback = 'colorized',\n avatarFallbackIcon = 'user',\n postedOn\n } = defineProps<{\n readonly avatarAlt?: string;\n readonly avatarFallback?: 'colorized' | 'neutral';\n readonly avatarFallbackIcon?: FluxIconName;\n readonly avatarFallbackInitials?: string;\n readonly avatarSrc?: string;\n readonly isReceived?: boolean;\n readonly isTyping?: boolean;\n readonly postedBy?: string;\n readonly postedOn?: DateTime;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n const isJustNowVisible = computed(() => postedOn && Math.abs(postedOn.diffNow().as('seconds')) < 15);\n const iso = computed(() => postedOn?.toISO() ?? null);\n const relative = computed(() => postedOn?.toRelative() ?? null);\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.coordinatePickerThumb,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n :style=\"{\n top: `${position[1] * 100}%`,\n left: `${position[0] * 100}%`\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n type=\"button\"\n @keydown=\"onKeyDown\"\n @pointerdown=\"$emit('grab', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import $style from '$flux/css/component/primitive/CoordinatePicker.module.scss';\n\n const emit = defineEmits<{\n decrement: [boolean, boolean];\n grab: [PointerEvent];\n increment: [boolean, boolean];\n }>();\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly position: [number, number];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n switch (evt.key) {\n case 'ArrowUp':\n emit('decrement', false, true);\n break;\n\n case 'ArrowDown':\n emit('increment', false, true);\n break;\n\n case 'ArrowLeft':\n emit('decrement', true, false);\n break;\n\n case 'ArrowRight':\n emit('increment', true, false);\n break;\n\n default:\n return;\n }\n\n evt.preventDefault();\n }\n</script>\n","<template>\n <div\n ref=\"root\"\n :class=\"$style.coordinatePicker\"\n role=\"slider\"\n :aria-disabled=\"disabled ? true : undefined\"\n @pointerdown=\"onPointerDown\">\n <CoordinatePickerThumb\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :position=\"thumbPosition\"\n @decrement=\"onDecrement\"\n @increment=\"onIncrement\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { roundStep } from '@basmilius/utils';\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { computed, onMounted, onUnmounted, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import CoordinatePickerThumb from './CoordinatePickerThumb.vue';\n import $style from '$flux/css/component/primitive/CoordinatePicker.module.scss';\n\n const emit = defineEmits<{\n dragging: [boolean];\n }>();\n\n const modelValue = defineModel<[number, number]>({\n default: [0, 0]\n });\n\n const {\n disabled: componentDisabled,\n max: maxProp = 100,\n min: minProp = 0,\n step: stepProp = 1\n } = defineProps<{\n readonly disabled?: boolean;\n readonly max?: number | [number, number];\n readonly min?: number | [number, number];\n readonly step?: number | [number, number];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const rootRef = useTemplateRef('root');\n\n const isDragging = ref(false);\n\n const max = computed(() => Array.isArray(maxProp) ? maxProp : [maxProp, maxProp]);\n const min = computed(() => Array.isArray(minProp) ? minProp : [minProp, minProp]);\n const step = computed(() => Array.isArray(stepProp) ? stepProp : [stepProp, stepProp]);\n\n const thumbPosition = computed<[number, number]>(() => [\n (unref(modelValue)[0] - unref(min)[0]) / (unref(max)[0] - unref(min)[0]),\n (unref(modelValue)[1] - unref(min)[1]) / (unref(max)[1] - unref(min)[1])\n ]);\n\n onMounted(() => {\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp, {passive: true});\n });\n\n onUnmounted(() => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n });\n\n function onDecrement(x: boolean, y: boolean): void {\n if (unref(disabled)) {\n return;\n }\n\n let [valueX, valueY] = unref(modelValue);\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n if (x) {\n valueX = +roundStep(Math.max(minX, Math.min(maxX, valueX - stepX)), stepX).toPrecision(4);\n }\n\n if (y) {\n valueY = +roundStep(Math.max(minY, Math.min(maxY, valueY - stepY)), stepY).toPrecision(4);\n }\n\n modelValue.value = [valueX, valueY];\n }\n\n function onIncrement(x: boolean, y: boolean): void {\n if (unref(disabled)) {\n return;\n }\n\n let [valueX, valueY] = unref(modelValue);\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n if (x) {\n valueX = +roundStep(Math.max(minX, Math.min(maxX, valueX + stepX)), stepX).toPrecision(4);\n }\n\n if (y) {\n valueY = +roundStep(Math.max(minY, Math.min(maxY, valueY + stepY)), stepY).toPrecision(4);\n }\n\n modelValue.value = [valueX, valueY];\n }\n\n function onPointerDown(evt: PointerEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n isDragging.value = true;\n requestAnimationFrame(() => onPointerMove(evt));\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const root = unrefTemplateElement(rootRef);\n\n if (!unref(isDragging) || !root) {\n return;\n }\n\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n let {top, left, width, height} = root.getBoundingClientRect();\n top += 6;\n left += 6;\n width -= 12;\n height -= 12;\n\n const x = Math.max(0, Math.min(1, (evt.clientX - left) / width));\n const y = Math.max(0, Math.min(1, (evt.clientY - top) / height));\n\n modelValue.value = [\n +roundStep(x * (maxX - minX) + minX, stepX).toPrecision(4),\n +roundStep(y * (maxY - minY) + minY, stepY).toPrecision(4)\n ];\n\n evt.preventDefault();\n }\n\n function onPointerUp(): void {\n isDragging.value = false;\n }\n\n watch(isDragging, isDragging => emit('dragging', isDragging));\n</script>\n","<template>\n <div\n :class=\"clsx(\n mode === 'error' && $style.formFieldAdditionError,\n mode === 'hint' && $style.formFieldAdditionHint\n )\"\n role=\"alert\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.formFieldAdditionIcon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span v-if=\"message\">\n {{ message }}\n </span>\n\n <slot/>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const {\n mode = 'hint'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly message?: string;\n readonly mode?: 'error' | 'hint';\n }>();\n</script>\n","<template>\n <div :class=\"$style.formField\">\n <label\n :for=\"id\"\n :class=\"$style.formFieldHeader\">\n <span :class=\"$style.formFieldLabel\">\n {{ label }}\n </span>\n\n <span\n v-if=\"isOptional\"\n :class=\"$style.formFieldOptional\">\n ({{ translate('flux.optional') }})\n </span>\n\n <span\n v-if=\"'value' in slots\"\n :class=\"$style.formFieldValue\">\n <slot\n name=\"value\"\n v-bind=\"{currentLength, error, hint, id, isOptional, label, maxLength}\"/>\n </span>\n </label>\n\n <slot v-bind=\"{id}\"/>\n\n <span\n v-if=\"currentLength && maxLength && maxLength > 0\"\n :class=\"$style.formFieldCounter\">\n {{ currentLength }} / {{ maxLength }}\n </span>\n\n <FluxFormFieldAddition\n v-if=\"error\"\n icon=\"circle-exclamation\"\n mode=\"error\"\n :message=\"error\"/>\n\n <FluxFormFieldAddition\n v-if=\"hint\"\n icon=\"circle-info\"\n :message=\"hint\"/>\n\n <slot\n name=\"addition\"\n v-bind=\"{currentLength, error, hint, id, isOptional, label, maxLength}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { provide, useId } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFormFieldInjectionKey } from '$flux/data';\n import FluxFormFieldAddition from './FluxFormFieldAddition.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }>();\n\n const slots = defineSlots<{\n default(props: {\n readonly id?: string;\n }): any;\n\n addition(props: {\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }): any;\n\n value(props: {\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }): any;\n }>();\n\n const id = useId();\n const translate = useTranslate();\n\n provide(FluxFormFieldInjectionKey, {\n id\n });\n</script>\n","<template>\n <SliderBase\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :is-ticks-visible=\"isTicksVisible\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @dragging=\"onDragging\"\n @update=\"onUpdate\">\n <SliderTrack\n :percentage-lower=\"0\"\n :percentage-upper=\"percentage\">\n <SliderThumb\n ref=\"thumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :position=\"percentage\"\n @decrement=\"onDecrement\"\n @increment=\"onIncrement\"/>\n </SliderTrack>\n </SliderBase>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clampWithStepPrecision, countDecimals, formatNumber } from '@basmilius/utils';\n import { computed, ref, toRef, unref, useTemplateRef, watch, watchEffect } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { addTooltip, removeTooltip, updateTooltip } from '$flux/data';\n import { SliderBase, SliderThumb, SliderTrack } from './primitive';\n\n const modelValue = defineModel<number>({\n required: true\n });\n\n const {\n formatter = formatNumber,\n disabled: componentDisabled = false,\n isTooltipDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n formatter?(value: number, decimals?: number): string;\n\n readonly disabled?: boolean;\n readonly isTicksVisible?: boolean;\n readonly isTooltipDisabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const thumbRef = useTemplateRef('thumb');\n\n const isDragging = ref(false);\n const localValue = ref(0);\n const percentage = ref(0);\n const tooltipId = ref<number | null>(null);\n\n const tooltipContent = computed(() => formatter(modelValue.value, countDecimals(step)));\n\n function onDragging(is: boolean): void {\n isDragging.value = is;\n\n if (is && !tooltipId.value && !isTooltipDisabled) {\n tooltipId.value = addTooltip({\n content: unref(tooltipContent),\n direction: 'vertical',\n origin: unref(thumbRef)?.$el\n });\n } else if (!is && tooltipId.value) {\n removeTooltip(tooltipId.value);\n tooltipId.value = null;\n }\n }\n\n function onUpdate(value: number): void {\n localValue.value = value;\n\n requestAnimationFrame(() => {\n if (!tooltipId.value) {\n return;\n }\n\n updateTooltip(tooltipId.value, {\n content: formatter(modelValue.value, countDecimals(step)),\n origin: unref(thumbRef)?.$el\n });\n });\n }\n\n function onDecrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n const value = clampWithStepPrecision(localValue.value, min, max, step);\n modelValue.value = Math.max(min, value - step);\n }\n\n function onIncrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n const value = clampWithStepPrecision(localValue.value, min, max, step);\n modelValue.value = Math.min(max, value + step);\n }\n\n watchEffect(() => {\n localValue.value = (unref(modelValue) - min) / (max - min);\n });\n\n watch(([() => max, () => min, localValue, () => step]), () => {\n const value = clampWithStepPrecision(unref(localValue), min, max, step);\n modelValue.value = value;\n percentage.value = (value - min) / (max - min);\n }, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"$style.colorPicker\"\n :style=\"{\n '--pickerBackground': saturationPickerColor\n }\">\n <CoordinatePicker\n v-model=\"saturationValue\"\n :class=\"$style.colorPickerSaturation\"\n :max=\"1\"\n :min=\"0\"\n :step=\"0.0005\"\n @dragging=\"onDragging\"/>\n\n <FluxFormSlider\n v-model=\"hue\"\n :class=\"$style.colorPickerHueSlider\"\n is-tooltip-disabled\n :max=\"360\"\n :min=\"0\"\n :step=\"0.1\"/>\n\n <FluxFormSlider\n v-if=\"isAlphaEnabled\"\n v-model=\"alpha\"\n :class=\"$style.colorPickerAlphaSlider\"\n is-tooltip-disabled\n :max=\"1\"\n :min=\"0\"\n :step=\"0.001\"/>\n\n <div :class=\"$style.colorPickerValue\">\n <div\n :class=\"$style.colorPickerPreview\"\n :style=\"{\n '--color': rgb\n }\"/>\n\n <FluxFormField\n v-if=\"type === 'hex'\"\n label=\"Hex\">\n <FluxFormInput v-model.lazy=\"modelValue\"/>\n </FluxFormField>\n\n <template v-else-if=\"type === 'rgb'\">\n <FluxFormField label=\"R\">\n <FluxFormInput\n v-model.lazy=\"rgbInputR\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"G\">\n <FluxFormInput\n v-model.lazy=\"rgbInputG\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"B\">\n <FluxFormInput\n v-model.lazy=\"rgbInputB\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n\n <template v-else-if=\"type === 'hsv'\">\n <FluxFormField label=\"H\">\n <FluxFormInput\n v-model.lazy=\"hsvInputH\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"S\">\n <FluxFormInput\n v-model.lazy=\"hsvInputS\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"V\">\n <FluxFormInput\n v-model.lazy=\"hsvInputV\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n\n <template v-else-if=\"type === 'hsl'\">\n <FluxFormField label=\"H\">\n <FluxFormInput\n v-model.lazy=\"hslInputH\"\n :max=\"360\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"S\">\n <FluxFormInput\n v-model.lazy=\"hslInputS\"\n :max=\"100\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"L\">\n <FluxFormInput\n v-model.lazy=\"hslInputL\"\n :max=\"100\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { hexToRGB, hslToHSV, hslToRGB, hsvToHSL, hsvToRGB, rgbToHEX, rgbToHSL, rgbToHSV } from '@basmilius/utils';\n import { blue500 } from '@flux-ui/internals';\n import { computed, ComputedRef, ref, unref, watch } from 'vue';\n import CoordinatePicker from './primitive/CoordinatePicker.vue';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormSlider from './FluxFormSlider.vue';\n import $style from '$flux/css/component/Color.module.scss';\n\n const modelValue = defineModel<string | [number, number, number]>({\n default: blue500\n });\n\n const {\n type = 'hex'\n } = defineProps<{\n readonly isAlphaEnabled?: boolean;\n readonly type?: 'hex' | 'rgb' | 'hsl' | 'hsv';\n }>();\n\n const alpha = ref(1);\n const hsv = ref<[number, number, number]>([0, 0, 0]);\n const isDragging = ref(false);\n\n const rgb = computed(() => {\n const [r, g, b] = hsvToRGB(...unref(hsv));\n\n return `rgb(${r} ${g} ${b} / ${unref(alpha)})`;\n });\n\n const hue = computed({\n get: () => unref(hsv)[0] * 360,\n set: value => hsv.value = [value / 360, hsv.value[1], hsv.value[2]]\n });\n\n const saturation = computed({\n get: () => unref(hsv)[1],\n set: value => hsv.value = [hsv.value[0], value, hsv.value[2]]\n });\n\n const value = computed({\n get: () => 1 - unref(hsv)[2],\n set: value => hsv.value = [hsv.value[0], hsv.value[1], 1 - value]\n });\n\n const saturationValue = computed({\n get: (): [number, number] => [unref(saturation), unref(value)],\n set: ([s, v]: [number, number]) => {\n saturation.value = s;\n value.value = v;\n }\n });\n\n const saturationPickerColor = computed(() => {\n const [r, g, b] = hsvToRGB(unref(hsv)[0], 1, 1);\n\n return `rgb(${r} ${g} ${b})`;\n });\n\n const hslInputH = generateComputedInput(0, hsvToHSL, hslToHSV);\n const hslInputS = generateComputedInput(1, hsvToHSL, hslToHSV);\n const hslInputL = generateComputedInput(2, hsvToHSL, hslToHSV);\n\n const hsvInputH = generateComputedInput(0);\n const hsvInputS = generateComputedInput(1);\n const hsvInputV = generateComputedInput(2);\n\n const rgbInputR = generateComputedInput(0, hsvToRGB, rgbToHSV);\n const rgbInputG = generateComputedInput(1, hsvToRGB, rgbToHSV);\n const rgbInputB = generateComputedInput(2, hsvToRGB, rgbToHSV);\n\n function onDragging(is: boolean): void {\n isDragging.value = is;\n }\n\n function generateComputedInput(index: number, fromHSV?: (a: number, b: number, c: number) => [number, number, number], toHSV?: (a: number, b: number, c: number) => [number, number, number]): ComputedRef<number> {\n return computed({\n get: () => fromHSV?.(...unref(hsv))[index] ?? unref(hsv)[index],\n set: value => {\n const values = fromHSV?.(...unref(hsv)) ?? unref(hsv);\n values[index] = value;\n hsv.value = toHSV?.(...values) ?? values;\n }\n });\n }\n\n watch(modelValue, (modelValue, oldModelValue) => {\n if (unref(isDragging)) {\n return;\n }\n\n if (JSON.stringify(modelValue) === JSON.stringify(oldModelValue)) {\n return;\n }\n\n const hex = type === 'hex' ? modelValue.toString() : '';\n const values: [number, number, number] = type !== 'hex' ? modelValue as [number, number, number] : [0, 0, 0];\n\n switch (type) {\n case 'hex':\n hsv.value = rgbToHSV(...hexToRGB(hex));\n break;\n\n case 'rgb':\n hsv.value = rgbToHSV(...values);\n break;\n\n case 'hsl':\n hsv.value = rgbToHSV(...hslToRGB(...values));\n break;\n\n case 'hsv':\n hsv.value = [...values];\n break;\n }\n }, {immediate: true});\n\n watch(hsv, hsv => {\n switch (type) {\n case 'hex':\n modelValue.value = rgbToHEX(...hsvToRGB(...hsv));\n break;\n\n case 'rgb':\n modelValue.value = hsvToRGB(...hsv);\n break;\n\n case 'hsl':\n modelValue.value = rgbToHSL(...hsvToRGB(...hsv));\n break;\n\n case 'hsv':\n modelValue.value = [...hsv];\n break;\n }\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.primaryButton\"\n :css-class-icon=\"$style.primaryButtonIcon\"\n :css-class-label=\"$style.primaryButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"$style.colorSelect\">\n <button\n v-for=\"color of colors\"\n :class=\"modelValue === color ? $style.colorSelectColorSelected : $style.colorSelectColorDeselected\"\n :style=\"{\n '--color': color\n }\"\n @click=\"select(color)\">\n <FluxIcon\n :class=\"$style.colorSelectCheck\"\n name=\"check\"\n :size=\"16\"/>\n </button>\n\n <FluxFlyout v-if=\"isCustomAllowed\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.colorSelectCustom\"\n @click=\"open()\">\n <FluxIcon\n name=\"ellipsis-h\"\n :size=\"16\"/>\n </button>\n </template>\n\n <template #default=\"{close}\">\n <FluxColorPicker\n v-model=\"customColor\"\n :class=\"$style.colorSelectCustomPicker\"/>\n\n <FluxPaneBody :class=\"$style.colorSelectButtons\">\n <FluxSecondaryButton\n :label=\"t('flux.cancel')\"\n @click=\"close()\"/>\n\n <FluxPrimaryButton\n :label=\"t('flux.ok')\"\n @click=\"select(customColor, close)\"/>\n </FluxPaneBody>\n </template>\n </FluxFlyout>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { amber500, blue500, cyan500, emerald500, fuchsia500, green500, indigo500, lime500, orange500, pink500, purple500, red500, rose500, sky500, teal500, violet500, yellow500 } from '@flux-ui/internals';\n import { ref, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxColorPicker from './FluxColorPicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Color.module.scss';\n\n const modelValue = defineModel<string>({\n default: '#000000'\n });\n\n const {\n colors = [red500, orange500, amber500, yellow500, lime500, green500, emerald500, teal500, cyan500, sky500, blue500, indigo500, violet500, purple500, fuchsia500, pink500, rose500]\n } = defineProps<{\n readonly colors?: string[];\n readonly isCustomAllowed?: boolean;\n }>();\n\n const t = useTranslate();\n\n const customColor = ref('#000000');\n\n function select(color: string, close?: () => void): void {\n modelValue.value = color;\n close?.();\n }\n\n watch(modelValue, value => customColor.value = value, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"$style.container\"\n :style=\"{'--gutter': `${gutter}px`}\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n gutter = 30\n } = defineProps<{\n readonly gutter?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <SelectBase\n v-model:searchQuery=\"modelSearch\"\n :disabled=\"disabled\"\n :is-multiple=\"isMultiple\"\n :is-searchable=\"isSearchable\"\n :options=\"groups\"\n :placeholder=\"placeholder\"\n :selected=\"selected\"\n @deselect=\"onDeselect\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectEntry, FluxFormSelectValue } from '@flux-ui/types';\n import { toRef, unref } from 'vue';\n import { SelectBase } from '$flux/component/primitive';\n import { useDisabled } from '$flux/composable';\n import { useFormSelect } from '$flux/composable/private';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const modelValue = defineModel<FluxFormSelectValue>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n isMultiple,\n options\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isMultiple?: boolean;\n readonly placeholder?: string;\n readonly isSearchable?: boolean;\n readonly options: FluxFormSelectEntry[];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {groups, selected, values} = useFormSelect(modelValue, isMultiple, toRef(() => options), modelSearch);\n\n function onDeselect(id: string | number | null): void {\n if (unref(isMultiple)) {\n modelValue.value = unref(values).filter(v => v !== id);\n }\n }\n\n function onSelect(id: string | number | null): void {\n if (unref(isMultiple)) {\n modelValue.value = [...unref(values), id];\n } else {\n modelValue.value = id;\n }\n }\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :class=\"[\n isArrow && $style.paginationButtonArrow,\n isCurrent && $style.paginationButtonCurrent,\n isSpacer && $style.paginationButtonSpacer\n ]\"\n :css-class=\"$style.paginationButton\"\n :css-class-icon=\"$style.paginationButtonIcon\"\n :css-class-label=\"$style.paginationButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<FluxButtonProps & {\n readonly isArrow?: boolean;\n readonly isCurrent?: boolean;\n readonly isSpacer?: boolean;\n }>();\n\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <nav\n :class=\"$style.pagination\"\n role=\"navigation\"\n :aria-label=\"translate('flux.pagination')\">\n <FluxPaginationButton\n v-if=\"arrows || isCompact\"\n :disabled=\"isPreviousDisabled\"\n icon-leading=\"angle-left\"\n is-arrow\n :aria-label=\"translate('flux.previous')\"\n @click=\"previous\"/>\n\n <template\n v-if=\"!isCompact\"\n v-for=\"p of visiblePages\">\n <FluxPaginationButton\n v-if=\"p === 'dots'\"\n disabled\n icon-leading=\"ellipsis-h\"\n is-spacer/>\n\n <FluxPaginationButton\n v-else-if=\"p === page\"\n is-current\n :label=\"`${p}`\"\n aria-current=\"page\"/>\n\n <FluxPaginationButton\n v-else\n :label=\"`${p}`\"\n @click=\"navigate(p)\"/>\n </template>\n\n <template v-else>\n <FluxPaginationButton\n :class=\"$style.paginationCurrentZZ\"\n @click=\"prompt\"\n #before>\n <strong>{{ page }}</strong>\n <span>/</span>\n <span>{{ pages }}</span>\n </FluxPaginationButton>\n </template>\n\n <FluxPaginationButton\n v-if=\"arrows || isCompact\"\n :disabled=\"isNextDisabled\"\n icon-leading=\"angle-right\"\n is-arrow\n :aria-label=\"translate('flux.next')\"\n @click=\"next\"/>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { showPrompt } from '$flux/data';\n import FluxPaginationButton from './FluxPaginationButton.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n const emit = defineEmits<{\n navigate: [number];\n }>();\n\n const {\n page,\n perPage,\n total\n } = defineProps<{\n readonly arrows?: boolean;\n readonly isCompact?: boolean;\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n }>();\n\n const translate = useTranslate();\n\n const pages = computed(() => Math.ceil(total / perPage));\n const isNextDisabled = computed(() => page >= unref(pages));\n const isPreviousDisabled = computed(() => page <= 1);\n\n const visiblePages = computed(() => {\n if (unref(pages) === 0) {\n return [];\n }\n\n const sizes = {\n end: 1,\n middle: 2\n } as const;\n\n let dots = false;\n let visible: (number | 'dots')[] = [];\n\n if (unref(pages) === (sizes.end + sizes.middle + 2)) {\n for (let n = 1; n <= unref(pages); ++n) {\n visible.push(n);\n }\n } else {\n for (let n = 1; n <= unref(pages); ++n) {\n if (page === n) {\n dots = true;\n visible.push(n);\n } else if (n <= sizes.end || (n >= page - sizes.middle && n <= page + sizes.middle) || n > unref(pages) - sizes.end) {\n dots = true;\n visible.push(n);\n } else if (dots) {\n dots = false;\n visible.push('dots');\n }\n }\n }\n\n return visible;\n });\n\n function navigate(page: number): void {\n emit('navigate', page);\n }\n\n function next(): void {\n navigate(page + 1);\n }\n\n function previous(): void {\n navigate(page - 1);\n }\n\n async function prompt(): Promise<void> {\n const pageStr = await showPrompt({\n icon: 'ellipsis',\n title: translate('flux.paginationNavigateTitle'),\n message: translate('flux.paginationNavigateMessage'),\n fieldLabel: translate('flux.paginationNavigatePage')\n });\n\n const page = Number(pageStr);\n\n if (isNaN(page) || page > unref(pages) || page <= 0) {\n return;\n }\n\n navigate(page);\n }\n</script>\n","<template>\n <div :class=\"$style.paginationBar\">\n <FluxPagination\n v-if=\"total > perPage\"\n arrows\n :page=\"page\"\n :per-page=\"perPage\"\n :total=\"total\"\n @navigate=\"$emit('navigate', $event)\"/>\n\n <FluxSpacer :class=\"$style.paginationBarSpacer\"/>\n\n <div :class=\"$style.paginationBarLimit\">\n <span :class=\"$style.paginationBarLimitDisplayingOf\">\n {{\n translate('flux.displayingOf', {\n from: (page - 1) * perPage + 1,\n to: Math.min(total, page * perPage),\n total: total\n })\n }}\n </span>\n\n <FluxFormSelect\n v-model=\"limit\"\n :class=\"$style.paginationBarLimitSelect\"\n :options=\"limitOptions\"/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectOption } from '@flux-ui/types';\n import { computed, ref, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormSelect from './FluxFormSelect.vue';\n import FluxPagination from './FluxPagination.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n const emit = defineEmits<{\n limit: [number];\n navigate: [number];\n }>();\n\n const {\n limits = [5, 10, 25, 50, 100],\n perPage\n } = defineProps<{\n readonly limits?: number[];\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n }>();\n\n const translate = useTranslate();\n\n const limit = ref(perPage);\n\n const limitOptions = computed(() => limits.map<FluxFormSelectOption>(n => ({\n label: translate('flux.showN', {n}),\n value: n\n })));\n\n watch(limit, limit => emit('limit', limit));\n\n watch(() => perPage, perPage => limit.value = perPage, {immediate: true});\n</script>\n","<template>\n <td\n :class=\"clsx(\n $style.tableCell,\n isBordered && $style.isBordered,\n isHoverable && $style.isHoverable,\n isSeparated && $style.isSeparated,\n isStriped && $style.isStriped\n )\"\n role=\"cell\">\n <slot name=\"content\">\n <div\n :class=\"$style.tableCellContent\"\n :style=\"{\n flexFlow: contentDirection\n }\">\n <slot/>\n </div>\n </slot>\n </td>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { useTableInjection } from '$flux/composable';\n import $style from '$flux/css/component/Table.module.scss';\n\n const {\n contentDirection = 'row'\n } = defineProps<{\n readonly contentDirection?: 'column' | 'row';\n }>();\n\n defineSlots<{\n default(): any;\n content(): any;\n }>();\n\n const {\n isBordered,\n isHoverable,\n isSeparated,\n isStriped\n } = useTableInjection();\n</script>\n","<template>\n <tr :class=\"$style.tableRow\">\n <slot/>\n </tr>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Table.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.table\">\n <table :class=\"$style.tableBase\">\n <slot name=\"colgroups\"/>\n\n <thead v-if=\"slots.header\">\n <slot name=\"header\"/>\n </thead>\n\n <tbody v-if=\"slots.default\">\n <slot/>\n\n <FluxTableRow\n v-if=\"fillColumns\"\n :class=\"$style.tableFill\">\n <FluxTableCell v-for=\"_ of fillColumns\"/>\n </FluxTableRow>\n </tbody>\n\n <tfoot v-if=\"slots.footer\">\n <slot name=\"footer\"/>\n </tfoot>\n\n <caption\n v-if=\"slots.caption\"\n :style=\"{captionSide}\">\n <slot name=\"caption\"/>\n </caption>\n </table>\n\n <div\n v-if=\"isLoading\"\n :class=\"$style.tableLoader\">\n <FluxSpinner/>\n </div>\n\n <FluxPaneBody\n v-if=\"slots.pagination\"\n :class=\"$style.tablePagination\">\n <slot name=\"pagination\"/>\n </FluxPaneBody>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { VNode } from 'vue';\n import { provide } from 'vue';\n import { FluxTableInjectionKey } from '$flux/data';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import FluxTableCell from './FluxTableCell.vue';\n import FluxTableRow from './FluxTableRow.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n const {\n captionSide = 'bottom',\n isBordered = true,\n isHoverable = false,\n isLoading = false,\n isSeparated = true,\n isStriped = false\n } = defineProps<{\n readonly captionSide?: 'top' | 'bottom';\n readonly fillColumns?: number;\n readonly isBordered?: boolean;\n readonly isHoverable?: boolean;\n readonly isLoading?: boolean;\n readonly isSeparated?: boolean;\n readonly isStriped?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): VNode;\n colgroups?(): VNode;\n caption?(): VNode;\n footer?(): VNode;\n header?(): VNode;\n pagination?(): VNode;\n }>();\n\n provide(FluxTableInjectionKey, {\n isBordered,\n isHoverable,\n isSeparated,\n isStriped\n });\n</script>\n","<template>\n <FluxTable\n :fill-columns=\"fillColumns\"\n :is-bordered=\"isBordered\"\n :is-hoverable=\"isHoverable\"\n :is-loading=\"isLoading\"\n :is-separated=\"isSeparated\"\n :is-striped=\"isStriped\">\n <template\n v-if=\"'colgroups' in slots\"\n #colgroups>\n <slot name=\"colgroups\"/>\n </template>\n\n <template\n v-if=\"'header' in slots\"\n #header>\n <FluxTableRow>\n <slot\n name=\"header\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"'footer' in slots\"\n #footer>\n <FluxTableRow>\n <slot\n name=\"footer\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"total > limits[0]\"\n #pagination>\n <slot\n name=\"pagination\"\n v-bind=\"{page, perPage, rows, total}\">\n <FluxPaginationBar\n :limits=\"limits\"\n :page=\"page\"\n :per-page=\"perPage\"\n :total=\"total\"\n @limit=\"emit('limit', $event)\"\n @navigate=\"emit('navigate', $event)\"/>\n </slot>\n </template>\n\n <FluxTableRow\n v-for=\"(row, index) of rows\"\n :key=\"uniqueKey ? row[uniqueKey] : index\">\n <template v-for=\"(_, name) of slots\">\n <slot\n v-if=\"!IGNORED_SLOTS.includes(name as string)\"\n v-bind=\"{index, page, perPage, row, rows, total}\"\n :name=\"name\"/>\n </template>\n </FluxTableRow>\n </FluxTable>\n</template>\n\n<script\n lang=\"ts\"\n setup\n generic=\"T extends Record<string, any>\">\n import type { VNode } from 'vue';\n import { computed } from 'vue';\n import FluxPaginationBar from './FluxPaginationBar.vue';\n import FluxTable from './FluxTable.vue';\n import FluxTableRow from './FluxTableRow.vue';\n\n const IGNORED_SLOTS: string[] = ['header', 'footer', 'colgroups', 'pagination'];\n\n const emit = defineEmits<{\n limit: [number];\n navigate: [number];\n }>();\n\n const {\n isBordered = true,\n isHoverable = false,\n isLoading = false,\n isSeparated = true,\n isStriped = false,\n dataSet,\n perPage\n } = defineProps<{\n readonly dataSet: T[];\n readonly fillColumns?: number;\n readonly isBordered?: boolean;\n readonly isHoverable?: boolean;\n readonly isLoading?: boolean;\n readonly isSeparated?: boolean;\n readonly isStriped?: boolean;\n readonly limits: number[];\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n readonly uniqueKey?: string;\n }>();\n\n const slots = defineSlots<{\n [key: string]: (props: {\n readonly index: number;\n readonly page: number;\n readonly perPage: number;\n readonly row: T;\n readonly rows: T[];\n readonly total: number;\n }) => VNode;\n\n footer(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n header(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n pagination(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n colgroups(): VNode;\n }>();\n\n const rows = computed(() => dataSet.slice(0, perPage));\n</script>\n","<template>\n <div :class=\"$style.datePicker\">\n <div :class=\"$style.datePickerHeader\">\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDatePrevious, 'month')\"\n icon-leading=\"angle-left\"\n :aria-label=\"translate('flux.previous')\"\n @click=\"previousMonth\"/>\n </FluxFadeTransition>\n\n <div\n :class=\"$style.datePickerHeaderView\"\n :id=\"id\"\n aria-live=\"polite\"\n role=\"presentation\">\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('month')\">\n {{ viewMonth }}\n </button>\n\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('year')\">\n {{ viewYear }}\n </button>\n </div>\n\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDateNext, 'month')\"\n icon-leading=\"angle-right\"\n :aria-label=\"translate('flux.next')\"\n @click=\"nextMonth\"/>\n </FluxFadeTransition>\n </div>\n\n <FluxVerticalWindowTransition :is-back=\"viewMode === 'date'\">\n <div\n v-if=\"viewMode === 'date'\"\n key=\"date\"\n :class=\"$style.datePickerDates\"\n :aria-labelledby=\"id\">\n <FluxWindowTransition :is-back=\"isTransitioningToPast\">\n <div\n :key=\"viewDate.month\"\n :class=\"$style.datePickerDatesGrid\">\n <template\n v-for=\"day of days\"\n :key=\"day\">\n <span :class=\"$style.datePickerDay\">{{ day }}</span>\n </template>\n\n <template\n v-for=\"date of dates\"\n :key=\"date\">\n <button\n :class=\"clsx(\n $style.datePickerDate,\n isDisabled(date) && $style.isDisabled,\n isWithinRange(date, 'end') && $style.isRangeEnd,\n isWithinRange(date) && $style.isRangeEntry,\n isWithinRange(date, 'start') && $style.isRangeStart,\n isWithinSelection(date, 'end') && $style.isSelectionEnd,\n isWithinSelection(date) && $style.isSelectionEntry,\n isWithinSelection(date, 'start') && $style.isSelectionStart,\n isSelected(date) && $style.isSelected\n )\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"setDate(date)\"\n @mouseover=\"onDateMouseOver(date)\"\n @mouseout=\"onDateMouseOut\">\n {{ date.toLocaleString({day: 'numeric'}) }}\n </button>\n </template>\n </div>\n </FluxWindowTransition>\n </div>\n\n <div\n v-else-if=\"viewMode === 'month'\"\n key=\"month\"\n :class=\"$style.datePickerMonths\">\n <template\n v-for=\"month of months\"\n :key=\"month\">\n <FluxSecondaryButton\n :disabled=\"!isWithinBoundary(month.date, 'month')\"\n :label=\"month.label\"\n tabindex=\"-1\"\n @click=\"setViewMonth(month.date)\"/>\n </template>\n </div>\n\n <div\n v-else-if=\"viewMode === 'year'\"\n key=\"year\"\n :class=\"$style.datePickerYears\">\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n tabindex=\"-1\"\n @click=\"previousYears\"/>\n\n <template\n v-for=\"year of years\"\n :key=\"year\">\n <FluxSecondaryButton\n :label=\"year.toString()\"\n tabindex=\"-1\"\n @click=\"setViewYear(year)\"/>\n </template>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n tabindex=\"-1\"\n @click=\"nextYears\"/>\n </div>\n </FluxVerticalWindowTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useCalendar, useCalendarMonthSwitcher, useCalendarYearSwitcher } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { computed, ref, unref, useId } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition, FluxVerticalWindowTransition, FluxWindowTransition } from '$flux/transition';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/DatePicker.module.scss';\n\n const modelValue = defineModel<DateTime | DateTime[] | null>({\n default: null,\n required: true\n });\n\n const {\n max,\n min,\n rangeMode\n } = defineProps<{\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const id = useId();\n const translate = useTranslate();\n\n const {\n isTransitioningToPast,\n viewDate,\n viewDateNext,\n viewDatePrevious,\n viewMonth,\n viewYear,\n dates,\n days,\n setViewDate,\n nextMonth,\n previousMonth\n } = useCalendar(getInitialDate());\n\n const {\n months\n } = useCalendarMonthSwitcher(viewDate, 'short');\n\n const {\n years,\n next: nextYears,\n previous: previousYears\n } = useCalendarYearSwitcher(viewDate);\n\n const selection = ref<[DateTime | null, DateTime | null]>([null, null]);\n const viewMode = ref<'date' | 'month' | 'year'>('date');\n\n const maxDate = computed(() => (max ?? DateTime.now().endOf('year').plus({year: 100})).startOf('day'));\n const minDate = computed(() => (min ?? DateTime.now().startOf('year').minus({year: 100})).startOf('day'));\n const normalizedSelection = computed(() => {\n const [start, end] = unref(selection);\n\n if (!start || !end) {\n return [start, end];\n }\n\n if (start > end) {\n return [end, start];\n } else {\n return [start, end];\n }\n });\n\n function getInitialDate(): DateTime {\n const value = unref(modelValue);\n let date: DateTime;\n\n if (!value) {\n date = DateTime.now();\n } else if (Array.isArray(value)) {\n date = value[1];\n } else {\n date = value as DateTime;\n }\n\n return date.startOf('day');\n }\n\n function isDisabled(date: DateTime): boolean {\n if (unref(viewDate).month !== date.month) {\n return true;\n }\n\n return !isWithinBoundary(date);\n }\n\n function isSelected(date: DateTime): boolean {\n if (rangeMode) {\n return false;\n }\n\n const value = unref(modelValue) as (DateTime | DateTime[]);\n\n if (!value || Array.isArray(value)) {\n return false;\n }\n\n return value.hasSame(date, 'day');\n }\n\n function isWithinBoundary(date: DateTime, unit?: 'month'): boolean {\n if (unit === 'month') {\n return unref(maxDate).endOf('month') >= date && unref(minDate).startOf('month') <= date;\n }\n\n return unref(maxDate) >= date && unref(minDate) <= date;\n }\n\n function isWithinRange(date: DateTime, edge?: 'start' | 'end'): boolean {\n if (!rangeMode) {\n return false;\n }\n\n const value = unref(modelValue);\n\n if (!value || !Array.isArray(value)) {\n return false;\n }\n\n if (edge) {\n const index = edge === 'start' ? 0 : 1;\n\n return value[index].hasSame(date, 'day');\n }\n\n return date >= value[0].startOf('day') && date <= value[1].startOf('day');\n }\n\n function isWithinSelection(date: DateTime, edge?: 'start' | 'end'): boolean {\n const [selectionStart, selectionEnd] = unref(normalizedSelection);\n\n if (!selectionStart || !selectionEnd) {\n return false;\n }\n\n if (edge) {\n return (edge === 'start' ? selectionStart : selectionEnd)?.hasSame(date, 'day');\n }\n\n return date >= selectionStart && date <= selectionEnd;\n }\n\n function setDate(date: DateTime): void {\n switch (rangeMode) {\n case 'range':\n const [start] = unref(selection);\n\n if (!start) {\n selection.value = [date, date];\n } else {\n if (date >= start) {\n modelValue.value = [start, date];\n } else {\n modelValue.value = [date, start];\n }\n\n selection.value = [null, null];\n }\n break;\n\n case 'month':\n modelValue.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n modelValue.value = [date.startOf('week'), date.endOf('week')];\n break;\n\n default:\n modelValue.value = date;\n break;\n }\n }\n\n function setView(view: 'date' | 'month' | 'year'): void {\n viewMode.value = unref(viewMode) === view ? 'date' : view;\n }\n\n function setViewMonth(month: DateTime): void {\n setView('date');\n setViewDate(month);\n }\n\n function setViewYear(year: number): void {\n setView('date');\n setViewDate(unref(viewDate).set({year}));\n }\n\n function onDateMouseOver(date: DateTime): void {\n if (!rangeMode) {\n return;\n }\n\n switch (rangeMode) {\n case 'range':\n selection.value = [selection.value[0], date];\n break;\n\n case 'month':\n selection.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n selection.value = [date.startOf('week'), date.endOf('week')];\n break;\n }\n }\n\n function onDateMouseOut(): void {\n if (!rangeMode || rangeMode === 'range') {\n return;\n }\n\n selection.value = [null, null];\n }\n</script>\n","<template>\n <slot/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { provide, toRef } from 'vue';\n import { FluxDisabledInjectionKey } from '$flux/data';\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled = true\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n provide(FluxDisabledInjectionKey, toRef(() => disabled));\n</script>\n","<template>\n <div\n :class=\"clsx(\n contentPlacement === 'start' && $style.dividerContentStart,\n contentPlacement === 'center' && $style.dividerContentCenter,\n contentPlacement === 'end' && $style.dividerContentEnd\n )\"\n role=\"separator\"\n aria-orientation=\"horizontal\">\n <div\n v-if=\"slots.default\"\n :class=\"$style.dividerContent\">\n <slot/>\n </div>\n\n <hr\n v-else\n :class=\"$style.dividerLine\">\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Divider.module.scss';\n\n const {\n contentPlacement = 'center'\n } = defineProps<{\n readonly contentPlacement?: 'start' | 'center' | 'end';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.dotPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternContentUnits=\"userSpaceOnUse\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <circle\n :r=\"cr\"\n :cx=\"width / 2 - cx\"\n :cy=\"height / 2 - cy\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref, useId, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 16,\n height = 16,\n cr = 1,\n cx = 1,\n cy = 1\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly cr?: number;\n readonly cx?: number;\n readonly cy?: number;\n }>();\n\n const svgRef = useTemplateRef<HTMLElement>('svg');\n const id = useId();\n\n const svgWidth = ref(0);\n const svgHeight = ref(0);\n\n watch(svgRef, (svg, _, onCleanup) => {\n if (!svg) {\n return;\n }\n\n const onResize = () => {\n svgWidth.value = svg.clientWidth;\n svgHeight.value = svg.clientHeight;\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n onResize();\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"[\n $style.dropZone,\n isDragging && $style.isDragging,\n isDraggingOver && $style.isDraggingOver\n ]\"\n :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"$style.dropZoneContent\"\n @dragleave.capture=\"onDragLeave\"\n @dragover.capture=\"onDragEnter\"\n @drop=\"onDrop\">\n <svg\n ref=\"content\"\n :class=\"$style.dropZoneBorder\"\n role=\"presentation\">\n <rect\n height=\"100%\"\n width=\"100%\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n :pathLength=\"pathLength\"/>\n </svg>\n\n <slot v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.dropZoneLoader\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n </div>\n\n <div\n v-if=\"slots.actions\"\n :class=\"$style.dropZoneActions\">\n <slot\n name=\"actions\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n\n <slot\n name=\"extra\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { roundStep } from '@basmilius/utils';\n import { onMounted, onUnmounted, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/DropZone.module.scss';\n\n const emit = defineEmits<{\n select: [File];\n selectMultiple: [FileList];\n }>();\n\n const {\n accept,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n readonly accept?: string;\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n actions?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n extra?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n }>();\n\n const contentRef = useTemplateRef('content');\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n const isDragging = ref(false);\n const isDraggingOver = ref(false);\n const pathLength = ref(0);\n\n onMounted(() => {\n window.addEventListener('dragleave', onWindowDragEnd, {capture: true});\n window.addEventListener('dragover', onWindowDragStart, {capture: true});\n window.addEventListener('drop', onWindowDrop, {capture: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('dragleave', onWindowDragEnd);\n window.removeEventListener('dragover', onWindowDragStart);\n window.removeEventListener('drop', onWindowDrop);\n });\n\n function onDragEnter(evt: DragEvent): void {\n isDraggingOver.value = true;\n evt.preventDefault();\n }\n\n function onDragLeave(): void {\n isDraggingOver.value = false;\n }\n\n function onDrop(evt: DragEvent): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n\n if (!evt.dataTransfer) {\n return;\n }\n\n const files = evt.dataTransfer.files;\n\n if (files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n function onWindowDragEnd(): void {\n isDragging.value = false;\n }\n\n function onWindowDragStart(): void {\n isDragging.value = true;\n }\n\n function onWindowDrop(): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n }\n\n function onFileSelected(evt: Event): void {\n const files = (evt.target as HTMLInputElement).files;\n\n if (!files || files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n }\n\n function showPicker(): void {\n if (unref(disabled)) {\n return;\n }\n\n let input: HTMLInputElement | undefined = document.createElement('input');\n input.accept = accept ?? '*';\n input.multiple = isMultiple ?? false;\n input.type = 'file';\n\n input.addEventListener('change', onFileSelected, {once: true});\n input.showPicker();\n }\n\n watch(contentRef, content => {\n if (!content) {\n return;\n }\n\n const {width, height} = content.getBoundingClientRect();\n pathLength.value = roundStep(width * 2 + height * 2, 6);\n }, {immediate: true});\n</script>\n\n","<template>\n <VNodeRenderer\n v-if=\"vnode\"\n :vnode=\"vnode\"/>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import { VNode } from 'vue';\n import { VNodeRenderer } from './primitive';\n\n defineProps<{\n readonly vnode?: VNode;\n }>();\n</script>\n","<template>\n <div\n :class=\"isOpen ? $style.expandableOpened : $style.expandable\"\n :id=\"headerId\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"isOpen\">\n <slot\n v-bind=\"{label, isOpen, close, open, toggle}\"\n name=\"header\">\n <button\n :class=\"$style.expandableHeader\"\n type=\"button\"\n @click=\"toggle\">\n <FluxFadeTransition>\n <FluxIcon\n v-if=\"icon\"\n :key=\"icon\"\n :name=\"icon\"/>\n </FluxFadeTransition>\n\n <span>{{ label }}</span>\n\n <FluxFadeTransition>\n <FluxIcon\n :key=\"expandIcon\"\n :name=\"expandIcon\"\n :size=\"16\"/>\n </FluxFadeTransition>\n </button>\n </slot>\n\n <FluxAutoHeightTransition>\n <div\n v-if=\"isOpen\"\n :class=\"$style.expandableBody\"\n :id=\"contentId\"\n :aria-labelledby=\"headerId\">\n <slot\n v-bind=\"{label, close}\"\n name=\"body\">\n <div :class=\"$style.expandableContent\">\n <slot v-bind=\"{label, close}\"/>\n </div>\n </slot>\n </div>\n </FluxAutoHeightTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useComponentId } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, getCurrentInstance, onBeforeMount, onUnmounted, ref, unref, useId, watch } from 'vue';\n import { useExpandableGroupInjection } from '$flux/composable';\n import { FluxAutoHeightTransition, FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const emit = defineEmits<{\n toggle: [boolean];\n }>();\n\n const {\n isOpened\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isOpened?: boolean;\n readonly label?: string;\n }>();\n\n const componentId = useComponentId();\n const contentId = useId();\n const headerId = useId();\n const instance = getCurrentInstance()!;\n const isOpen = ref(false);\n\n const {closeAll, register, unregister} = useExpandableGroupInjection();\n\n const expandIcon = computed<FluxIconName>(() => unref(isOpen) ? 'minus' : 'plus');\n\n onBeforeMount(() => register?.(unref(componentId), instance));\n onUnmounted(() => unregister?.(unref(componentId)));\n\n function close(): void {\n isOpen.value = false;\n emit('toggle', isOpen.value);\n }\n\n function open(): void {\n closeAll?.();\n isOpen.value = true;\n emit('toggle', isOpen.value);\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n watch(() => isOpened, () => {\n if (isOpened) {\n open();\n } else {\n close();\n }\n }, {immediate: true});\n\n defineExpose({\n isOpen,\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <div :class=\"$style.expandableGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { getExposedRef } from '@flux-ui/internals';\n import { ComponentInternalInstance, provide } from 'vue';\n import { FluxExpandableGroupInjectionKey } from '$flux/data';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const {\n isControlled\n } = defineProps<{\n readonly isControlled?: boolean;\n }>();\n\n\n defineSlots<{\n default(): any;\n }>();\n\n const expandables: { [key: number]: ComponentInternalInstance; } = {};\n\n function closeAll(): void {\n Object.values(expandables).forEach(expandable => {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = false;\n });\n }\n\n function register(uid: number, expandable: ComponentInternalInstance): void {\n expandables[uid] = expandable;\n\n if (!isControlled && Object.values(expandables).length === 1) {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = true;\n }\n }\n\n function unregister(uid: number): void {\n delete expandables[uid];\n }\n\n provide(FluxExpandableGroupInjectionKey, {\n closeAll,\n register,\n unregister\n });\n</script>\n","<template>\n <div\n ref=\"fader\"\n :class=\"$style.fader\">\n <slot v-bind=\"{current, next, previous}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useInterval } from '@flux-ui/internals';\n import { computed, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Fader.module.scss';\n\n const emit = defineEmits<{\n update: [number];\n }>();\n\n const {\n interval = 9000\n } = defineProps<{\n readonly interval?: number;\n }>();\n\n defineSlots<{\n default(props: {\n next(): void;\n previous(): void;\n\n readonly current: number;\n }): any;\n }>();\n\n const faderRef = useTemplateRef('fader');\n useInterval(interval, () => next());\n\n const current = ref(-1);\n\n const count = computed(() => {\n const fader = unrefTemplateElement(faderRef);\n return fader?.children.length ?? 0;\n });\n\n function next(): void {\n current.value = unref(current) + 1 >= unref(count) ? 0 : unref(current) + 1;\n }\n\n function previous(): void {\n current.value = unref(current) - 1 <= -1 ? unref(count) - 1 : unref(current) + 1;\n }\n\n watch(current, current => {\n const fader = unrefTemplateElement(faderRef);\n\n if (!fader || fader.children.length === 0) {\n return;\n }\n\n Array.from(fader.children).forEach(item => item.classList.remove($style.isCurrent));\n fader.children[current].classList.add($style.isCurrent);\n emit('update', current);\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.faderItem\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Fader.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxWindowTransition :is-back=\"isBack\">\n <template v-for=\"(_, slot) of slots\">\n <slot\n v-if=\"slot === view\"\n v-bind=\"{back, navigate}\"\n :name=\"slot\"/>\n </template>\n </FluxWindowTransition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n\n const slots = defineSlots<{\n default(props: {\n back(to?: string): void;\n navigate(to: string): void;\n }): any;\n\n [key: string]: (props: {\n back(to?: string): void;\n navigate(to: string): void;\n }) => any;\n }>();\n\n const isBack = ref(false);\n const view = ref<string>('default');\n\n function back(to: string = 'default'): void {\n isBack.value = true;\n view.value = to;\n }\n\n function navigate(to: string): void {\n isBack.value = false;\n view.value = to;\n }\n\n defineExpose({\n back,\n navigate\n });\n</script>\n","<template>\n <div\n v-height-transition\n :class=\"$style.filter\">\n <FluxWindow ref=\"window\">\n <template #default=\"{navigate}\">\n <FilterMenuRenderer\n :navigate=\"navigate\"\n :state=\"modelValue\">\n <slot/>\n </FilterMenuRenderer>\n </template>\n\n <template\n v-for=\"(filter, name) of filters\"\n #[name]>\n <FluxMenu>\n <FluxMenuGroup\n :class=\"$style.filterHeader\"\n is-horizontal>\n <FluxMenuItem\n :class=\"$style.filterBack\"\n :label=\"translate('flux.back')\"\n icon-leading=\"angle-left\"\n @click=\"back()\"/>\n\n <FluxMenuItem\n v-if=\"resettable?.includes(name)\"\n :class=\"$style.filterReset\"\n icon-leading=\"trash\"\n is-destructive\n @click=\"reset(name)\"/>\n </FluxMenuGroup>\n\n <VNodeRenderer :vnode=\"filter\"/>\n </FluxMenu>\n </template>\n </FluxWindow>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentName, getComponentProps, vHeightTransition } from '@flux-ui/internals';\n import type { FluxFilterOptionItem, FluxFilterState } from '@flux-ui/types';\n import { computed, provide, unref, useTemplateRef, VNode } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFilterInjectionKey } from '$flux/data';\n import { FilterMenuRenderer, VNodeRenderer } from './primitive';\n import FluxMenu from './FluxMenu.vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n import FluxMenuItem from './FluxMenuItem.vue';\n import FluxWindow from './FluxWindow.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n reset: [string]\n }>();\n\n const modelValue = defineModel<FluxFilterState>({\n required: true\n });\n\n defineProps<{\n readonly resettable?: string[];\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n const windowRef = useTemplateRef<{ back(to: string): void; }>('window');\n\n const filters = computed<Record<string, VNode>>(() => {\n const filters: { [key: string]: VNode; } = {};\n const items = flattenVNodeTree(slots.default?.() ?? []);\n\n for (const item of items) {\n const name = getComponentName(item);\n\n if (!name.startsWith('FluxFilter')) {\n continue;\n }\n\n const props = getComponentProps<{ name: string; }>(item);\n\n if (!props.name) {\n continue;\n }\n\n filters[props.name] = item;\n }\n\n return filters;\n });\n\n function back(): void {\n unref(windowRef)?.back('default');\n }\n\n function reset(name: string): void {\n back();\n emit('reset', name);\n }\n\n function getValue(name: string): FluxFilterOptionItem['value'] | undefined {\n if (!hasValue(name)) {\n return undefined;\n }\n\n return unref(modelValue)[name] as FluxFilterOptionItem['value'];\n }\n\n function hasValue(name: string): boolean {\n return name in unref(modelValue);\n }\n\n function setValue(name: string, value: FluxFilterOptionItem['value']): void {\n modelValue.value[name] = value;\n }\n\n provide(FluxFilterInjectionKey, {\n state: modelValue,\n back,\n reset,\n getValue,\n hasValue,\n setValue\n });\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value) {\n return null;\n }\n\n if (!DateTime.isDateTime(value)) {\n if (typeof value === 'string') {\n return DateTime.fromISO(value);\n }\n\n return null;\n }\n\n return value;\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (!DateTime.isDateTime(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n :range-mode=\"rangeMode\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name,\n rangeMode = 'range'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value || !Array.isArray(value)) {\n return null;\n }\n\n const [start, end] = value;\n\n if (!DateTime.isDateTime(start) || !DateTime.isDateTime(end)) {\n return null;\n }\n\n return [start, end];\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (date === null || !Array.isArray(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {default: ''});\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n\n watch(currentValue, async value => {\n if (!value && value !== 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)([value]);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n\n watch(currentValue, async value => {\n if (value.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(value);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.formColumn\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPaneBody>\n <FluxFormColumn>\n <FluxFormField :label=\"translate('flux.min')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[0]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({lower: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[0]) : currentValue[0] }}\n </template>\n </FluxFormField>\n\n <FluxFormField :label=\"translate('flux.max')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[1]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({upper: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[1]) : currentValue[1] }}\n </template>\n </FluxFormField>\n </FluxFormColumn>\n </FluxPaneBody>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { formatNumber } from '@basmilius/utils';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormColumn from './FluxFormColumn.vue';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormSlider from './FluxFormSlider.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n\n const {\n formatter = formatNumber,\n max,\n min,\n name,\n step = 1\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isTicksVisible?: boolean;\n readonly label: string;\n readonly name: string;\n readonly max: number;\n readonly min: number;\n readonly step?: number;\n readonly formatter?: (value: number) => string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const translate = useTranslate();\n\n const currentValue = computed(() => (unref(state)[name] ?? [min, max]) as number[]);\n\n function update({lower, upper}: { lower?: number, upper?: number }): void {\n if (lower || lower === 0) {\n upper ??= unref(currentValue)[1];\n\n if (lower > upper) {\n upper = lower;\n }\n }\n\n if (upper || upper === 0) {\n lower ??= unref(currentValue)[0];\n\n if (lower > upper) {\n lower = upper;\n }\n }\n\n setValue(name, [lower!, upper!]);\n }\n</script>\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.flickeringGrid\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useInView } from '@flux-ui/internals';\n import { computed, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n color = '#1d4ed8',\n flickerChance = 0.15,\n gap = 6,\n maxOpacity = 0.3,\n size = 3\n } = defineProps<{\n readonly color?: string;\n readonly flickerChance?: number;\n readonly gap?: number;\n readonly maxOpacity?: number;\n readonly size?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n\n const inView = useInView(canvasRef);\n\n const mulberry = mulberry32(13);\n\n const rgb = computed(() => {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return [0, 0, 0];\n }\n\n context.fillStyle = color;\n context.fillRect(0, 0, 1, 1);\n\n return context.getImageData(0, 0, 1, 1).data;\n });\n\n function draw(context: CanvasRenderingContext2D, width: number, height: number, columns: number, rows: number, squares: Float32Array, dpr: number): void {\n context.clearRect(0, 0, width * dpr, height * dpr);\n\n const [r, g, b] = unref(rgb);\n\n for (let i = 0; i < columns; ++i) {\n for (let j = 0; j < rows; ++j) {\n const opacity = squares[i * rows + j];\n context.fillStyle = `rgb(${r} ${g} ${b} / ${opacity})`;\n context.fillRect(\n (i * (size + gap) + width / 2 - (columns / 2 * (size + gap) - gap / 2)) * dpr,\n (j * (size + gap) + height / 2 - (rows / 2 * (size + gap) - gap / 2)) * dpr,\n size * dpr,\n size * dpr\n );\n }\n }\n }\n\n function setup(canvas: HTMLCanvasElement) {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n const columns = Math.ceil(width / (size + gap));\n const rows = Math.ceil(height / (size + gap));\n const squares = new Float32Array(columns * rows);\n\n for (let i = 0; i < squares.length; ++i) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n\n return {\n width,\n height,\n columns,\n rows,\n squares,\n dpr\n };\n }\n\n function tick(squares: Float32Array, delta: number): void {\n for (let i = 0; i < squares.length; ++i) {\n if (mulberry.next() < flickerChance * delta) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n }\n }\n\n watch([canvasRef, inView], ([canvas, inView], _, onCleanup) => {\n if (!canvas || !inView) {\n return;\n }\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return;\n }\n\n let frame = 0;\n let lastTime = 0;\n let {width, height, columns, rows, squares, dpr} = setup(canvas);\n\n const animate = (time: number): void => {\n const delta = (time - lastTime) / 1000;\n lastTime = time;\n\n tick(squares, delta);\n draw(context, width, height, columns, rows, squares, dpr);\n frame = requestAnimationFrame(animate);\n };\n\n const onResize = () => {\n ({width, height, columns, rows, squares, dpr} = setup(canvas));\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n requestAnimationFrame(animate);\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n cancelAnimationFrame(frame);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.paneFooter\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane :style=\"{'--aspect-ratio': aspectRatio}\">\n <FluxFadeTransition mode=\"out-in\">\n <FluxPaneBody\n v-if=\"isPreviewing\"\n key=\"preview\">\n <div :class=\"$style.focalPointPreview\">\n <div\n :class=\"$style.focalPointPreviewImage\"\n :style=\"{\n backgroundImage: `url(${src})`,\n backgroundPosition: `${focalPointX}% ${focalPointY}%`\n }\"/>\n </div>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-else\n key=\"editor\">\n <div\n :class=\"$style.focalPointEditor\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\">\n <img\n ref=\"image\"\n :class=\"$style.focalPointEditorImage\"\n :src=\"src\"\n alt=\"\"\n @load=\"onImageLoaded\"/>\n\n <div\n :class=\"$style.focalPointEditorArea\"\n :style=\"{\n top: `${focalPointY}%`,\n left: `${focalPointX}%`\n }\"/>\n </div>\n </FluxPaneBody>\n </FluxFadeTransition>\n\n <FluxPaneFooter>\n <slot name=\"footer-before\"/>\n\n <FluxSecondaryButton\n :label=\"translate(isPreviewing ? 'flux.previewClose' : 'flux.preview')\"\n @click=\"onShowPreviewClicked\"/>\n\n <FluxSpacer/>\n\n <slot name=\"footer\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, onMounted, onUnmounted, ref, unref, useTemplateRef, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n src\n } = defineProps<{\n readonly src: string;\n }>();\n\n const imageRef = useTemplateRef('image');\n const translate = useTranslate();\n\n const aspectRatio = ref(1);\n const dragging = ref<[number, number] | null>(null);\n const isPreviewing = ref(false);\n\n const focalPointX = computed(() => unref(dragging) ? unref(dragging)![0] : unref(modelValue)[0]);\n const focalPointY = computed(() => unref(dragging) ? unref(dragging)![1] : unref(modelValue)[1]);\n\n onMounted(() => window.addEventListener('pointerup', onPointerUp, {passive: true}));\n\n onUnmounted(() => window.removeEventListener('pointerup', onPointerUp));\n\n function onImageLoaded(): void {\n const image = unref(imageRef);\n\n if (!image) {\n return;\n }\n\n aspectRatio.value = image.width / image.height;\n }\n\n function onPointerDown(evt: PointerEvent): void {\n dragging.value = [0, 0];\n onPointerMove(evt);\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const image = unref(imageRef);\n\n if (!image || !dragging.value) {\n return;\n }\n\n const {top, left, width, height} = image.getBoundingClientRect();\n const {pageX, pageY} = evt;\n\n dragging.value = [\n Math.max(0, Math.min(1, (pageX - left) / width)) * 100,\n Math.max(0, Math.min(1, (pageY - top) / height)) * 100\n ];\n }\n\n function onPointerUp(): void {\n if (!dragging.value) {\n return;\n }\n\n modelValue.value = dragging.value!;\n dragging.value = null;\n }\n\n function onShowPreviewClicked(): void {\n isPreviewing.value = !isPreviewing.value;\n }\n\n watch(() => src, () => isPreviewing.value = false);\n</script>\n","<template>\n <img\n :class=\"$style.focalPointImage\"\n :style=\"{\n objectPosition: `${x}% ${y}%`\n }\"\n :src=\"src\"\n :alt=\"alt\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { computed } from 'vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const {\n alt = '',\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly alt?: string;\n readonly src: string;\n }>();\n\n const x = computed(() => focalPoint?.x ?? 50);\n const y = computed(() => focalPoint?.y ?? 50);\n</script>\n","<template>\n <FluxDisabled :disabled=\"disabled\">\n <form\n :class=\"$style.form\"\n :aria-disabled=\"disabled ? true : undefined\"\n @submit.prevent=\"onSubmit()\">\n <slot/>\n </form>\n </FluxDisabled>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxDisabled from './FluxDisabled.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n submit: [];\n }>();\n\n const {\n disabled = false\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onSubmit(): void {\n emit('submit');\n }\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.formInputGroup,\n isSecondary && $style.isSecondary\n )\"\n role=\"textbox\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly isSecondary?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoComplete, autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n v-model=\"localValue\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :max=\"max?.toISO()?.substring(0, 10)\"\n :min=\"min?.toISO()?.substring(0, 10)\"\n type=\"date\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import type { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<DateTime | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISODate() === localValue?.toISODate()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"clsx(\n $style.formDateRangeInput,\n disabled && $style.isDisabled\n )\"\n role=\"presentation\">\n <span>{{ label }}</span>\n </div>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"\n :range-mode=\"rangeMode\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import type { DateTime } from 'luxon';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { createLabelForDateRange } from '$flux/util';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<[DateTime, DateTime] | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n rangeMode = 'range'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<[DateTime, DateTime] | null>(null);\n\n const label = computed(() => {\n const value = unref(localValue);\n\n if (!value) {\n return '';\n }\n\n const [start, end] = value;\n\n return createLabelForDateRange(start, end, true);\n });\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n modelValue.value = localValue;\n });\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n</script>\n","<template>\n <FluxStack\n :class=\"$style.formDateTimeInput\"\n direction=\"horizontal\"\n :gap=\"15\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :model-value=\"localValue\"\n type=\"date\"\n @update:model-value=\"setDate\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n :max=\"max\"\n :min=\"min\"\n :model-value=\"localValue\"\n @update:model-value=\"setDate\"/>\n </FluxFlyout>\n\n <FluxFormInput\n :=\"{disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formTimeInput\"\n type=\"time\"\n :model-value=\"localValue\"\n @update:model-value=\"setTime\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<DateTime | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n isHourOnly\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isHourOnly?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef<{ close(): void; }>('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function setDate(dateTime: DateTime | object | string | number | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n day: dateTime.day,\n month: dateTime.month,\n year: dateTime.year\n });\n }\n\n function setTime(dateTime: DateTime | string | number | object | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n hour: dateTime.hour,\n minute: unref(isHourOnly) ? 0 : dateTime.minute,\n second: unref(isHourOnly) ? 0 : dateTime.second\n });\n }\n\n watch(() => isHourOnly, () => isHourOnly && (localValue.value = unref(localValue)?.startOf('hour') ?? null), {immediate: true});\n watch(modelValue, modelValue => localValue.value = isHourOnly ? modelValue?.startOf('hour') ?? null : modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISO() === localValue?.toISO()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <div :class=\"$style.formInputAddition\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"18\"/>\n\n <span v-if=\"label\">\n {{ label }}\n </span>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <fieldset\n :class=\"disabled ? $style.pinInputDisabled : $style.pinInputEnabled\"\n :id=\"id\"\n :style=\"{\n '--max-length': maxLength\n }\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n v-for=\"field of maxLength\"\n :key=\"field\"\n ref=\"fields\"\n :class=\"$style.pinInputField\"\n maxlength=\"1\"\n :autocomplete=\"field === 1 ? autoComplete : undefined\"\n :autofocus=\"field === 1 && autoFocus\"\n :disabled=\"disabled\"\n :tabindex=\"(field - 1) === modelValue?.length ? 0 : -1\"\n :type=\"isPrivate ? 'password' : 'text'\"\n :value=\"modelValue[field - 1]\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\"\n @paste=\"onPaste\"/>\n </fieldset>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef, unref, useTemplateRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoComplete = 'one-time-code',\n autoFocus = false,\n disabled: componentDisabled,\n maxLength = 6\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isPrivate?: boolean;\n readonly maxLength?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n\n const fieldRefs = useTemplateRef<HTMLInputElement[]>('fields');\n\n function onFocus(evt: FocusEvent): void {\n const input = evt.target as HTMLInputElement;\n requestAnimationFrame(() => input.select());\n }\n\n function onInput(): void {\n const fields = unref(fieldRefs) ?? [];\n const values = fields\n .map(f => f.value.trim() === '' ? NaN : Number(f.value))\n .filter(v => !isNaN(v));\n\n modelValue.value = values.join('');\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n const input = evt.target as HTMLInputElement;\n const value = input.value.trim();\n\n const next = input.nextElementSibling as HTMLInputElement | null;\n const previous = input.previousElementSibling as HTMLInputElement | null;\n\n switch (evt.key) {\n case 'Backspace':\n value === '' && previous?.focus();\n break;\n\n case 'ArrowLeft':\n case 'ArrowUp':\n input.selectionStart === 0 && previous?.select();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n (input.selectionStart === 1 || value === '') && next?.select();\n break;\n\n case 'Tab':\n break;\n\n case 'v':\n if (evt.ctrlKey || evt.metaKey) {\n break;\n }\n\n evt.preventDefault();\n break;\n\n default:\n if (isNaN(Number(evt.key))) {\n evt.preventDefault();\n break;\n }\n\n requestAnimationFrame(() => next?.focus());\n break;\n }\n }\n\n function onPaste(evt: ClipboardEvent): void {\n if (!evt.clipboardData) {\n return;\n }\n\n const value = evt.clipboardData.getData('text').replace(/\\D/g, '');\n\n if (value.length !== maxLength) {\n return;\n }\n\n modelValue.value = value;\n\n requestAnimationFrame(() => {\n const fields = unref(fieldRefs) ?? [];\n fields[maxLength - 1].focus();\n });\n }\n</script>\n","<template>\n <SliderBase\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower || isDraggingUpper\"\n :is-ticks-visible=\"isTicksVisible\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @dragging=\"onDragging\"\n @update=\"onUpdate\">\n <SliderTrack\n :percentage-lower=\"percentageLower\"\n :percentage-upper=\"percentageUpper\">\n <SliderThumb\n ref=\"lowerThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower\"\n :position=\"percentageLower\"\n @grab=\"!disabled && (isDraggingLower = true)\"\n @decrement=\"onDecrement('lower')\"\n @increment=\"onIncrement('lower')\"/>\n\n <SliderThumb\n ref=\"upperThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingUpper\"\n :position=\"percentageUpper\"\n @grab=\"!disabled && (isDraggingUpper = true)\"\n @decrement=\"onDecrement('upper')\"\n @increment=\"onIncrement('upper')\"/>\n </SliderTrack>\n </SliderBase>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clampWithStepPrecision, countDecimals, formatNumber } from '@basmilius/utils';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { addTooltip, removeTooltip, updateTooltip } from '$flux/data';\n import { SliderBase, SliderThumb, SliderTrack } from './primitive';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n formatter = formatNumber,\n disabled: componentDisabled,\n isTooltipDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n formatter?(value: number, decimals?: number): string;\n\n readonly disabled?: boolean;\n readonly isTicksVisible?: boolean;\n readonly isTooltipDisabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const lowerThumbRef = useTemplateRef('lowerThumb');\n const upperThumbRef = useTemplateRef('upperThumb');\n\n const isDraggingLower = ref(false);\n const isDraggingUpper = ref(false);\n const percentageLower = ref(0);\n const percentageUpper = ref(0);\n const lowerValue = ref(0);\n const upperValue = ref(0);\n const tooltipId = ref<number | null>(null);\n\n const tooltipContent = computed(() => formatter(modelValue.value[isDraggingLower.value ? 0 : 1], countDecimals(step)));\n\n function onDragging(is: boolean): void {\n if (is) {\n return;\n }\n\n isDraggingLower.value = is;\n isDraggingUpper.value = is;\n }\n\n function onUpdate(value: number): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (isDraggingLower.value) {\n lower = clampWithStepPrecision(value, min, max, step);\n }\n\n if (isDraggingUpper.value) {\n upper = clampWithStepPrecision(value, min, max, step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n if (tooltipId.value) {\n updateTooltip(tooltipId.value, {\n content: unref(tooltipContent),\n origin: unref(isDraggingLower.value ? lowerThumbRef : upperThumbRef)?.$el\n });\n }\n\n lowerValue.value = (lower - min) / (max - min);\n upperValue.value = (upper - min) / (max - min);\n }\n\n function onDecrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.max(min, lower - step);\n } else {\n upper = Math.max(min, upper - step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n function onIncrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.min(max, lower + step);\n } else {\n upper = Math.min(max, upper + step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n watch(modelValue, modelValue => {\n lowerValue.value = (modelValue[0] - min) / (max - min);\n upperValue.value = (modelValue[1] - min) / (max - min);\n }, {immediate: true});\n\n watch(([() => max, () => min, () => step, lowerValue, upperValue]), () => {\n const lower = clampWithStepPrecision(unref(lowerValue), min, max, step);\n const upper = clampWithStepPrecision(unref(upperValue), min, max, step);\n\n percentageLower.value = (lower - min) / (max - min);\n percentageUpper.value = (upper - min) / (max - min);\n\n modelValue.value = [lower, upper];\n }, {immediate: true});\n\n watch(([isDraggingLower, isDraggingUpper]), ([isDraggingLower, isDraggingUpper]) => {\n const is = isDraggingLower || isDraggingUpper;\n\n if (is && !tooltipId.value && !isTooltipDisabled) {\n tooltipId.value = addTooltip({\n content: unref(tooltipContent),\n direction: 'vertical',\n origin: unref(isDraggingLower ? lowerThumbRef : upperThumbRef)?.$el\n });\n } else if (!is && tooltipId.value) {\n removeTooltip(tooltipId.value);\n tooltipId.value = null;\n }\n });\n</script>\n","<template>\n <div :class=\"$style.formRow\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.formSection\">\n <div :class=\"$style.formSectionTitle\">\n {{ title }}\n </div>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <SelectBase\n v-model:search-query=\"modelSearch\"\n :disabled=\"disabled\"\n :is-loading=\"isLoading\"\n :is-multiple=\"isMultiple\"\n is-searchable\n :options=\"groups\"\n :placeholder=\"placeholder\"\n :selected=\"selected\"\n @deselect=\"onDeselect\"\n @open=\"onOpen()\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFormSelectEntry, FluxFormSelectValue, FluxFormSelectValueSingle } from '@flux-ui/types';\n import { computed, ref, toRef, unref, watch } from 'vue';\n import { SelectBase } from '$flux/component/primitive';\n import { useDisabled } from '$flux/composable';\n import { useFormSelect, useLoaded } from '$flux/composable/private';\n import { isFluxFormSelectOption } from '$flux/data';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const modelValue = defineModel<FluxFormSelectValue>({\n required: true\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n fetchOptions(ids: FluxFormSelectValueSingle[]): Promise<FluxFormSelectEntry[]>;\n fetchRelevant(): Promise<FluxFormSelectEntry[]>;\n fetchSearch(searchQuery: string): Promise<FluxFormSelectEntry[]>;\n\n readonly disabled?: boolean;\n readonly isMultiple?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const selectedOptions = ref<FluxFormSelectEntry[]>([]);\n const visibleOptions = ref<FluxFormSelectEntry[]>([]);\n\n const options = computed(() => {\n const options: FluxFormSelectEntry[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFormSelectOption(so) && visible.find(vo => isFluxFormSelectOption(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFormSelectOption(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n const {groups, selected, values} = useFormSelect(modelValue, isMultiple, options);\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 300);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n function onDeselect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = unref(values).filter(v => v !== id);\n }\n }\n\n async function onOpen(): Promise<void> {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n\n function onSelect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = [...unref(values), id];\n } else {\n modelValue.value = id;\n }\n }\n\n watch(values, async values => {\n if (values.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(values);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n });\n</script>\n","<template>\n <textarea\n v-model=\"modelValue\"\n ref=\"input\"\n :class=\"disabled ? $style.formTextAreaDisabled : $style.formTextAreaEnabled\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :disabled=\"disabled\"\n :maxlength=\"maxLength\"\n :placeholder=\"placeholder\"\n :style=\"{\n '--rows': rows\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n @blur=\"emit('blur')\"\n @focus=\"emit('focus')\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n rows = 3\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly maxLength?: number;\n readonly placeholder?: string;\n readonly rows?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n</script>\n","<template>\n <FluxFormSelect\n v-model=\"modelValue\"\n :disabled=\"disabled\"\n is-searchable\n :options=\"options\"\n :placeholder=\"placeholder\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectEntry } from '@flux-ui/types';\n import { upperFirst } from 'lodash-es';\n import { computed, toRef } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import type { FluxTranslation } from '$flux/data';\n import FluxFormSelect from './FluxFormSelect.vue';\n\n const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Asmera',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Timbuktu',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/ComodRivadavia',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Atka',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Buenos_Aires',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Catamarca',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Ciudad_Juarez',\n 'America/Coral_Harbour',\n 'America/Cordoba',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Ensenada',\n 'America/Fort_Nelson',\n 'America/Fort_Wayne',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indianapolis',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Jujuy',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Knox_IN',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Louisville',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Mendoza',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montreal',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Nuuk',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Acre',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Rosario',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Shiprock',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Virgin',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/South_Pole',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Ashkhabad',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Calcutta',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Chongqing',\n 'Asia/Chungking',\n 'Asia/Colombo',\n 'Asia/Dacca',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Harbin',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Istanbul',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kashgar',\n 'Asia/Kathmandu',\n 'Asia/Katmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macao',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Saigon',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Tel_Aviv',\n 'Asia/Thimbu',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ujung_Pandang',\n 'Asia/Ulaanbaatar',\n 'Asia/Ulan_Bator',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faeroe',\n 'Atlantic/Faroe',\n 'Atlantic/Jan_Mayen',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/ACT',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Canberra',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/LHI',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/North',\n 'Australia/NSW',\n 'Australia/Perth',\n 'Australia/Queensland',\n 'Australia/South',\n 'Australia/Sydney',\n 'Australia/Tasmania',\n 'Australia/Victoria',\n 'Australia/West',\n 'Australia/Yancowinna',\n 'Brazil/Acre',\n 'Brazil/DeNoronha',\n 'Brazil/East',\n 'Brazil/West',\n 'Canada/Atlantic',\n 'Canada/Central',\n 'Canada/Eastern',\n 'Canada/Mountain',\n 'Canada/Newfoundland',\n 'Canada/Pacific',\n 'Canada/Saskatchewan',\n 'Canada/Yukon',\n 'CET',\n 'Chile/Continental',\n 'Chile/EasterIsland',\n 'CST6CDT',\n 'Cuba',\n 'EET',\n 'Egypt',\n 'Eire',\n 'EST',\n 'EST5EDT',\n 'Etc/GMT',\n 'Etc/GMT+0',\n 'Etc/GMT+1',\n 'Etc/GMT+10',\n 'Etc/GMT+11',\n 'Etc/GMT+12',\n 'Etc/GMT+2',\n 'Etc/GMT+3',\n 'Etc/GMT+4',\n 'Etc/GMT+5',\n 'Etc/GMT+6',\n 'Etc/GMT+7',\n 'Etc/GMT+8',\n 'Etc/GMT+9',\n 'Etc/GMT-0',\n 'Etc/GMT-1',\n 'Etc/GMT-10',\n 'Etc/GMT-11',\n 'Etc/GMT-12',\n 'Etc/GMT-13',\n 'Etc/GMT-14',\n 'Etc/GMT-2',\n 'Etc/GMT-3',\n 'Etc/GMT-4',\n 'Etc/GMT-5',\n 'Etc/GMT-6',\n 'Etc/GMT-7',\n 'Etc/GMT-8',\n 'Etc/GMT-9',\n 'Etc/GMT0',\n 'Etc/Greenwich',\n 'Etc/UCT',\n 'Etc/Universal',\n 'Etc/UTC',\n 'Etc/Zulu',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belfast',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Nicosia',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Tiraspol',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Factory',\n 'GB',\n 'GB-Eire',\n 'GMT',\n 'GMT+0',\n 'GMT-0',\n 'GMT0',\n 'Greenwich',\n 'Hongkong',\n 'HST',\n 'Iceland',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Iran',\n 'Israel',\n 'Jamaica',\n 'Japan',\n 'Kwajalein',\n 'Libya',\n 'MET',\n 'Mexico/BajaNorte',\n 'Mexico/BajaSur',\n 'Mexico/General',\n 'MST',\n 'MST7MDT',\n 'Navajo',\n 'NZ',\n 'NZ-CHAT',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Ponape',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Samoa',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Truk',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n 'Pacific/Yap',\n 'Poland',\n 'Portugal',\n 'PRC',\n 'PST8PDT',\n 'ROC',\n 'ROK',\n 'Singapore',\n 'Turkey',\n 'UCT',\n 'Universal',\n 'US/Alaska',\n 'US/Aleutian',\n 'US/Arizona',\n 'US/Central',\n 'US/East-Indiana',\n 'US/Eastern',\n 'US/Hawaii',\n 'US/Indiana-Starke',\n 'US/Michigan',\n 'US/Mountain',\n 'US/Pacific',\n 'US/Samoa',\n 'UTC',\n 'W-SU',\n 'WET',\n 'Zulu'\n ];\n\n const timeZoneGroupOrder: FluxTranslation[] = [\n 'flux.timezoneEurope',\n 'flux.timezoneAmerica',\n 'flux.timezoneUs',\n 'flux.timezoneAustralia',\n 'flux.timezoneCanada',\n 'flux.timezoneMexico',\n 'flux.timezoneAfrica',\n 'flux.timezoneAntarctica',\n 'flux.timezoneArctic',\n 'flux.timezoneAsia',\n 'flux.timezoneAtlantic',\n 'flux.timezoneBrazil',\n 'flux.timezoneChile',\n 'flux.timezoneEtc',\n 'flux.timezoneOther',\n 'flux.timezoneIndian',\n 'flux.timezonePacific'\n ];\n\n const modelValue = defineModel<string | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const translate = useTranslate();\n\n const options = computed<FluxFormSelectEntry[]>(() => {\n const groups: Record<string, FluxFormSelectEntry[]> = {};\n const options: FluxFormSelectEntry[] = [];\n\n for (const timeZone of timeZones) {\n const timeZoneOptions = Intl.DateTimeFormat(navigator.language, {timeZone}).resolvedOptions();\n const timeZoneOffset = new Intl.DateTimeFormat(navigator.language, {timeZone, timeZoneName: 'longOffset'}).formatToParts().find(p => p.type === 'timeZoneName')!.value.substring(3);\n const label = timeZoneOptions.timeZone\n .replaceAll('_', ' ')\n .replaceAll('/', ' / ');\n\n let group = 'flux.timezoneOther';\n\n if (label.includes('/')) {\n group = `flux.timezone${upperFirst(label.split('/')[0].trim().toLowerCase())}`;\n }\n\n groups[group] ??= [];\n\n if (groups[group].find(go => go.label === label)) {\n continue;\n }\n\n groups[group].push({\n command: timeZoneOffset,\n label: label,\n value: timeZone\n });\n }\n\n const sortedGroups = Object.fromEntries(\n Object.entries(groups)\n .sort(([a], [b]) => {\n const ai = timeZoneGroupOrder.indexOf(a as FluxTranslation);\n const bi = timeZoneGroupOrder.indexOf(b as FluxTranslation);\n\n if (ai > bi) {\n return 1;\n }\n\n if (bi > ai) {\n return -1;\n }\n\n return 0;\n })\n );\n\n for (const group in sortedGroups) {\n const groupOptions = sortedGroups[group].sort(({label: labelA}, {label: labelB}) => labelA.localeCompare(labelB));\n\n options.push({\n label: translate(group as FluxTranslation)\n });\n\n groupOptions.forEach(go => options.push(go));\n }\n\n return options;\n });\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.remove,\n isHidden && $style.isHidden\n )\"\n type=\"button\"\n @click=\"emit('click', $event)\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"16\"/>\n </button>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Remove.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n icon = 'xmark'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isHidden?: boolean;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.galleryItem\"\n @mouseenter.capture=\"isDeleteVisible = true\"\n @mouseout.capture=\"isDeleteVisible = false\">\n <FluxFocalPointImage\n :class=\"$style.galleryItemImage\"\n :focal-point=\"focalPoint\"\n :src=\"url\"/>\n\n <FluxRemove\n v-if=\"isDeletable\"\n :is-hidden=\"!isDeleteVisible\"\n tabindex=\"-1\"\n @click=\"emit('delete')\"/>\n\n <div\n v-if=\"isPending\"\n :class=\"$style.galleryItemLoader\">\n <FluxSpinner :size=\"24\"/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { ref } from 'vue';\n import FluxFocalPointImage from './FluxFocalPointImage.vue';\n import FluxRemove from './FluxRemove.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [];\n }>();\n\n const {\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly isDeletable?: boolean;\n readonly isPending?: boolean;\n readonly url: string;\n }>();\n\n const isDeleteVisible = ref(false);\n</script>\n","<template>\n <FluxDropZone\n :class=\"$style.gallery\"\n accept=\"image/*\"\n :disabled=\"!isEditable\"\n is-multiple\n placeholder-icon=\"image\"\n :placeholder-button=\"translate('flux.galleryPlaceholderButton')\"\n :placeholder-message=\"translate('flux.galleryPlaceholderMessage')\"\n :placeholder-title=\"translate('flux.galleryPlaceholderTitle')\"\n @select-multiple=\"onFilesSelected\">\n <template #default=\"{showPicker}\">\n <TransitionGroup\n :class=\"$style.galleryGrid\"\n :move-class=\"$style.galleryMove\"\n tag=\"div\">\n <template\n v-if=\"items\"\n v-for=\"(item, index) of items\">\n <FluxGalleryItem\n v-if=\"typeof item === 'string'\"\n :is-deletable=\"isEditable\"\n :key=\"item\"\n :url=\"item\"\n @delete=\"$emit('delete', index)\"/>\n\n <FluxGalleryItem\n v-else\n :is-deletable=\"isEditable\"\n :key=\"item.url\"\n :focal-point=\"item\"\n :url=\"item.url\"\n @delete=\"$emit('delete', index)\"/>\n </template>\n\n <slot/>\n\n <FluxGalleryItem\n v-for=\"item of pendingItems\"\n is-pending\n :key=\"item\"\n :url=\"item\"/>\n\n <button\n v-if=\"isEditable\"\n key=\"gallery-add\"\n :class=\"$style.galleryAdd\"\n type=\"button\"\n @click=\"showPicker()\">\n <FluxIcon name=\"plus\"/>\n </button>\n </TransitionGroup>\n </template>\n </FluxDropZone>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxDropZone from './FluxDropZone.vue';\n import FluxGalleryItem from './FluxGalleryItem.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [number];\n upload: [File[]];\n }>();\n\n defineProps<{\n readonly isEditable?: boolean;\n readonly items?: (string | (FluxFocalPointObject & { readonly url: string; }))[];\n readonly pendingItems?: string[];\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n function onFilesSelected(files: FileList): void {\n const images: File[] = [];\n\n for (let i = 0; i < files.length; ++i) {\n const file = files.item(i);\n\n if (!file || !file.type.startsWith('image/')) {\n continue;\n }\n\n images.push(file);\n }\n\n emit('upload', images);\n }\n</script>\n","<template>\n <div\n :class=\"$style.grid\"\n :style=\"{\n '--gap': `${gap}px`,\n '--columns': columns\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n const {\n columns = 12,\n gap = 30\n } = defineProps<{\n readonly columns?: number;\n readonly gap?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.gridColumn\"\n :style=\"{\n '--xs': xs ?? 12,\n '--sm': sm ?? xs ?? 12,\n '--md': md ?? sm ?? xs ?? 12,\n '--lg': lg ?? md ?? sm ?? xs ?? 12,\n '--xl': xl ?? lg ?? md ?? sm ?? xs ?? 12\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n defineProps<{\n readonly xs?: number;\n readonly sm?: number;\n readonly md?: number;\n readonly lg?: number;\n readonly xl?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.gridPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <path\n :d=\"`M.5 ${height}V.5H${width}`\"\n fill=\"none\"\n :stroke-dasharray=\"strokeDasharray\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n\n <svg\n v-if=\"squares\"\n style=\"overflow: visible;\">\n <rect\n v-for=\"[x, y] of squares\"\n :key=\"`${x}-${y}`\"\n :width=\"width - 1\"\n :height=\"height - 1\"\n :x=\"x * width\"\n :y=\"y * height\"\n stroke-width=\"0\"/>\n </svg>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useId } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 42,\n height = 42,\n strokeDasharray = 0,\n squares\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly strokeDasharray?: number | string;\n readonly squares?: Array<[x: number, y: number]>;\n }>();\n\n const id = useId();\n</script>\n","<template>\n <div :class=\"$style.info\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.infoIcon\"\n :name=\"icon\"/>\n\n <div :class=\"$style.infoBody\">\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Info.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"21\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"direction === 'horizontal' ? $style.legendHorizontal : $style.legendVertical\">\n <template v-for=\"item of items\">\n <span\n :class=\"$style.legendItem\"\n :style=\"{\n '--color': item.color\n }\">\n {{ item.label }}\n </span>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection, FluxLegendObject } from '@flux-ui/types';\n import $style from '$flux/css/component/Legend.module.scss';\n\n const {\n direction = 'horizontal'\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly items: FluxLegendObject[];\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading: icon, iconTrailing: 'arrow-right-long', isFilled, label, href, rel, target, to}\"\n :css-class=\"$style.linkButton\"\n :css-class-icon=\"$style.linkButtonIcon\"\n :css-class-label=\"$style.linkButtonLabel\"\n @click=\"emit('click', $event)\"\n @mouseenter=\"emit('mouseenter', $event)\"\n @mouseleave=\"emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots, FluxIconName } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <FluxMenuGroup :is-horizontal=\"isHorizontal\">\n <template v-for=\"item in items\">\n <component :is=\"item\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree } from '@flux-ui/internals';\n import { cloneVNode, computed, unref, VNode } from 'vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n\n const modelValue = defineModel<number>({\n required: true\n });\n\n const {\n mode = 'highlight'\n } = defineProps<{\n readonly isHorizontal?: boolean;\n readonly mode?: 'highlight' | 'select';\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const items = computed(() => flattenVNodeTree(slots.default())\n .map((item: VNode, index: number) => cloneVNode(item, {\n isHighlighted: mode === 'highlight' && unref(modelValue) === index,\n isSelectable: mode === 'select',\n isSelected: mode === 'select' && unref(modelValue) === index,\n onClick: () => modelValue.value = index\n })));\n</script>\n","<template>\n <div\n :class=\"$style.menuTitle\"\n role=\"presentation\">\n {{ title }}\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n color === 'gray' && $style.noticeGray,\n color === 'primary' && $style.noticePrimary,\n color === 'danger' && $style.noticeDanger,\n color === 'info' && $style.noticeInfo,\n color === 'success' && $style.noticeSuccess,\n color === 'warning' && $style.noticeWarning,\n isCenter && $style.isCenter,\n isFluid && $style.isFluid\n )\"\n role=\"alert\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.noticePrefix\"/>\n\n <FluxIcon\n v-if=\"icon && !isLoading\"\n :class=\"$style.noticePrefix\"\n :name=\"icon\"/>\n\n <div :class=\"$style.noticeBody\">\n <p\n v-if=\"title\"\n :class=\"$style.noticeTitle\">\n {{ title }}\n </p>\n <p\n v-if=\"message\"\n :class=\"$style.noticeMessage\">\n {{ message }}\n </p>\n <slot/>\n </div>\n\n <slot name=\"end\"/>\n\n <button\n v-if=\"isCloseable\"\n :class=\"$style.noticeClose\"\n type=\"button\"\n @click=\"emit('close')\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Notice.module.scss';\n\n const emit = defineEmits<{\n close: [];\n }>();\n\n const {\n color = 'gray'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly isCenter?: boolean;\n readonly isCloseable?: boolean;\n readonly isFluid?: boolean;\n readonly isLoading?: boolean;\n readonly message?: string;\n readonly title?: string;\n }>();\n\n defineSlots<{\n default(): any;\n end(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"6\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import type { FluxSize } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { defineComponent, PropType } from 'vue';\n import { FluxOverlayTransition } from '$flux/transition';\n import { createDialogRenderer } from '$flux/util';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n export default defineComponent({\n emits: ['close'],\n inheritAttrs: false,\n props: {\n isCloseable: {default: false, type: Boolean},\n size: {default: 'small', type: String as PropType<FluxSize>}\n },\n setup(props, {attrs, emit, slots}) {\n return createDialogRenderer(\n attrs,\n props,\n emit,\n slots,\n clsx(\n props.size === 'small' && $style.overlaySmall,\n props.size === 'medium' && $style.overlayMedium,\n props.size === 'large' && $style.overlayLarge\n ),\n FluxOverlayTransition\n );\n }\n });\n</script>\n","<template>\n <div :class=\"$style.paneDeck\">\n <FluxAutoGrid\n :gap=\"0\"\n :min-column-width=\"minColumnWidth\">\n <slot/>\n </FluxAutoGrid>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxAutoGrid from './FluxAutoGrid.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineProps<{\n readonly minColumnWidth: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneHeader\">\n <slot name=\"before\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.paneHeaderIcon\"\n :size=\"20\"\n :name=\"icon\"/>\n\n <div\n v-if=\"title || subTitle\"\n :class=\"$style.paneHeaderCaption\">\n <strong v-if=\"title\">\n {{ title }}\n </strong>\n\n <span v-if=\"subTitle\">\n {{ subTitle }}\n </span>\n </div>\n\n <slot name=\"after\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly subTitle?: string;\n readonly title?: string;\n }>();\n\n defineSlots<{\n after(): any;\n before(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"isMasked ? $style.paneIllustrationMasked : $style.paneIllustration\"\n :style=\"{\n aspectRatio\n }\">\n <div\n :class=\"$style.paneIllustrationMagic\"\n :style=\"{\n border: `1px solid ${borderColor}`\n }\">\n <FluxGridPattern :stroke-dasharray=\"3\"/>\n\n <FluxAnimatedColors\n :colors=\"animatedColors\"\n :opacity=\"animatedOpacity\"\n :seed=\"animatedSeed\"/>\n </div>\n\n <div\n v-if=\"slots.controlled\"\n :class=\"$style.paneIllustrationContentControlled\">\n <slot name=\"controlled\"/>\n </div>\n\n <div\n v-if=\"slots.default\"\n :class=\"$style.paneIllustrationContent\">\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { hexToRGB } from '@basmilius/utils';\n import { computed } from 'vue';\n import FluxAnimatedColors from './FluxAnimatedColors.vue';\n import FluxGridPattern from './FluxGridPattern.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const {\n animatedColors,\n aspectRatio = 16 / 9\n } = defineProps<{\n readonly animatedColors: string[];\n readonly animatedOpacity?: number;\n readonly animatedSeed?: number;\n readonly aspectRatio?: number;\n readonly isMasked?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n controlled?(): any;\n }>();\n\n const borderColor = computed(() => {\n if (!animatedColors || animatedColors.length === 0) {\n return 'transparent';\n }\n\n const [r, g, b] = hexToRGB(animatedColors[0]);\n\n return `rgb(${r} ${g} ${b} / .15)`;\n });\n</script>\n","<template>\n <div :class=\"isInset ? $style.paneMediaInset : $style.paneMedia\">\n <img\n v-if=\"imageUrl\"\n :class=\"$style.paneMediaImage\"\n :style=\"{\n objectPosition: `${focalPointX}% ${focalPointY}%`\n }\"\n :src=\"imageUrl\"\n :alt=\"imageAlt\">\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed } from 'vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const {\n imageFocalPoint\n } = defineProps<{\n readonly imageAlt?: string;\n readonly imageFocalPoint?: [number, number];\n readonly imageUrl?: string;\n readonly isInset?: boolean;\n }>();\n\n const focalPointX = computed(() => imageFocalPoint?.[0] ?? 50);\n const focalPointY = computed(() => imageFocalPoint?.[1] ?? 50);\n</script>\n","<template>\n <div :class=\"$style.percentageBar\">\n <div :class=\"$style.percentageBarTrack\">\n <FluxTooltip v-for=\"item of items\">\n <template #content>\n <div :class=\"$style.percentageBarTooltip\">\n <FluxIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n :size=\"16\"/>\n\n <span>{{ formatPercentage(item.value) }} {{ item.label }}</span>\n </div>\n </template>\n\n <div\n :class=\"$style.percentageBarSegment\"\n :style=\"{\n backgroundColor: item.color,\n flexGrow: item.value\n }\"/>\n </FluxTooltip>\n </div>\n\n <FluxLegend\n v-if=\"isLegendVisible\"\n :items=\"items\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { formatPercentage } from '@basmilius/utils';\n import type { FluxPercentageBarItemObject } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import FluxLegend from './FluxLegend.vue';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/PercentageBar.module.scss';\n\n defineProps<{\n readonly isLegendVisible?: boolean;\n readonly items: FluxPercentageBarItemObject[];\n }>();\n</script>\n","<template>\n <button\n :class=\"$style.persona\"\n type=\"button\"\n @click=\"$emit('click', $event)\">\n <FluxAvatar\n :alt=\"avatarAlt\"\n :fallback=\"avatarFallback\"\n :fallback-icon=\"avatarFallbackIcon\"\n :fallback-initials=\"avatarFallbackInitials\"\n :size=\"avatarSize\"\n :src=\"avatarSrc\"/>\n\n <template v-if=\"!isCompact\">\n <div :class=\"$style.personaDetails\">\n <strong>{{ name }}</strong>\n <span v-if=\"title\">{{ title }}</span>\n </div>\n </template>\n </button>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxAvatar from './FluxAvatar.vue';\n import $style from '$flux/css/component/Avatar.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n avatarFallback = 'colorized',\n avatarFallbackIcon = 'user'\n } = defineProps<{\n readonly avatarAlt?: string;\n readonly avatarFallback?: 'colorized' | 'neutral';\n readonly avatarFallbackIcon?: FluxIconName;\n readonly avatarFallbackInitials?: string;\n readonly avatarSize?: number;\n readonly avatarSrc?: string;\n readonly isCompact?: boolean;\n readonly name: string;\n readonly title?: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.placeholder,\n isButton && $style.isButton,\n variant === 'extended' && $style.isExtended,\n variant === 'simple' && $style.isSimple,\n variant === 'small' && $style.isSmall\n )\"\n role=\"presentation\"\n @click=\"onClick\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.placeholderIcon\"\n :name=\"icon\"/>\n\n <div :class=\"$style.placeholderCaption\">\n <strong v-if=\"title\">\n {{ title }}\n </strong>\n\n <p v-if=\"message\">\n {{ message }}\n </p>\n </div>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Placeholder.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n variant = 'extended'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isButton?: boolean;\n readonly message?: string;\n readonly title?: string;\n readonly variant?: 'extended' | 'simple' | 'small';\n }>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n</script>\n","<template>\n <FluxStack\n :class=\"$style.progressBar\"\n :gap=\"6\"\n role=\"progressbar\"\n :aria-valuenow=\"value\"\n :aria-valuemax=\"max\"\n :aria-valuemin=\"min\">\n <div :class=\"isIndeterminate ? $style.progressBarTrackIndeterminate : $style.progressBarTrack\">\n <div\n :class=\"$style.progressBarValue\"\n :style=\"{\n width: `${isIndeterminate ? 100 : position * 100}%`\n }\"/>\n </div>\n\n <div\n v-if=\"status\"\n :class=\"$style.progressBarInfo\">\n <FluxFadeTransition>\n <span\n :key=\"status\"\n :class=\"$style.progressBarStatus\">\n {{ status }}\n </span>\n </FluxFadeTransition>\n\n <FluxFadeTransition>\n <span\n v-if=\"!isIndeterminate\"\n :class=\"$style.progressBarProgress\">\n {{ progress }}\n </span>\n </FluxFadeTransition>\n </div>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Progress.module.scss';\n\n const {\n isIndeterminate,\n max = 1,\n min = 0,\n value\n } = defineProps<{\n readonly isIndeterminate?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly status?: string;\n readonly value?: number;\n }>();\n\n const position = computed(() => {\n if (isIndeterminate) {\n return 0;\n }\n\n return ((value ?? min) - min) / (max - min);\n });\n\n const progress = computed(() => new Intl\n .NumberFormat(navigator.language, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n })\n .format(unref(position) ?? 0));\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconTrailing, isFilled, isLoading, label, size, to}\"\n :class=\"clsx(\n !isDone && !isLoading && $style.isIdle,\n isDone && $style.isDone,\n isLoading && $style.isLoading\n )\"\n :css-class=\"$style.publishButton\"\n :css-class-icon=\"$style.publishButtonIcon\"\n :css-class-label=\"$style.publishButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template #iconLeading>\n <div :class=\"$style.publishButtonAnimation\">\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <svg\n :class=\"$style.publishButtonAnimation\"\n viewBox=\"0 0 512 512\">\n <path\n :class=\"$style.publishButtonAnimationCircle\"\n d=\"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256 114.6 0 256 0s256 114.6 256 256ZM256 48C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationArrow\"\n d=\"M272.9 135.7c-4.6-4.9-11-7.7-17.7-7.7-7.7.3-14.1 2.9-17.7 7.8l-87.25 96a23.86 23.86 0 0 0-4.15 25.9c3.8 8.7 12.4 14.3 21 14.3h56l.9 88a24 24 0 0 0 24 24h16c13.25 0 23.1-10.75 23.1-24v-88h56c9.53 0 18.16-5.66 22-14.38a24.03 24.03 0 0 0-4.38-25.91L272.9 135.7Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationCheck\"\n d=\"M243.8 339.8a28.07 28.07 0 0 1-39.6 0l-64-64a28.07 28.07 0 0 1 0-39.6 28.07 28.07 0 0 1 39.6 0l44.2 44.2 108.2-108.2a28.07 28.07 0 0 1 39.6 0 28.07 28.07 0 0 1 0 39.6l-128 128Z\"/>\n </svg>\n </div>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxButton from './FluxButton.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading'> & {\n readonly isDone?: boolean;\n }>();\n</script>\n","<template>\n <FluxButtonGroup\n :class=\"$style.quantitySelector\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue <= min\"\n icon-leading=\"minus\"\n tabindex=\"-1\"\n @click=\"decrement\"/>\n\n <input\n ref=\"input\"\n v-model=\"modelValue\"\n :class=\"$style.quantitySelectorInput\"\n :style=\"{\n width: `${width}px`\n }\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n type=\"number\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"/>\n\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue >= max\"\n icon-leading=\"plus\"\n tabindex=\"-1\"\n @click=\"increment\"/>\n </FluxButtonGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { ref, toRef, unref, useTemplateRef, watchEffect } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const {\n disabled: componentDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n readonly disabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef('input');\n\n const width = ref(0);\n\n function decrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.max(min, unref(modelValue) - step);\n }\n\n function increment(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.min(max, unref(modelValue) + step);\n }\n\n function sizeToContent(): void {\n const input = unrefTemplateElement<HTMLInputElement>(inputRef);\n\n if (!input || isNaN(input.valueAsNumber)) {\n return;\n }\n\n width.value = 0;\n\n requestAnimationFrame(() => {\n width.value = Math.max(51, input.scrollWidth + 30);\n });\n }\n\n watchEffect(() => {\n if (unref(modelValue) > max) {\n increment();\n return;\n }\n\n if (unref(modelValue) < min) {\n decrement();\n return;\n }\n\n sizeToContent();\n });\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"alert.icon\"\n :title=\"alert.title\"/>\n\n <FluxPaneBody v-html=\"alert.message\"/>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxPrimaryButton\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"alert.onClose()\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAlertObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n defineProps<{\n readonly alert: FluxAlertObject;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"confirm.icon\"\n :title=\"confirm.title\"/>\n\n <FluxPaneBody v-html=\"confirm.message\"/>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxSecondaryButton\n :label=\"translate('flux.cancel')\"\n @click=\"confirm.onCancel()\"/>\n\n <FluxPrimaryButton\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"confirm.onConfirm()\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxConfirmObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n defineProps<{\n readonly confirm: FluxConfirmObject;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"prompt.icon\"\n :title=\"prompt.title\"/>\n\n <FluxPaneBody v-html=\"prompt.message\"/>\n\n <FluxPaneBody>\n <FluxFormField :label=\"prompt.fieldLabel\">\n <FluxFormInput\n ref=\"input\"\n v-model=\"value\"\n :placeholder=\"prompt.fieldPlaceholder\"\n :type=\"prompt.fieldType ?? 'text'\"\n @keydown=\"onKeyDown\"/>\n </FluxFormField>\n </FluxPaneBody>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxSecondaryButton\n :label=\"translate('flux.cancel')\"\n @click=\"prompt.onCancel()\"/>\n\n <FluxPrimaryButton\n :disabled=\"!hasValue\"\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"prompt.onConfirm(value)\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPromptObject } from '@flux-ui/types';\n import { computed, onMounted, ref, unref, useTemplateRef } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n const {\n prompt\n } = defineProps<{\n readonly prompt: FluxPromptObject;\n }>();\n\n const inputRef = useTemplateRef('input');\n const translate = useTranslate();\n\n const value = ref('');\n\n const hasValue = computed(() => unref(value).trim().length > 0);\n\n onMounted(() => {\n const input = unref(inputRef);\n requestAnimationFrame(() => input?.$el.querySelector('input')?.focus());\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (!unref(hasValue) || evt.key !== 'Enter') {\n return;\n }\n\n prompt.onConfirm(unref(value));\n }\n</script>\n","<template>\n <div\n v-if=\"isRendered\"\n :class=\"clsx(\n color === 'gray' && $style.snackbarGray,\n color === 'primary' && $style.snackbarPrimary,\n color === 'danger' && $style.snackbarDanger,\n color === 'info' && $style.snackbarInfo,\n color === 'success' && $style.snackbarSuccess,\n color === 'warning' && $style.snackbarWarning\n )\">\n <div :class=\"$style.snackbarContent\">\n <FluxSpinner\n v-if=\"isLoading\"\n :size=\"18\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :size=\"18\"\n :name=\"icon\"/>\n\n <div :class=\"$style.snackbarBody\">\n <div\n v-if=\"title\"\n :class=\"$style.snackbarTitle\">\n {{ title }}\n </div>\n\n <div\n v-if=\"message\"\n :class=\"$style.snackbarMessage\">\n {{ message }}\n </div>\n\n <FluxProgressBar\n v-if=\"progressIndeterminate || progressValue\"\n :is-indeterminate=\"progressIndeterminate\"\n :max=\"progressMax\"\n :min=\"progressMin\"\n :status=\"progressStatus\"\n :value=\"progressValue\"/>\n\n <div\n v-if=\"subMessage\"\n :class=\"$style.snackbarSubMessage\">\n {{ subMessage }}\n </div>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n :class=\"$style.snackbarActions\">\n <button\n v-for=\"(actionLabel, actionKey) of actions\"\n :key=\"actionKey\"\n :class=\"$style.snackbarAction\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"onAction(actionKey)\">\n <span>{{ actionLabel }}</span>\n </button>\n </div>\n\n <FluxAction\n v-if=\"isCloseable\"\n icon=\"xmark\"\n @click=\"onClose()\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName, FluxSnackbarObject } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed, getCurrentInstance, onBeforeUnmount, ref, watch, watchEffect } from 'vue';\n import { addSnackbar, removeSnackbar, updateSnackbar } from '$flux/data';\n import FluxAction from './FluxAction.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxProgressBar from './FluxProgressBar.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Snackbar.module.scss';\n\n const emit = defineEmits<{\n action: [string];\n close: [];\n }>();\n\n const {\n actions,\n color = 'gray',\n isRendered\n } = defineProps<{\n readonly actions?: Record<string, string>;\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly isCloseable?: boolean;\n readonly isLoading?: boolean;\n readonly isRendered?: boolean;\n readonly message?: string;\n readonly progressIndeterminate?: boolean;\n readonly progressMax?: number;\n readonly progressMin?: number;\n readonly progressStatus?: string;\n readonly progressValue?: number;\n readonly subMessage?: string;\n readonly title?: string;\n }>();\n\n const instance = getCurrentInstance()!;\n\n const id = ref<number | null>(null);\n\n const hasActions = computed(() => actions && Object.entries(actions).length > 0);\n\n onBeforeUnmount(() => {\n if (id.value) {\n removeSnackbar(id.value);\n }\n });\n\n function onAction(actionKey: string): void {\n emit('action', actionKey);\n }\n\n function onClose(): void {\n emit('close');\n }\n\n watchEffect(() => {\n if (!id.value) {\n return;\n }\n\n updateSnackbar(id.value, instance.props);\n });\n\n watch(() => isRendered, () => {\n if (isRendered) {\n if (id.value) {\n removeSnackbar(id.value);\n }\n\n return;\n }\n\n let spec: Omit<FluxSnackbarObject, 'id'> = instance.props;\n spec.onAction = onAction;\n spec.onClose = onClose;\n\n id.value = addSnackbar(spec);\n }, {immediate: true});\n</script>\n","<template>\n <TransitionGroup\n name=\"flux-snackbars\"\n tag=\"div\"\n :class=\"$style.snackbars\"\n :enter-active-class=\"$style.snackbarsEnterActive\"\n :enter-from-class=\"$style.snackbarsEnterFrom\"\n :leave-active-class=\"$style.snackbarsLeaveActive\"\n :leave-to-class=\"$style.snackbarsLeaveTo\"\n :move-class=\"$style.snackbarsMove\">\n <FluxSnackbar\n v-for=\"snackbar of snackbars.toReversed()\"\n :key=\"snackbar.id\"\n :=\"snackbar\"\n is-rendered\n @action=\"onAction(snackbar)\"\n @close=\"() => snackbar.onClose?.()\"/>\n </TransitionGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxSnackbarObject } from '@flux-ui/types';\n import { useFluxStore } from '$flux/data';\n import FluxSnackbar from './FluxSnackbar.vue';\n import $style from '$flux/css/component/Snackbar.module.scss';\n\n const {snackbars} = useFluxStore();\n\n function onAction(snackbar: FluxSnackbarObject): (actionKey: string) => void {\n return actionKey => snackbar.onAction?.(actionKey);\n }\n</script>\n","<script lang=\"ts\">\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { computed, defineComponent, h, ref, unref, watch } from 'vue';\n import { useFluxStore } from '$flux/data';\n import { FluxTooltipTransition } from '$flux/transition';\n import $style from '$flux/css/component/Tooltip.module.scss';\n\n type Transition = 'above' | 'below' | 'end' | 'start';\n\n type PositionData = {\n readonly x: number;\n readonly y: number;\n readonly arrowAngle: string;\n readonly arrowX: string;\n readonly arrowY: string;\n readonly transition: Transition;\n };\n\n export default defineComponent(() => {\n const {tooltip} = useFluxStore();\n\n const elementRef = ref<HTMLElement | null>(null);\n const position = ref<PositionData | null>(null);\n\n const content = computed(() => unref(tooltip) ? unref(tooltip)!.contentSlot?.() ?? [unref(tooltip)!.content] : null);\n const has = computed(() => !!unref(tooltip));\n\n function calculate(): void {\n const element = unrefTemplateElement(elementRef);\n const spec = unref(tooltip);\n\n if (!spec || !element || !unref(content)) {\n position.value = null;\n return;\n }\n\n const {direction, origin} = spec;\n const margin = 9;\n const safeZone = 15;\n\n if (!origin) {\n position.value = null;\n return;\n }\n\n let {width, height} = element.getBoundingClientRect();\n const {scale} = getComputedStyle(element);\n const {top, left, width: originWidth, height: originHeight} = origin.getBoundingClientRect();\n\n let s = Number(scale ?? 1);\n s = isNaN(s) ? 1 : s;\n height /= s;\n width /= s;\n\n if (direction === 'horizontal') {\n position.value = calculateHorizontalPosition(top, left, width, height, originWidth, originHeight, margin, safeZone);\n } else {\n position.value = calculateVerticalPosition(top, left, width, height, originWidth, originHeight, margin, safeZone);\n }\n }\n\n watch(content, () => requestAnimationFrame(() => calculate()));\n\n return () => h(FluxTooltipTransition, {}, {\n default: () => {\n if (!unref(has)) {\n return;\n }\n\n const pos = unref(position);\n\n return h('div', {\n ref: elementRef,\n class: pos\n ? clsx(\n pos.transition === 'above' && $style.tooltipAbove,\n pos.transition === 'below' && $style.tooltipBelow,\n pos.transition === 'end' && $style.tooltipEnd,\n pos.transition === 'start' && $style.tooltipStart\n )\n : $style.tooltip,\n style: {\n '--x': pos?.x ?? undefined,\n '--y': pos?.y ?? undefined,\n '--arrowAngle': pos?.arrowAngle ?? undefined,\n '--arrowX': pos?.arrowX ?? undefined,\n '--arrowY': pos?.arrowY ?? undefined\n }\n }, unref(content));\n }\n });\n });\n\n function calculateHorizontalPosition(top: number, left: number, width: number, height: number, originWidth: number, originHeight: number, margin: number, safeZone: number): PositionData {\n let x, y, arrowAngle, arrowX, arrowY, transition: Transition;\n\n if (left > innerWidth / 2) {\n x = left - width - margin;\n y = top + originHeight / 2 - height / 2;\n arrowAngle = '315deg';\n arrowX = '100%';\n arrowY = '50%';\n transition = 'start';\n } else {\n x = left + originWidth + margin;\n y = top + originHeight / 2 - height / 2;\n arrowAngle = '135deg';\n arrowX = '0';\n arrowY = '50%';\n transition = 'end';\n }\n\n if (y + height > innerHeight - safeZone) {\n const diff = Math.min(y, innerHeight - height - safeZone) - y;\n arrowY = `calc(50% - ${diff}px)`;\n y += diff;\n }\n\n if (y < safeZone) {\n const diff = Math.max(y, safeZone) - y;\n arrowY = `calc(50% - ${diff}px)`;\n y += diff;\n }\n\n return {\n x: Math.round(x),\n y: Math.round(y),\n arrowAngle,\n arrowX,\n arrowY,\n transition\n };\n }\n\n function calculateVerticalPosition(top: number, left: number, width: number, height: number, originWidth: number, originHeight: number, margin: number, safeZone: number): PositionData {\n let x, y, arrowAngle, arrowX, arrowY, transition: Transition;\n\n if (top > 300) {\n x = left + originWidth / 2 - width / 2;\n y = top - height - margin;\n arrowAngle = '45deg';\n arrowX = '50%';\n arrowY = '100%';\n transition = 'above';\n } else {\n x = left + originWidth / 2 - width / 2;\n y = top + originHeight + margin;\n arrowAngle = '225deg';\n arrowX = '50%';\n arrowY = '0';\n transition = 'below';\n }\n\n if (x + width > innerWidth - safeZone) {\n const diff = Math.min(x, innerWidth - width - safeZone) - x;\n arrowX = `calc(50% - ${diff}px)`;\n x += diff;\n }\n\n if (x < safeZone) {\n const diff = Math.max(x, safeZone) - x;\n arrowX = `calc(50% - ${diff}px)`;\n x += diff;\n }\n\n return {\n x: Math.round(x),\n y: Math.round(y),\n arrowAngle,\n arrowX,\n arrowY,\n transition\n };\n }\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n :class=\"$style.root\"\n :inert=\"inertMain\">\n <slot/>\n </div>\n\n <FluxOverlay size=\"medium\">\n <FluxAlert\n v-for=\"alert of alerts\"\n :key=\"alert.id\"\n :alert=\"alert\"/>\n </FluxOverlay>\n\n <FluxOverlay size=\"medium\">\n <FluxConfirm\n v-for=\"confirm of confirms\"\n :key=\"confirm.id\"\n :confirm=\"confirm\"/>\n </FluxOverlay>\n\n <FluxOverlay size=\"medium\">\n <FluxPrompt\n v-for=\"prompt of prompts\"\n :key=\"prompt.id\"\n :prompt=\"prompt\"/>\n </FluxOverlay>\n\n <FluxSnackbarProvider/>\n <FluxTooltipProvider/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { watch } from 'vue';\n import { useFluxStore } from '$flux/data';\n import FluxAlert from './FluxAlert.vue';\n import FluxConfirm from './FluxConfirm.vue';\n import FluxPrompt from './FluxPrompt.vue';\n import FluxOverlay from './FluxOverlay.vue';\n import FluxSnackbarProvider from './FluxSnackbarProvider.vue';\n import FluxTooltipProvider from './FluxTooltipProvider.vue';\n import $style from '$flux/css/component/Root.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineSlots<{\n default(): any;\n }>();\n\n const {alerts, confirms, inertMain, prompts} = useFluxStore();\n\n watch(inertMain, (inert, _, onCleanup): void => {\n if (!inert) {\n return;\n }\n\n document.body.classList.add($style.isLocked);\n onCleanup(() => document.body.classList.remove($style.isLocked));\n }, {immediate: true});\n</script>\n","<template>\n <nav\n ref=\"control\"\n :class=\"isFill ? $style.segmentedControlFill : $style.segmentedControlInline\">\n <div\n v-if=\"activeItemWidth > 0\"\n :class=\"$style.segmentedControlHighlight\"\n :style=\"{\n left: `${activeItemX}px`,\n width: `${activeItemWidth}px`\n }\"/>\n\n <template v-for=\"(item, index) of items\">\n <div\n v-if=\"index > 0\"\n :class=\"clsx(\n $style.segmentedControlSeparator,\n (index === modelValue || index === modelValue + 1) && $style.isActive\n )\"\n role=\"separator\"/>\n\n <button\n ref=\"items\"\n :class=\"clsx(\n $style.segmentedControlItem,\n index === modelValue && $style.isActive\n )\"\n type=\"button\"\n @click=\"activate(index)\">\n <FluxIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n :size=\"15\"/>\n\n <span>{{ item.label }}</span>\n </button>\n </template>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxSegmentedControlItemObject } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { onMounted, onUpdated, ref, unref, useTemplateRef } from 'vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/SegmentedControl.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n defineProps<{\n readonly isFill?: boolean;\n readonly items: FluxSegmentedControlItemObject[];\n }>();\n\n const controlRef = useTemplateRef<HTMLElement>('control');\n const itemRefs = useTemplateRef<HTMLButtonElement[]>('items');\n\n const activeItemX = ref(0);\n const activeItemWidth = ref(0);\n\n onMounted(() => activate(unref(modelValue)));\n onUpdated(() => activate(unref(modelValue)));\n\n function activate(index: number): void {\n const itemRef = itemRefs.value![index];\n const {left: controlX} = controlRef.value!.getBoundingClientRect();\n const {width, left: x} = itemRef.getBoundingClientRect();\n\n activeItemX.value = x - controlX - 1;\n activeItemWidth.value = width;\n modelValue.value = index;\n }\n</script>\n","<script lang=\"ts\">\n import { defineComponent } from 'vue';\n\n export default defineComponent({\n props: {\n index: Number\n },\n setup(props, {slots}) {\n return () => {\n const items = slots.default!();\n return items[props.index!];\n };\n }\n });\n</script>\n","<script lang=\"ts\">\n import { defineComponent } from 'vue';\n import { FluxSlideOverTransition } from '$flux/transition';\n import { createDialogRenderer } from '$flux/util';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n export default defineComponent({\n emits: ['close'],\n inheritAttrs: false,\n props: {\n isCloseable: {default: false, type: Boolean},\n viewKey: {default: null, type: String}\n },\n setup(props, {attrs, emit, slots}) {\n return createDialogRenderer(\n attrs,\n props,\n emit,\n slots,\n $style.slideOver,\n FluxSlideOverTransition\n );\n }\n });\n</script>\n","<template>\n <div :style=\"{flex: `0 0 ${spacings[size]}px`}\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n const spacings = [\n 0,\n 3,\n 6,\n 9,\n 12,\n 15,\n 18,\n 24,\n 30,\n 36,\n 42,\n 48,\n 54,\n 60,\n 72,\n 84,\n 90,\n 120\n ] as const;\n\n defineProps<{\n readonly size: keyof typeof spacings;\n }>();\n</script>\n","<template>\n <FluxFlyout\n :direction=\"flyoutDirection\"\n :is-auto-width=\"flyoutIsAutoWidth\"\n :margin=\"flyoutMargin\"\n :width=\"flyoutWidth\">\n <template #opener=\"{close, open, toggle}\">\n <div :class=\"$style.buttonGroup\">\n <slot\n v-bind=\"{close, open, toggle}\"\n name=\"button\"/>\n\n <FluxSecondaryButton\n :icon-leading=\"buttonIcon\"\n @click=\"open\"/>\n </div>\n </template>\n\n <template #default=\"bindings\">\n <slot\n v-bind=\"bindings\"\n name=\"flyout\"/>\n </template>\n </FluxFlyout>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxDirection, FluxIconName } from '@flux-ui/types';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n const {\n buttonIcon = 'ellipsis-h'\n } = defineProps<{\n readonly buttonIcon?: FluxIconName;\n readonly flyoutDirection?: FluxDirection;\n readonly flyoutIsAutoWidth?: boolean;\n readonly flyoutMargin?: number;\n readonly flyoutWidth?: number | string;\n }>();\n\n defineSlots<{\n button(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n\n flyout(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n }>();\n</script>\n","<template>\n <FluxPane\n :class=\"clsx(\n direction === 'horizontal' && $style.statisticHorizontal,\n direction === 'vertical' && $style.statisticVertical,\n color === 'gray' && $style.isGray,\n color === 'primary' && $style.isPrimary,\n color === 'danger' && $style.isDanger,\n color === 'info' && $style.isInfo,\n color === 'success' && $style.isSuccess,\n color === 'warning' && $style.isWarning\n )\">\n <div :class=\"$style.statisticIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"24\"/>\n </div>\n\n <div :class=\"$style.statisticData\">\n <span>{{ label }}</span>\n <strong>{{ value }}</strong>\n </div>\n\n <div\n v-if=\"changeIcon || changeValue\"\n :class=\"clsx(\n $style.statisticChange,\n changeColor === 'gray' && $style.isGray,\n changeColor === 'primary' && $style.isPrimary,\n changeColor === 'danger' && $style.isDanger,\n changeColor === 'info' && $style.isInfo,\n changeColor === 'success' && $style.isSuccess,\n changeColor === 'warning' && $style.isWarning\n )\">\n <span v-if=\"changeValue\">{{ changeValue }}</span>\n\n <FluxIcon\n v-if=\"changeIcon\"\n :name=\"changeIcon\"\n :size=\"14\"/>\n </div>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxDirection, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPane from './FluxPane.vue';\n import $style from '$flux/css/component/Statistic.module.scss';\n\n const {\n changeColor = 'gray',\n color = 'gray',\n direction = 'horizontal'\n } = defineProps<{\n readonly changeColor?: FluxColor;\n readonly changeIcon?: FluxIconName;\n readonly changeValue?: string;\n readonly color?: FluxColor;\n readonly direction?: FluxDirection;\n readonly icon: FluxIconName;\n readonly label: string;\n readonly value: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.stepperSteps\"\n :style=\"{\n '--progress': progress\n }\">\n <template\n v-for=\"step of amount\"\n :key=\"step\">\n <button\n :class=\"clsx(\n $style.stepperStepsItem,\n current > step && $style.stepperStepsItemComplete,\n current === step && $style.stepperStepsItemCurrent,\n current < step && $style.stepperStepsItemIdle\n )\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"activate(step - 1)\">\n <span :class=\"$style.stepperStepsItemParticles\"/>\n\n <FluxFadeTransition>\n <FluxIcon\n v-if=\"current > step\"\n name=\"check\"/>\n\n <span v-else>\n {{ step }}\n </span>\n </FluxFadeTransition>\n </button>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Stepper.module.scss';\n\n const emit = defineEmits<{\n activate: [number];\n }>();\n\n const {\n amount,\n current\n } = defineProps<{\n readonly amount: number;\n readonly current: number;\n }>();\n\n const progress = computed(() => (current - 1) / (amount - 1));\n\n function activate(index: number): void {\n emit('activate', index);\n }\n</script>\n","<template>\n <slot\n v-bind=\"{activate, modelValue, steps}\"\n name=\"steps\">\n <FluxStepperSteps\n :amount=\"steps\"\n :current=\"modelValue + 1\"\n @activate=\"activate\"/>\n </slot>\n\n <slot\n v-bind=\"{activate, modelValue, children, isTransitioningBack, steps, view}\"\n name=\"content\">\n <FluxWindowTransition :is-back=\"isTransitioningBack\">\n <FluxDynamicView\n :key=\"modelValue\"\n :vnode=\"view\"/>\n </FluxWindowTransition>\n </slot>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree } from '@flux-ui/internals';\n import { computed, ref, unref, VNode, watch } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n import FluxDynamicView from './FluxDynamicView.vue';\n import FluxStepperSteps from './FluxStepperSteps.vue';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const slots = defineSlots<{\n default(): any;\n\n content(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly isTransitioningBack: boolean;\n readonly modelValue: number;\n readonly steps: number;\n readonly view: VNode;\n }): any;\n\n steps(props: {\n activate(index: number): void;\n\n readonly modelValue: number;\n readonly steps: number;\n }): any;\n }>();\n\n const isTransitioningBack = ref(false);\n\n const children = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const steps = computed(() => unref(children).length);\n const view = computed(() => unref(children)[unref(modelValue)] ?? null);\n\n function activate(index: number): void {\n modelValue.value = index;\n }\n\n watch(modelValue, (newIndex, oldIndex) => {\n isTransitioningBack.value = newIndex < oldIndex;\n });\n</script>\n","<template>\n <div :class=\"$style.stepperStep\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Stepper.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.tab\"\n role=\"tabpanel\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import $style from '$flux/css/component/Tab.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <nav\n :class=\"$style.tabBar\"\n role=\"tablist\"\n aria-orientation=\"horizontal\">\n <FluxFadeTransition>\n <button\n v-if=\"isStartArrowVisible\"\n :class=\"$style.tabBarArrowStart\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"scrollToStart\">\n <FluxIcon name=\"angle-left\"/>\n </button>\n </FluxFadeTransition>\n\n <div\n ref=\"tabBar\"\n :class=\"clsx(\n $style.tabBarTabs,\n isEndArrowVisible && $style.isEndMasked,\n isStartArrowVisible && $style.isStartMasked\n )\">\n <slot/>\n </div>\n\n <FluxFadeTransition>\n <button\n v-if=\"isEndArrowVisible\"\n :class=\"$style.tabBarArrowEnd\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"scrollToEnd\">\n <FluxIcon name=\"angle-right\"/>\n </button>\n </FluxFadeTransition>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useEventListener, useMutationObserver } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { onMounted, ref, useTemplateRef } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n\n const tabBarRef = useTemplateRef('tabBar');\n\n useEventListener(tabBarRef, 'scroll', () => checkScroll());\n useMutationObserver(tabBarRef, () => checkScroll(), {childList: true});\n\n const isEndArrowVisible = ref(false);\n const isStartArrowVisible = ref(false);\n\n onMounted(() => checkScroll());\n\n function checkScroll(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n\n if (tabBar.scrollWidth <= tabBar.offsetWidth) {\n isEndArrowVisible.value = false;\n isStartArrowVisible.value = false;\n return;\n }\n\n isEndArrowVisible.value = tabBar.scrollLeft < tabBar.scrollWidth - tabBar.offsetWidth;\n isStartArrowVisible.value = tabBar.scrollLeft > 0;\n }\n\n function scrollToEnd(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n tabBar.scrollBy({\n behavior: 'smooth',\n left: tabBar.offsetWidth / 1.5\n });\n }\n\n function scrollToStart(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n tabBar.scrollBy({\n behavior: 'smooth',\n left: tabBar.offsetWidth / -1.5\n });\n }\n</script>\n","<template>\n <FluxPressable\n ref=\"tab\"\n :component-type=\"type\"\n :class=\"isActive ? $style.tabBarItemActive : $style.tabBarItem\"\n type=\"button\"\n role=\"tab\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-selected=\"isActive\"\n :disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span v-if=\"label\">{{ label }}</span>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { ComponentPublicInstance, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n mouseenter: [MouseEvent];\n mouseleave: [MouseEvent];\n }>();\n\n const {\n disabled: componentDisabled,\n isActive\n } = defineProps<{\n readonly type?: FluxPressableType;\n readonly disabled?: boolean;\n readonly icon?: FluxIconName;\n readonly isActive?: boolean;\n readonly label?: string;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const tabRef = useTemplateRef<ComponentPublicInstance>('tab');\n\n function onClick(evt: MouseEvent): void {\n if (unref(disabled)) {\n evt.preventDefault();\n evt.stopPropagation();\n return;\n }\n\n emit('click', evt);\n }\n\n function onMouseEnter(evt: MouseEvent): void {\n emit('mouseenter', evt);\n }\n\n function onMouseLeave(evt: MouseEvent): void {\n emit('mouseleave', evt);\n }\n\n watch(() => isActive, () => {\n if (!isActive) {\n return;\n }\n\n const tab = unref(tabRef);\n\n if (!tab) {\n return;\n }\n\n const el = tab.$el;\n\n if (el.parentElement?.offsetWidth === el.parentElement?.scrollWidth) {\n return;\n }\n\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.tabs\">\n <slot\n v-bind=\"{children, modelValue, tabs, activate}\"\n name=\"tabs\">\n <FluxTabBar :class=\"$style.tabsBar\">\n <template\n v-for=\"(tab, index) of tabs\"\n :key=\"index\">\n <FluxTabBarItem\n :icon=\"tab.icon\"\n :is-active=\"modelValue === index\"\n :label=\"tab.label\"\n @click=\"activate(index)\"/>\n </template>\n </FluxTabBar>\n </slot>\n\n <slot\n v-bind=\"{children, modelValue, tabs, activate}\"\n name=\"content\">\n <FluxWindowTransition :is-back=\"isTransitioningBack\">\n <VNodeRenderer\n :key=\"modelValue\"\n :vnode=\"children[modelValue]\"/>\n </FluxWindowTransition>\n </slot>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentProps } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, VNode, watch } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n import { VNodeRenderer } from './primitive';\n import FluxTabBar from './FluxTabBar.vue';\n import FluxTabBarItem from './FluxTabBarItem.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const slots = defineSlots<{\n default(): any;\n\n content(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly modelValue: number;\n readonly tabs: {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }[];\n }): any;\n\n tabs(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly modelValue: number;\n readonly tabs: {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }[];\n }): any;\n }>();\n\n const isTransitioningBack = ref(false);\n\n const children = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const tabs = computed<{ icon?: FluxIconName; label?: string; }[]>(() => unref(children)\n .filter((child: VNode) => getComponentProps<any>(child).icon || getComponentProps<any>(child).label)\n .map((child: VNode) => ({\n icon: getComponentProps<any>(child).icon,\n label: getComponentProps<any>(child).label\n }))\n );\n\n function activate(index: number): void {\n modelValue.value = index;\n }\n\n watch(modelValue, (newIndex, oldIndex) => {\n isTransitioningBack.value = newIndex < oldIndex;\n });\n</script>\n","<template>\n <FluxActions :class=\"$style.tableActions\">\n <slot/>\n </FluxActions>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxActions from './FluxActions.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <th\n :class=\"clsx(\n $style.tableHeader,\n isBordered && $style.isBordered,\n isShrinking && $style.isShrinking,\n isSticky && $style.isSticky\n )\"\n :style=\"{\n minWidth: `${minWidth}px`\n }\">\n <div :class=\"$style.tableHeaderContent\">\n <slot/>\n\n <FluxFlyout v-if=\"isSortable\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.tableSort\"\n :aria-label=\"translate('flux.sort')\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"open\">\n <FluxIcon\n :size=\"16\"\n :name=\"sortingIcon\"/>\n </button>\n </template>\n\n <FluxMenu>\n <FluxMenuGroup>\n <FluxMenuItem\n :is-highlighted=\"sort === 'ascending'\"\n icon-leading=\"arrow-down-a-z\"\n :label=\"translate('flux.sortAscending')\"\n @click=\"$emit('sort', 'ascending')\"/>\n\n <FluxMenuItem\n :is-highlighted=\"sort === 'descending'\"\n icon-leading=\"arrow-up-a-z\"\n :label=\"translate('flux.sortDescending')\"\n @click=\"$emit('sort', 'descending')\"/>\n </FluxMenuGroup>\n\n <template v-if=\"sort\">\n <FluxSeparator/>\n\n <FluxMenuGroup>\n <FluxMenuItem\n icon-leading=\"circle-xmark\"\n is-destructive\n :label=\"translate('flux.sortRemove')\"\n @click=\"$emit('sort', null)\"/>\n </FluxMenuGroup>\n </template>\n </FluxMenu>\n </FluxFlyout>\n </div>\n </th>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { useTableInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxMenu from './FluxMenu.vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n import FluxMenuItem from './FluxMenuItem.vue';\n import FluxSeparator from './FluxSeparator.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n defineEmits<{\n sort: ['ascending' | 'descending' | null];\n }>();\n\n const {\n minWidth = 0,\n sort\n } = defineProps<{\n readonly isShrinking?: boolean;\n readonly isSortable?: boolean;\n readonly isSticky?: boolean;\n readonly minWidth?: number;\n readonly sort?: 'ascending' | 'descending';\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const {isBordered} = useTableInjection();\n const translate = useTranslate();\n\n const sortingIcon = computed((): FluxIconName => {\n switch (sort) {\n case 'ascending':\n return 'arrow-down-a-z';\n\n case 'descending':\n return 'arrow-up-a-z';\n\n default:\n return 'arrow-up-arrow-down';\n }\n });\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"6\"\n is-wrapping>\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.timeline\"\n role=\"feed\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Timeline.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n color === 'gray' && $style.timelineItemGray,\n color === 'primary' && $style.timelineItemPrimary,\n color === 'danger' && $style.timelineItemDanger,\n color === 'info' && $style.timelineItemInfo,\n color === 'success' && $style.timelineItemSuccess,\n color === 'warning' && $style.timelineItemWarning\n )\"\n role=\"article\">\n <div :class=\"$style.timelineItemLine\"/>\n\n <div\n v-if=\"photo\"\n :class=\"$style.timelineItemPhoto\">\n <img\n :class=\"$style.timelineItemPhotoImage\"\n :src=\"photo\"\n alt=\"\">\n\n <div\n v-if=\"icon\"\n :class=\"$style.timelineItemPhotoIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"16\"/>\n </div>\n </div>\n\n <div\n v-else-if=\"icon\"\n :class=\"$style.timelineItemIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"20\"/>\n </div>\n\n <div :class=\"$style.timelineItemBody\">\n <div\n v-if=\"title || when\"\n :class=\"$style.timelineItemHeader\">\n <strong v-if=\"title\">{{ title }}</strong>\n <span v-if=\"when\">{{ when }}</span>\n </div>\n\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Timeline.module.scss';\n\n const {\n color = 'gray'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly photo?: string;\n readonly title?: string;\n readonly when?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <label\n :class=\"clsx(\n $style.toggle,\n modelValue && $style.isChecked,\n disabled && $style.isDisabled,\n isSwitch && $style.isSwitch\n )\"\n :for=\"id\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxIcon\n v-if=\"iconOff\"\n :class=\"$style.toggleIconOff\"\n :name=\"iconOff\"\n :size=\"14\"/>\n\n <FluxIcon\n v-if=\"iconOn\"\n :class=\"$style.toggleIconOn\"\n :name=\"iconOn\"\n :size=\"14\"/>\n\n <input\n :class=\"$style.toggleInput\"\n :id=\"id\"\n :disabled=\"disabled\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n role=\"switch\"\n :aria-checked=\"modelValue\"\n @input=\"toggle\"/>\n </label>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { toRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<boolean>({\n default: false\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly iconOff?: FluxIconName;\n readonly iconOn?: FluxIconName;\n readonly disabled?: boolean;\n readonly isSwitch?: boolean;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n\n function toggle(evt: Event): void {\n modelValue.value = (evt.target as HTMLInputElement).checked;\n }\n</script>\n","<template>\n <FluxStack\n :class=\"clsx(\n !!floatingMode ? $style.toolbarFloating : $style.toolbarFlat,\n floatingMode === 'free' && $style.isFree,\n floatingMode === 'top-end' && $style.isTopEnd,\n floatingMode === 'top-start' && $style.isTopStart,\n floatingMode === 'bottom-end' && $style.isBottomEnd,\n floatingMode === 'bottom-start' && $style.isBottomStart,\n )\"\n direction=\"horizontal\"\n :gap=\"6\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Toolbar.module.scss';\n\n defineProps<{\n readonly floatingMode?: 'free' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"3\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n"],"names":["r","e","t","f","n","o","clsx","BREAKPOINTS","useBreakpoints","currentBreakpoint","ref","breakpointRefs","key","updateBreakpoints","width","activeBreakpoint","value","onMounted","onUnmounted","FluxDisabledInjectionKey","FluxExpandableGroupInjectionKey","FluxFlyoutInjectionKey","FluxFilterInjectionKey","FluxFormFieldInjectionKey","FluxTableInjectionKey","isFluxFilterOptionHeader","obj","isFluxFilterOptionItem","isFluxFormSelectGroup","item","isFluxFormSelectOption","english","iconRegistry","fluxRegisterIcons","icons","acc","icon","iconName","DEFAULT_SNACKBAR_DURATION","state","reactive","alertId","tooltipId","addAlert","spec","id","addConfirm","addPrompt","addSnackbar","addTooltip","registerDialog","removeAlert","index","removeConfirm","c","removePrompt","removeSnackbar","s","removeTooltip","updateSnackbar","updateTooltip","showAlert","resolve","showConfirm","showPrompt","text","showSnackbar","duration","useFluxStore","inertMain","computed","tooltip","promiseToVoidFunction","fn","args","isString","str","isObject","_obj$constructor","pick","keys","_","k","_ref","v","DIRECTION","forceDirection","direction","objectIncludes","b","a","arrA","arrB","i","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","el","maskedClass","mask","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","start","end","KEY_Z","KEY_Y","HTMLMaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","HTMLInputMaskElement","HTMLContenteditableMaskElement","root","selection","anchorOffset","focusOffset","range","InputHistory","steps","InputMask","_this$masked","masked","val","ev","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","handler","hIndex","details","oldRawValue","offset","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","beforePos","shiftChar","Masked","flags","fromPos","toPos","ch","checkTail","consistentState","noFixState","fixDetails","chDetails","consistentTail","appended","beforeTailState","tailDetails","ci","d","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","chunk","lastBlockIter","chunkBlock","remainChars","props","cstate","chunkShiftPos","PatternCursor","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","p","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","block","blockDetails","chunkTail","bFromPos","bToPos","blockChunk","blockIndex","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","bic","element","imask","iban","vat","useDisabledInjection","inject","useDisabled","componentDisabled","treeDisabled","unref","useExpandableGroupInjection","useFilterInjection","useFlyoutInjection","useFormFieldInjection","useId","useTableInjection","M","R","H","I","C","u","D","w","m","E","g","T","U","h","S","G","N","z","Y","$","freeGlobal","freeSelf","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","length","isArray","symbolProto","symbolToString","baseToString","toString","baseSlice","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","string","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","arrayReduce","accumulator","initAccum","basePropertyOf","object","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","guard","reApos","createCompounder","callback","camelCase","word","y","x","L","me","xe","K","he","be","P","ye","Te","Ee","ve","Le","ge","we","B","V","Me","q","Re","ke","Fe","W","He","#e","#t","X","j","Se","De","Ae","Ie","Z","Ce","Oe","J","Ne","_e","Pe","Ue","Ke","Q","Ve","ze","Be","qe","ee","We","Ge","Ye","Xe","et","re","Je","se","Qe","A","ot","tt","ae","le","ie","ce","pe","it","ct","at","fr","pr","Er","gr","Sr","Ir","Vr","qr","es","ts","ps","us","gs","ws","Is","Os","qs","Ws","ta","oa","ua","da","wa","La","Oa","Ca","Wa","Ga","oi","ni","di","mi","Li","Mi","de","ft","emit","__emit","definition","__props","warn","onClick","evt","_createElementBlock","_normalizeClass","_unref","$style","_normalizeStyle","size","_openBlock","_Fragment","_renderList","path","navigate","componentType","_createBlock","_component_router_link","_mergeProps","$attrs","rel","target","to","_cache","$event","$emit","_renderSlot","_ctx","href","_createElementVNode","SLOTS","disabled","toRef","onMouseEnter","onMouseLeave","FluxPressable","type","cssClass","isFilled","isSubmit","tabindex","isLoading","iconLeading","iconTrailing","FluxSpinner","FluxIcon","cssClassIcon","label","cssClassLabel","FluxButton","isDestructive","useFormSelect","modelValue","isMultiple","options","searchQuery","values","model","groups","search","available","selected","subItems","subItem","useLoaded","tasks","shallowRef","loaded","fallback","params","translation","paramName","useTranslate","instance","getCurrentInstance","isVueI18n","slot","CLASS_MAP","variant","_createVNode","dialogRef","useTemplateRef","mountRef","paneRef","isClosing","isOpening","isOpen","openerWidth","openerHeight","paneX","paneY","paneMarginX","paneMarginY","useFocusTrap","close","pane","unrefTemplateElement","open","mount","height","reposition","top","left","paneWidth","paneHeight","mx","my","toggle","onDialogBackdropClick","watch","onCleanup","dialog","provide","__expose","_normalizeProps","_guardReactiveProps","FluxPane","isAutoWidth","_resolveDynamicComponent","isCentered","isFill","isWrapping","gap","_sfc_main$2p","defineComponent","slots","elm","onHover","onLeave","_useSlots","translate","FluxStack","FluxSpacer","FluxFlyout","FluxButtonGroup","FluxSecondaryButton","isResettable","FluxTooltip","FluxDestructiveButton","_withCtx","paneVariant","FluxPaneBody","FluxButtonStack","elementRef","useFocusZone","canvasRef","componentId","useComponentId","contextRef","animationFrame","tick","polygons","mulberry","mulberry32","color","localMulberry","count","points","schedule","onBeforeUnmount","cancel","update","context","shapes","widthBasedOpacity","tx","ty","shape","canvas","aspectRatio","minColumnWidth","afterEnter","isHtmlElement","enter","leave","_Transition","mode","isBack","STATUS_CLASS_MAP","colorSeed","seed","status","alt","src","fallbackInitials","fallbackIcon","FluxFadeTransition","onDeleteClick","dot","isDeletable","_sfc_main$23","purple600","orange600","pink600","attrs","Fragment","flattenVNodeTree","vnode","cloneVNode","tagName","anchorRef","popupRef","onResize","onScroll","useMutationObserver","anchor","popup","popupHeight","popupWidth","px","py","resize","watchEffect","isSelectable","isActive","isHighlighted","isIndented","isSelected","imageSrc","command","commandIcon","commandLoading","_useModel","inputRef","localValue","nativeType","blur","focus","passwordTypeToggle","onBlur","onFocus","onInput","dateTime","DateTime","onKeyDown","iso","__","inputMask","isSecondary","autoComplete","autoFocus","max","maxLength","min","placeholder","isReadonly","step","isHorizontal","modelSearch","select","option","FluxMenuGroup","isSearchable","FluxFormInput","searchPlaceholder","FluxMenuItem","FluxMenuSubHeader","isLarge","isClickable","INITIAL_HIGHLIGHTED_INDEX","anchorPopupRef","optionElementRefs","searchInputElementRef","highlightedIndex","isKeyboardAction","isPopupOpen","focusElement","highlightedId","rawOptions","group","useClickOutside","deselect","nextTick","selectedIndex","onKeyUp","Anchor","FluxTag","_Teleport","AnchorPopup","FluxMenu","so","smallTicks","generateStepTicks","ticks","lower","upper","rootRef","onPointerMove","onPointerUp","onPointerDown","isDragging","isTicksVisible","FluxTicks","position","percentageLower","percentageUpper","createDialogRenderer","className","transition","unregister","zIndex","dialogCount","children","isVisible","child","Comment","content","Teleport","createLabelForDateRange","preventCustom","startStr","endStr","getValueLabel","valueLabel","FilterMenuRenderer","getComponentName","getComponentProps","parsers","renderFilterGroup","parseDate","base","parseDateRange","parseOption","parseOptionAsync","fetchOptions","parseOptions","generateMultiOptionsLabel","parseOptionsAsync","parseRange","formatter","formatNumber","FluxSeparator","renderFilterItem","isVNode","FilterItem","VNodeRenderer","isTransitioningToPast","viewDate","viewMonth","viewYear","dates","days","nextMonth","previousMonth","setViewDate","useCalendar","months","useCalendarMonthSwitcher","years","nextYears","previousYears","useCalendarYearSwitcher","eventNodes","events","en","getEventsForDate","forDate","forDateStr","date","setToday","setViewMonth","month","setViewYear","year","FluxActionBar","_hoisted_1","$styleDatePicker","_hoisted_2","FluxWindowTransition","day","event","_toDisplayString","isIndeterminate","selectableIcon","isJustNowVisible","relative","isTyping","isReceived","FluxAvatar","avatarAlt","avatarFallback","avatarFallbackIcon","avatarFallbackInitials","avatarSrc","postedBy","thumbPosition","onDecrement","valueX","valueY","maxX","maxY","minX","minY","stepX","stepY","roundStep","onIncrement","CoordinatePickerThumb","message","currentLength","error","hint","FluxFormFieldAddition","thumbRef","percentage","tooltipContent","countDecimals","onDragging","is","onUpdate","clampWithStepPrecision","SliderBase","SliderTrack","SliderThumb","alpha","hsv","rgb","hsvToRGB","hue","saturation","saturationValue","saturationPickerColor","hslInputH","generateComputedInput","hsvToHSL","hslToHSV","hslInputS","hslInputL","hsvInputH","hsvInputS","hsvInputV","rgbInputR","rgbToHSV","rgbInputG","rgbInputB","fromHSV","toHSV","oldModelValue","hex","hexToRGB","hslToRGB","rgbToHEX","rgbToHSL","CoordinatePicker","FluxFormSlider","isAlphaEnabled","FluxFormField","customColor","colors","isCustomAllowed","FluxColorPicker","FluxPrimaryButton","gutter","onDeselect","onSelect","SelectBase","isArrow","isCurrent","isSpacer","pages","isNextDisabled","isPreviousDisabled","visiblePages","sizes","dots","visible","page","next","previous","prompt","pageStr","arrows","isCompact","FluxPaginationButton","limit","limitOptions","perPage","FluxPagination","FluxFormSelect","isBordered","isHoverable","isSeparated","isStriped","contentDirection","fillColumns","FluxTableRow","FluxTableCell","_hoisted_3","captionSide","IGNORED_SLOTS","rows","FluxTable","row","uniqueKey","limits","FluxPaginationBar","viewDateNext","viewDatePrevious","getInitialDate","viewMode","maxDate","minDate","normalizedSelection","isDisabled","isWithinBoundary","unit","isWithinRange","edge","isWithinSelection","selectionStart","selectionEnd","setDate","setView","view","onDateMouseOver","onDateMouseOut","FluxVerticalWindowTransition","contentPlacement","svgRef","svgWidth","svgHeight","svg","cr","cx","cy","contentRef","isDraggingOver","pathLength","onWindowDragEnd","onWindowDragStart","onWindowDrop","onDragEnter","onDragLeave","onDrop","files","onFileSelected","showPicker","contentId","headerId","closeAll","register","expandIcon","onBeforeMount","FluxAutoHeightTransition","expandables","expandable","isOpenRef","getExposedRef","uid","faderRef","useInterval","current","fader","back","windowRef","filters","items","reset","getValue","hasValue","setValue","FluxWindow","_createSlots","filter","resettable","currentValue","onDatePicked","FluxDatePicker","rangeMode","filteredOptions","FilterOptionBase","debouncedModelSearch","useDebouncedRef","fetchRelevant","fetchSearch","selectedOptions","visibleOptions","vo","FluxFormColumn","inView","useInView","draw","columns","squares","dpr","opacity","setup","delta","frame","lastTime","animate","time","imageRef","dragging","isPreviewing","focalPointX","focalPointY","onImageLoaded","image","pageX","pageY","onShowPreviewClicked","FluxPaneFooter","onSubmit","FluxDisabled","flyoutRef","FluxFormInputGroup","setTime","fieldRefs","onPaste","field","isPrivate","lowerThumbRef","upperThumbRef","isDraggingLower","isDraggingUpper","lowerValue","upperValue","which","title","onOpen","timeZones","timeZoneGroupOrder","timeZone","timeZoneOptions","timeZoneOffset","go","sortedGroups","ai","groupOptions","labelA","labelB","isHidden","isDeleteVisible","FluxFocalPointImage","focalPoint","url","FluxRemove","isPending","onFilesSelected","images","file","FluxDropZone","isEditable","_TransitionGroup","FluxGalleryItem","pendingItems","xs","sm","md","lg","xl","strokeDasharray","_hoisted_4","isCenter","isFluid","isCloseable","_sfc_main$D","FluxOverlayTransition","FluxAutoGrid","subTitle","borderColor","isMasked","FluxGridPattern","FluxAnimatedColors","animatedColors","animatedOpacity","animatedSeed","isInset","imageUrl","imageAlt","formatPercentage","isLegendVisible","FluxLegend","avatarSize","isButton","progress","isDone","decrement","increment","sizeToContent","FluxPaneHeader","alert","confirm","hasActions","onAction","actionKey","onClose","isRendered","progressIndeterminate","progressValue","FluxProgressBar","progressMax","progressMin","progressStatus","subMessage","actions","actionLabel","FluxAction","snackbars","snackbar","FluxSnackbar","_sfc_main$m","has","calculate","origin","margin","safeZone","scale","originWidth","originHeight","calculateHorizontalPosition","calculateVerticalPosition","FluxTooltipTransition","arrowAngle","arrowX","arrowY","diff","alerts","confirms","prompts","inert","FluxOverlay","FluxAlert","FluxConfirm","FluxPrompt","FluxSnackbarProvider","FluxTooltipProvider","controlRef","itemRefs","activeItemX","activeItemWidth","activate","onUpdated","itemRef","controlX","_sfc_main$j","_sfc_main$i","FluxSlideOverTransition","spacings","flyoutDirection","flyoutIsAutoWidth","flyoutMargin","flyoutWidth","buttonIcon","bindings","changeIcon","changeValue","changeColor","amount","isTransitioningBack","newIndex","oldIndex","FluxStepperSteps","FluxDynamicView","tabBarRef","useEventListener","checkScroll","isEndArrowVisible","isStartArrowVisible","tabBar","scrollToEnd","scrollToStart","tabRef","tab","tabs","FluxTabBar","FluxTabBarItem","FluxActions","sortingIcon","isShrinking","isSticky","minWidth","isSortable","sort","photo","when","isSwitch","iconOff","iconOn","floatingMode"],"mappings":"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AAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAC1B,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,G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;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA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","x_google_ignoreList":[0,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/clsx/dist/clsx.mjs","../src/composable/useBreakpoints.ts","../src/data/di.ts","../src/data/filter.ts","../src/data/helper.ts","../src/data/i18n.ts","../src/data/iconRegistry.ts","../src/data/store.ts","../../../node_modules/imask/esm/core/utils.js","../../../node_modules/imask/esm/core/action-details.js","../../../node_modules/imask/esm/core/holder.js","../../../node_modules/imask/esm/masked/factory.js","../../../node_modules/imask/esm/controls/mask-element.js","../../../node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/imask/esm/controls/input-history.js","../../../node_modules/imask/esm/controls/input.js","../../../node_modules/imask/esm/core/change-details.js","../../../node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/imask/esm/masked/base.js","../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/imask/esm/masked/regexp.js","../../../node_modules/imask/esm/masked/pattern.js","../src/data/inputMask.ts","../src/composable/useDisabledInjection.ts","../src/composable/useDisabled.ts","../src/composable/useExpandableGroupInjection.ts","../src/composable/useFilterInjection.ts","../src/composable/useFlyoutInjection.ts","../src/composable/useFormFieldInjection.ts","../src/composable/useTableInjection.ts","../src/composable/useTooltipInjection.ts","../../../node_modules/@basmilius/utils/dist/index.js","../../../node_modules/lodash-es/_freeGlobal.js","../../../node_modules/lodash-es/_root.js","../../../node_modules/lodash-es/_Symbol.js","../../../node_modules/lodash-es/_getRawTag.js","../../../node_modules/lodash-es/_objectToString.js","../../../node_modules/lodash-es/_baseGetTag.js","../../../node_modules/lodash-es/isObjectLike.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/isArray.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_baseSlice.js","../../../node_modules/lodash-es/_castSlice.js","../../../node_modules/lodash-es/_hasUnicode.js","../../../node_modules/lodash-es/_asciiToArray.js","../../../node_modules/lodash-es/_unicodeToArray.js","../../../node_modules/lodash-es/_stringToArray.js","../../../node_modules/lodash-es/_createCaseFirst.js","../../../node_modules/lodash-es/upperFirst.js","../../../node_modules/lodash-es/capitalize.js","../../../node_modules/lodash-es/_arrayReduce.js","../../../node_modules/lodash-es/_basePropertyOf.js","../../../node_modules/lodash-es/_deburrLetter.js","../../../node_modules/lodash-es/deburr.js","../../../node_modules/lodash-es/_asciiWords.js","../../../node_modules/lodash-es/_hasUnicodeWord.js","../../../node_modules/lodash-es/_unicodeWords.js","../../../node_modules/lodash-es/words.js","../../../node_modules/lodash-es/_createCompounder.js","../../../node_modules/lodash-es/camelCase.js","../../internals/dist/index.js","../src/component/FluxIcon.vue","../src/component/FluxPressable.vue","../src/component/FluxSpinner.vue","../src/component/FluxButton.vue","../src/component/FluxAction.vue","../src/composable/private/useFormSelect.ts","../src/composable/private/useLoaded.ts","../src/composable/private/useTranslate.ts","../src/component/FluxButtonGroup.vue","../src/component/FluxDestructiveButton.vue","../src/component/FluxPane.vue","../src/component/FluxFlyout.vue","../src/component/FluxSecondaryButton.vue","../src/component/FluxSpacer.vue","../src/component/FluxStack.vue","../src/component/FluxTooltip.vue","../src/component/FluxActionBar.vue","../src/component/FluxButtonStack.vue","../src/component/FluxPaneBody.vue","../src/component/FluxActionPane.vue","../src/component/FluxActions.vue","../src/component/FluxAnimatedColors.vue","../src/component/FluxAspectRatio.vue","../src/component/FluxAutoGrid.vue","../src/transition/FluxAutoHeightTransition.vue","../src/transition/FluxAutoWidthTransition.vue","../src/transition/FluxBreakthroughTransition.vue","../src/transition/FluxFadeTransition.vue","../src/transition/FluxOverlayTransition.vue","../src/transition/FluxRouteTransition.vue","../src/transition/FluxSlideOverTransition.vue","../src/transition/FluxTooltipTransition.vue","../src/transition/FluxVerticalWindowTransition.vue","../src/transition/FluxWindowTransition.vue","../src/component/FluxAvatar.vue","../src/component/FluxBadge.vue","../src/component/FluxBadgeStack.vue","../src/component/FluxBorderShine.vue","../src/component/FluxBoxedIcon.vue","../src/component/primitive/Anchor.vue","../src/component/primitive/AnchorPopup.vue","../src/component/FluxMenuItem.vue","../src/component/FluxFormInput.vue","../src/component/FluxMenuGroup.vue","../src/component/FluxMenuSubHeader.vue","../src/component/primitive/FilterOptionBase.vue","../src/component/FluxMenu.vue","../src/component/FluxTag.vue","../src/component/primitive/SelectBase.vue","../src/component/FluxTicks.vue","../src/component/primitive/SliderBase.vue","../src/component/primitive/SliderThumb.vue","../src/component/primitive/SliderTrack.vue","../src/util/createDialogRenderer.ts","../src/util/createLabelForDateRange.ts","../src/component/FluxSeparator.vue","../src/component/primitive/FilterItem.vue","../src/component/primitive/FilterMenuRenderer.ts","../src/component/primitive/VNodeRenderer.ts","../src/component/FluxCalendar.vue","../src/component/FluxCalendarEvent.vue","../src/component/FluxCheckbox.vue","../src/component/FluxChip.vue","../src/component/FluxClickablePane.vue","../src/component/FluxComment.vue","../src/component/primitive/CoordinatePickerThumb.vue","../src/component/primitive/CoordinatePicker.vue","../src/component/FluxFormFieldAddition.vue","../src/component/FluxFormField.vue","../src/component/FluxFormSlider.vue","../src/component/FluxColorPicker.vue","../src/component/FluxPrimaryButton.vue","../src/component/FluxColorSelect.vue","../src/component/FluxContainer.vue","../src/component/FluxFormSelect.vue","../src/component/FluxPaginationButton.vue","../src/component/FluxPagination.vue","../src/component/FluxPaginationBar.vue","../src/component/FluxTableCell.vue","../src/component/FluxTableRow.vue","../src/component/FluxTable.vue","../src/component/FluxDataTable.vue","../src/component/FluxDatePicker.vue","../src/component/FluxDisabled.vue","../src/component/FluxDivider.vue","../src/component/FluxDotPattern.vue","../src/component/FluxDropZone.vue","../src/component/FluxDynamicView.vue","../src/component/FluxExpandable.vue","../src/component/FluxExpandableGroup.vue","../src/component/FluxFader.vue","../src/component/FluxFaderItem.vue","../src/component/FluxWindow.vue","../src/component/FluxFilter.vue","../src/component/FluxFilterDate.vue","../src/component/FluxFilterDateRange.vue","../src/component/FluxFilterOption.vue","../src/component/FluxFilterOptionAsync.vue","../src/component/FluxFilterOptions.vue","../src/component/FluxFilterOptionsAsync.vue","../src/component/FluxFormColumn.vue","../src/component/FluxFilterRange.vue","../src/component/FluxFlickeringGrid.vue","../src/component/FluxPaneFooter.vue","../src/component/FluxFocalPointEditor.vue","../src/component/FluxFocalPointImage.vue","../src/component/FluxForm.vue","../src/component/FluxFormInputGroup.vue","../src/component/FluxFormDateInput.vue","../src/component/FluxFormDateRangeInput.vue","../src/component/FluxFormDateTimeInput.vue","../src/component/FluxFormInputAddition.vue","../src/component/FluxFormPinInput.vue","../src/component/FluxFormRangeSlider.vue","../src/component/FluxFormRow.vue","../src/component/FluxFormSection.vue","../src/component/FluxFormSelectAsync.vue","../src/component/FluxFormTextArea.vue","../src/component/FluxFormTimeZonePicker.vue","../src/component/FluxRemove.vue","../src/component/FluxGalleryItem.vue","../src/component/FluxGallery.vue","../src/component/FluxGrid.vue","../src/component/FluxGridColumn.vue","../src/component/FluxGridPattern.vue","../src/component/FluxInfo.vue","../src/component/FluxInfoStack.vue","../src/component/FluxLegend.vue","../src/component/FluxLink.vue","../src/component/FluxMenuOptions.vue","../src/component/FluxMenuTitle.vue","../src/component/FluxNotice.vue","../src/component/FluxNoticeStack.vue","../src/component/FluxOverlay.vue","../src/component/FluxPaneDeck.vue","../src/component/FluxPaneGroup.vue","../src/component/FluxPaneHeader.vue","../src/component/FluxPaneIllustration.vue","../src/component/FluxPaneMedia.vue","../src/component/FluxPercentageBar.vue","../src/component/FluxPersona.vue","../src/component/FluxPlaceholder.vue","../src/component/FluxProgressBar.vue","../src/component/FluxPublishButton.vue","../src/component/FluxQuantitySelector.vue","../src/component/FluxAlert.vue","../src/component/FluxConfirm.vue","../src/component/FluxPrompt.vue","../src/component/FluxSnackbar.vue","../src/component/FluxSnackbarProvider.vue","../src/component/FluxTooltipProvider.vue","../src/component/FluxRoot.vue","../src/component/FluxSegmentedControl.vue","../src/component/FluxSegmentedView.vue","../src/component/FluxSlideOver.vue","../src/component/FluxSpacing.vue","../src/component/FluxSplitButton.vue","../src/component/FluxStatistic.vue","../src/component/FluxStepperSteps.vue","../src/component/FluxStepper.vue","../src/component/FluxStepperStep.vue","../src/component/FluxTab.vue","../src/component/FluxTabBar.vue","../src/component/FluxTabBarItem.vue","../src/component/FluxTabs.vue","../src/component/FluxTableActions.vue","../src/component/FluxTableHeader.vue","../src/component/FluxTagStack.vue","../src/component/FluxTimeline.vue","../src/component/FluxTimelineItem.vue","../src/component/FluxToggle.vue","../src/component/FluxToolbar.vue","../src/component/FluxToolbarGroup.vue"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type { Ref } from 'vue';\nimport { onMounted, onUnmounted, ref } from 'vue';\n\nconst BREAKPOINTS = {\n xs: 0,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280\n} as const;\n\ntype Breakpoint = keyof typeof BREAKPOINTS;\n\nexport default function () {\n const currentBreakpoint = ref<Breakpoint | null>(null);\n const breakpointRefs = Object.fromEntries(\n Object.keys(BREAKPOINTS).map((key) => [key, ref(false)])\n ) as Record<Breakpoint, Ref<boolean>>;\n\n const updateBreakpoints = () => {\n const width = window.innerWidth;\n let activeBreakpoint: Breakpoint | null = null;\n\n for (const [key, value] of Object.entries(BREAKPOINTS).reverse() as [\n Breakpoint,\n number\n ][]) {\n if (width >= value) {\n activeBreakpoint = key;\n break;\n }\n }\n\n currentBreakpoint.value = activeBreakpoint;\n\n for (const key of Object.keys(BREAKPOINTS) as Breakpoint[]) {\n breakpointRefs[key].value = key === activeBreakpoint;\n }\n };\n\n onMounted(() => {\n updateBreakpoints();\n window.addEventListener('resize', updateBreakpoints, {passive: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', updateBreakpoints);\n });\n\n return {\n currentBreakpoint,\n ...breakpointRefs\n };\n}\n","import type { FluxFilterState, FluxFilterValue } from '@flux-ui/types';\nimport type { ComponentInternalInstance, InjectionKey, Ref } from 'vue';\n\nexport const FluxDisabledInjectionKey: InjectionKey<Ref<boolean>> = Symbol();\nexport const FluxExpandableGroupInjectionKey: InjectionKey<FluxExpandableGroupInjection> = Symbol();\nexport const FluxFlyoutInjectionKey: InjectionKey<FluxFlyoutInjection> = Symbol();\nexport const FluxFilterInjectionKey: InjectionKey<FluxFilterInjection> = Symbol();\nexport const FluxFormFieldInjectionKey: InjectionKey<FluxFormFieldInjection> = Symbol();\nexport const FluxTableInjectionKey: InjectionKey<FluxTableInjection> = Symbol();\nexport const FluxTooltipInjectionKey: InjectionKey<FluxTooltipInjection> = Symbol();\n\nexport type FluxExpandableGroupInjection = {\n closeAll(): void;\n register(uid: number, expandable: ComponentInternalInstance): void;\n unregister(uid: number): void;\n};\n\nexport type FluxFilterInjection = {\n readonly state: Ref<FluxFilterState>;\n\n back(): void;\n reset(name: string | number): void;\n getValue(name: string | number): FluxFilterValue | undefined;\n hasValue(name: string | number): boolean;\n setValue(name: string | number, value?: FluxFilterValue): void;\n};\n\nexport type FluxFlyoutInjection = {\n readonly isClosing: Ref<boolean>;\n readonly isOpen: Ref<boolean>;\n readonly isOpening: Ref<boolean>;\n};\n\nexport type FluxFormFieldInjection = {\n readonly id?: string;\n};\n\nexport type FluxTableInjection = {\n readonly isBordered: boolean;\n readonly isHoverable: boolean;\n readonly isSeparated: boolean;\n readonly isStriped: boolean;\n};\n\nexport type FluxTooltipInjection = {\n calculate(): void;\n};\n","import type { FluxFilterOptionHeader, FluxFilterOptionItem } from '@flux-ui/types';\n\nexport function isFluxFilterOptionHeader(obj: object): obj is FluxFilterOptionHeader {\n return 'title' in obj;\n}\n\nexport function isFluxFilterOptionItem(obj: object): obj is FluxFilterOptionItem {\n return 'label' in obj && 'value' in obj;\n}\n","import type { FluxFormSelectGroup, FluxFormSelectOption } from '@flux-ui/types';\n\nexport function isFluxFormSelectGroup(item: unknown): item is FluxFormSelectGroup {\n return item !== null && typeof item === 'object' && !('value' in item);\n}\n\nexport function isFluxFormSelectOption(item: unknown): item is FluxFormSelectOption {\n return item !== null && typeof item === 'object' && 'value' in item;\n}\n","export type FluxTranslate = (key: FluxTranslation, params?: Record<string, string | number>) => string;\nexport type FluxTranslation = keyof typeof english;\n\nexport const english = {\n 'flux.back': 'Back',\n 'flux.cancel': 'Cancel',\n 'flux.comingSoon': 'Coming soon',\n 'flux.continue': 'Continue',\n 'flux.customPeriod': 'Custom period',\n 'flux.filter': 'Filter',\n 'flux.filterReset': 'Reset filters',\n 'flux.justNow': 'Just now',\n 'flux.max': 'Max',\n 'flux.min': 'Min',\n 'flux.nSelected': '{n} selected',\n 'flux.ok': 'Ok',\n 'flux.optional': 'Optional',\n 'flux.preview': 'Preview',\n 'flux.previewClose': 'Close preview',\n 'flux.displayingOf': '{from}–{to} of {total}',\n 'flux.showN': 'Show {n}',\n 'flux.next': 'Next',\n 'flux.noItems': 'There are no items (left).',\n 'flux.pagination': 'Pagination',\n 'flux.paginationNavigateTitle': 'Navigate',\n 'flux.paginationNavigateMessage': 'Please provide the desired page number you wish to navigate to.',\n 'flux.paginationNavigatePage': 'Page',\n 'flux.previous': 'Previous',\n 'flux.search': 'Search...',\n 'flux.sort': 'Sort',\n 'flux.sortAscending': 'Ascending',\n 'flux.sortDescending': 'Descending',\n 'flux.sortRemove': 'Remove sorting',\n 'flux.today': 'Today',\n 'flux.galleryPlaceholderButton': 'Pick image',\n 'flux.galleryPlaceholderMessage': 'Drop an image here or click the button to upload...',\n 'flux.galleryPlaceholderTitle': 'Gallery',\n 'flux.timezoneEurope': 'Europe',\n 'flux.timezoneAmerica': 'America',\n 'flux.timezoneUs': 'United States',\n 'flux.timezoneAustralia': 'Australia',\n 'flux.timezoneCanada': 'Canada',\n 'flux.timezoneMexico': 'Mexico',\n 'flux.timezoneAfrica': 'Africa',\n 'flux.timezoneAntarctica': 'Antarctica',\n 'flux.timezoneArctic': 'Arctic',\n 'flux.timezoneAsia': 'Asia',\n 'flux.timezoneAtlantic': 'Atlantic',\n 'flux.timezoneBrazil': 'Brazil',\n 'flux.timezoneChile': 'Chile',\n 'flux.timezoneEtc': 'ETC',\n 'flux.timezoneOther': 'Other',\n 'flux.timezoneIndian': 'Indian',\n 'flux.timezonePacific': 'Pacific'\n} as const;\n","import type { FluxIconName } from '@flux-ui/types';\nimport type { IconDefinition, IconPathData } from '@fortawesome/fontawesome-common-types';\n\ntype Icon = [number, number, string[], string, IconPathData];\ntype IconRegistry = Partial<{ [key in FluxIconName]: Icon; }>;\ntype Icons = Record<string, IconDefinition>;\n\nexport let iconRegistry: IconRegistry = {};\n\nexport function fluxRegisterIcons(icons: Icons): void {\n iconRegistry = Object.keys(icons).reduce((acc: IconRegistry, key: string) => {\n const {icon, iconName} = icons[key];\n acc[iconName] = icon;\n\n if (Array.isArray(icon[2])) {\n icon[2].forEach((iconName: string) => acc[iconName as FluxIconName] = icon);\n }\n\n return acc;\n }, {});\n}\n","import type { FluxAlertObject, FluxConfirmObject, FluxPromptObject, FluxSnackbarObject, FluxTooltipObject } from '@flux-ui/types';\nimport type { ComputedRef } from 'vue';\nimport { computed, reactive } from 'vue';\n\nexport type FluxState = {\n dialogCount: number;\n readonly alerts: FluxAlertObject[];\n readonly confirms: FluxConfirmObject[];\n readonly prompts: FluxPromptObject[];\n readonly snackbars: FluxSnackbarObject[];\n readonly tooltips: FluxTooltipObject[];\n};\n\nexport type FluxStore = FluxState & {\n readonly inertMain: ComputedRef<boolean>;\n readonly tooltip: ComputedRef<FluxTooltipObject | null>;\n\n addAlert(spec: Omit<FluxAlertObject, 'id'>): number;\n addConfirm(spec: Omit<FluxConfirmObject, 'id'>): number;\n addPrompt(spec: Omit<FluxPromptObject, 'id'>): number;\n addSnackbar(spec: Omit<FluxSnackbarObject, 'id'>): number;\n addTooltip(spec: Omit<FluxTooltipObject, 'id'>): number;\n registerDialog(): VoidFunction;\n removeAlert(id: number): void;\n removeConfirm(id: number): void;\n removePrompt(id: number): void;\n removeSnackbar(id: number): void;\n removeTooltip(id: number): void;\n showAlert(spec: Omit<FluxAlertObject, 'id' | 'onClose'>): Promise<void>;\n showConfirm(spec: Omit<FluxConfirmObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<boolean>;\n showPrompt(spec: Omit<FluxPromptObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<string | false>;\n showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): Promise<void> | void;\n updateSnackbar(id: number, spec: Partial<Omit<FluxSnackbarObject, 'id'>>): void;\n updateTooltip(id: number, spec: Partial<Omit<FluxTooltipObject, 'id'>>): void;\n showSnackbarSync({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): void;\n};\n\nconst DEFAULT_SNACKBAR_DURATION = 6000;\n\nconst state = reactive<FluxState>({\n dialogCount: 0,\n alerts: [],\n confirms: [],\n prompts: [],\n snackbars: [],\n tooltips: []\n});\n\nlet alertId: number = 0;\nlet tooltipId: number = 0;\n\nexport function addAlert(spec: Omit<FluxAlertObject, 'id'>): number {\n const id = ++alertId;\n\n state.alerts.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addConfirm(spec: Omit<FluxConfirmObject, 'id'>): number {\n const id = ++alertId;\n\n state.confirms.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addPrompt(spec: Omit<FluxPromptObject, 'id'>): number {\n const id = ++alertId;\n\n state.prompts.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addSnackbar(spec: Omit<FluxSnackbarObject, 'id'>): number {\n const id = ++alertId;\n\n state.snackbars.unshift({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function addTooltip(spec: Omit<FluxTooltipObject, 'id'>): number {\n const id = ++tooltipId;\n\n state.tooltips.push({\n id,\n ...spec\n });\n\n return id;\n}\n\nexport function registerDialog(): VoidFunction {\n ++state.dialogCount;\n return () => --state.dialogCount;\n}\n\nexport function removeAlert(id: number): void {\n const index = state.alerts.findIndex(a => a.id === id);\n state.alerts.splice(index, 1);\n}\n\nexport function removeConfirm(id: number): void {\n const index = state.confirms.findIndex(c => c.id === id);\n state.confirms.splice(index, 1);\n}\n\nexport function removePrompt(id: number): void {\n const index = state.prompts.findIndex(c => c.id === id);\n state.prompts.splice(index, 1);\n}\n\nexport function removeSnackbar(id: number): void {\n const index = state.snackbars.findIndex(s => s.id === id);\n state.snackbars.splice(index, 1);\n}\n\nexport function removeTooltip(id: number): void {\n const index = state.tooltips.findIndex(t => t.id === id);\n state.tooltips.splice(index, 1);\n}\n\nexport function updateSnackbar(id: number, spec: Partial<Omit<FluxSnackbarObject, 'id'>>): void {\n const index = state.snackbars.findIndex(s => s.id === id);\n Object.assign(state.snackbars[index], spec);\n}\n\nexport function updateTooltip(id: number, spec: Partial<Omit<FluxTooltipObject, 'id'>>): void {\n const index = state.tooltips.findIndex(s => s.id === id);\n Object.assign(state.tooltips[index], spec);\n}\n\nexport async function showAlert(spec: Omit<FluxAlertObject, 'id' | 'onClose'>): Promise<void> {\n return new Promise(resolve => {\n const id = addAlert({\n ...spec,\n onClose(): void {\n resolve();\n removeAlert(id);\n }\n });\n });\n}\n\nexport async function showConfirm(spec: Omit<FluxConfirmObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<boolean> {\n return new Promise(resolve => {\n const id = addConfirm({\n ...spec,\n onCancel(): void {\n resolve(false);\n removeConfirm(id);\n },\n onConfirm(): void {\n resolve(true);\n removeConfirm(id);\n }\n });\n });\n}\n\nexport async function showPrompt(spec: Omit<FluxPromptObject, 'id' | 'onCancel' | 'onConfirm'>): Promise<string | false> {\n return new Promise(resolve => {\n const id = addPrompt({\n ...spec,\n onCancel(): void {\n resolve(false);\n removePrompt(id);\n },\n onConfirm(text: string): void {\n resolve(text);\n removePrompt(id);\n }\n });\n });\n}\n\nexport function showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): void;\n\nexport async function showSnackbar({duration, ...spec}: Omit<FluxSnackbarObject, 'id'> & { readonly duration?: number; }): Promise<void> {\n const id = addSnackbar(spec);\n await new Promise(resolve => setTimeout(() => requestAnimationFrame(resolve), duration ?? DEFAULT_SNACKBAR_DURATION));\n removeSnackbar(id);\n}\n\nexport function useFluxStore(): FluxStore {\n const inertMain = computed(() => state.dialogCount > 0);\n const tooltip = computed(() => state.tooltips[state.tooltips.length - 1] || null);\n\n return {\n ...state,\n inertMain,\n tooltip,\n addAlert,\n addConfirm,\n addPrompt,\n addSnackbar,\n addTooltip,\n registerDialog,\n removeAlert,\n removeConfirm,\n removePrompt,\n removeSnackbar,\n removeTooltip,\n showAlert,\n showConfirm,\n showPrompt,\n showSnackbar,\n updateSnackbar,\n updateTooltip,\n showSnackbarSync: promiseToVoidFunction(showSnackbar)\n };\n}\n\ntype Fn = (...args: any[]) => any;\ntype FnSync<T extends Fn> = (...args: Parameters<T>) => void;\n\nfunction promiseToVoidFunction<T extends Fn>(fn: T): FnSync<T> {\n return (...args: any[]) => fn(...args);\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import type { InputMask } from 'imask';\nimport imask from 'imask/holder';\n\nimport 'imask/masked/pattern';\n\nexport function bic(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aaaaaa##[000]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n\nexport function iban(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aa00 #### 0000 0000[ 0000 0000 0000 0000]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n\nexport function vat(element: HTMLInputElement): InputMask<{}> {\n return imask(element, {\n definitions: {\n '#': /[A-Z0-9]/\n },\n mask: 'aa########[#####]',\n prepareChar: (str: string) => str.toUpperCase()\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxDisabledInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxDisabledInjectionKey, ref(false));\n}\n","import type { Ref } from 'vue';\nimport { computed, unref } from 'vue';\nimport useDisabledInjection from './useDisabledInjection';\n\nexport default function (componentDisabled: Ref<boolean>) {\n const treeDisabled = useDisabledInjection();\n\n return computed(() => unref(componentDisabled) || unref(treeDisabled));\n}\n","import { inject } from 'vue';\nimport { FluxExpandableGroupInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxExpandableGroupInjectionKey, {\n closeAll: () => void 0,\n register: () => void 0,\n unregister: () => void 0\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxFilterInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFilterInjectionKey, {\n // note(Bas): The default value is never used, but required by\n // Vue, so that explains the empty getter and function below.\n state: ref({\n get resettable() {\n return [];\n },\n\n reset(): void {\n }\n }),\n back: () => void 0,\n reset: () => void 0,\n getValue: () => void 0,\n hasValue: () => false,\n setValue: () => void 0\n });\n}\n","import { inject, ref } from 'vue';\nimport { FluxFlyoutInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFlyoutInjectionKey, {\n isClosing: ref(false),\n isOpen: ref(false),\n isOpening: ref(false)\n });\n}\n","import { inject, useId } from 'vue';\nimport { FluxFormFieldInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxFormFieldInjectionKey, {\n id: useId()\n });\n}\n","import { inject } from 'vue';\nimport { FluxTableInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxTableInjectionKey, {\n isBordered: false,\n isHoverable: false,\n isSeparated: false,\n isStriped: false\n });\n}\n","import { inject } from 'vue';\nimport { FluxTooltipInjectionKey } from '$flux/data';\n\nexport default function () {\n return inject(FluxTooltipInjectionKey, {\n calculate: () => void 0\n });\n}\n","function d(e,r){return Math.round(e/r)*r}function M(e,r,t,o){return Math.max(r,Math.min(t,+d(e*(t-r)+r,o).toPrecision(4)))}function R(e){return e.toString().split(\".\")[1]?.length??0}import{defineStore as q,storeToRefs as Q}from\"pinia\";function P(e,r){let t=q(e,r);return()=>{let o=t(),i=Object.getOwnPropertyNames(o),u=Q(o),n={};for(let a of i){if(a.startsWith(\"$\")||a.startsWith(\"_\"))continue;if(a in u){n[a]=u[a];continue}n[a]=o[a]}return n}}function b(e,r){let t=document.createElement(\"a\");t.download=r,t.href=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function x(e,r){let t=URL.createObjectURL(e);b(t,r),URL.revokeObjectURL(t)}function k(e,r,t){let o=new Blob([e],{type:t});x(o,r)}function O(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function F(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function L(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function B(e){return e.toLocaleString({month:\"long\"})}function H(e,r=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:r,minimumFractionDigits:r}).format(e)}function I(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function v(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function C(e,r,t=5,o){let i=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],u=[0.1,0.5,...i],n=r-e,a=o?u:i;for(let l of a){let D=Math.floor(n/l),p=[];if(D>t+1)continue;p.push(e);for(let w=1;w<D;++w)p.push(w*l+e);return p.push(r),p}let m=n.toString().length-1,s=Math.pow(10,m),f=[];for(let l=0;l<n;l+=s)f.push(l+e);return f}function j(e){let r={};do{if(e.name===\"\")break;for(let[t,o]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(t))continue;if(!o.get&&!o.set)continue;r[t]=o}}while(e=Object.getPrototypeOf(e));return r}function E(e){let r=parseInt(e.startsWith(\"#\")?e.substring(1):e,16);return[r>>16&255,r>>8&255,r&255]}function c(e,r,t){if(t<0)t+=1;if(t>1)t-=1;if(t<0.16666666666666666)return e+(r-e)*6*t;if(t<0.5)return r;if(t<0.6666666666666666)return e+(r-e)*(0.6666666666666666-t)*6;return e}function g(e,r,t){let o,i,u;if(e/=360,r/=100,t/=100,r===0)o=i=u=t;else{let n=t<0.5?t*(1+r):t+r-t*r,a=2*t-n;o=c(a,n,e+0.3333333333333333),i=c(a,n,e),u=c(a,n,e-0.3333333333333333)}return o=Math.round(o*255),i=Math.round(i*255),u=Math.round(u*255),[o,i,u]}function T(e,r,t){e/=255,r/=255,t/=255;let o=Math.min(e,r,t),i=Math.max(e,r,t),u=i-o,n,a=i===0?0:u/i,m=i;if(i===o)n=0;else{if(i===e)n=(r-t)/u+(r<t?6:0);else if(i===r)n=(t-e)/u+2;else n=(e-r)/u+4;n/=6}return[n,a,m]}function U(e,r,t){return T(...g(e,r,t))}function h(e,r,t){let o=0,i=0,u=0,n=Math.floor(e*6),a=e*6-n,m=t*(1-r),s=t*(1-a*r),f=t*(1-(1-a)*r);switch(n%6){case 0:o=t,i=f,u=m;break;case 1:o=s,i=t,u=m;break;case 2:o=m,i=t,u=f;break;case 3:o=m,i=s,u=t;break;case 4:o=f,i=m,u=t;break;case 5:o=t,i=m,u=s;break}return o=Math.round(o*255),i=Math.round(i*255),u=Math.round(u*255),[o,i,u]}function S(e,r,t){e/=255,r/=255,t/=255;let o=Math.min(e,r,t),i=Math.max(e,r,t),u=i-o,n,a,m;if(u===0)n=0;else if(i===e)n=(r-t)/u%6;else if(i===r)n=(t-e)/u+2;else n=(e-r)/u+4;if(n=Math.round(n*60),n<0)n+=360;return m=(i+o)/2,a=u===0?0:u/(1-Math.abs(2*m-1)),a=+(a*100).toFixed(1),m=+(m*100).toFixed(1),[n,a,m]}function G(e,r,t){return S(...h(e,r,t))}function N(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function V(e,r){let t=!1;for(let o=0,i=r.length-1;o<r.length;i=o++){let u=r[o][0],n=r[o][1],a=r[i][0],m=r[i][1];if(n>e[1]!=m>e[1]&&e[0]<(a-u)*(e[1]-n)/(m-n)+u)t=!t}return t}function _(e,r){return r.hasSame(e,\"day\")}function z(e){let r=new Uint32Array(1);r[0]=e;function t(){let u=r[0]=r[0]+1831565813|0,n=Math.imul(u^u>>>15,1|u);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}function o(u,n){return t()*(n-u)+u}function i(){return z(t()*4294967296)}return{fork:i,next:t,nextBetween:o}}var Y=z;function A(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as ee,watch as te}from\"vue\";function y(e,r,t=JSON.stringify,o=JSON.parse){let i=localStorage.getItem(e),u=i?o(i):r,n=ee(u);return te(n,(a)=>{if(a===null||a===void 0)localStorage.removeItem(e);else localStorage.setItem(e,t(a))},{deep:!0,immediate:!0}),n}function W(e,r){return y(e,r,(t)=>t??\"\",(t)=>t===\"\"?null:t)}function $(e,r,t){let o=e.toString(16).padStart(2,\"0\"),i=r.toString(16).padStart(2,\"0\"),u=t.toString(16).padStart(2,\"0\");return`#${o}${i}${u}`}function J(e,r,t){e.prototype[r]=t}function K(e,r,t){Object.defineProperty(e,r,{value:t})}function Z(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function X(e){return new Promise((r)=>setTimeout(r,e))}var Xe=\"✔\",qe=\"✘\",Qe=\"—\",Ye=\"–\",et=()=>{return};export{X as waitFor,Z as viewTransition,K as setObjectValue,J as setObjectMethod,d as roundStep,T as rgbToHSV,S as rgbToHSL,$ as rgbToHEX,W as persistentStringRef,y as persistentRef,A as openUrl,Y as mulberry32,_ as isToday,V as isPointInPolygon,N as isHtmlElement,c as hueToRGB,h as hsvToRGB,G as hsvToHSL,g as hslToRGB,U as hslToHSV,E as hexToRGB,j as getPrototypeChain,C as generateStepTicks,v as formatTime,I as formatPercentage,H as formatNumber,B as formatMonth,L as formatDateTime,F as formatDateFull,O as formatDate,b as downloadUrl,k as downloadString,x as downloadBlob,P as defineStore,R as countDecimals,M as clampWithStepPrecision,et as NOOP,Ye as NDASH,Qe as MDASH,qe as CROSS,Xe as CHECK};\n\n//# debugId=A730E4502025CE4164756E2164756E21\n//# sourceMappingURL=index.js.map\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import{computed as E,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=E(()=>{let c=[],m=b(n).month,h=b(n).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let S=1;S<=7;++S)c.push(x.plus({day:S}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),i=E(()=>b(n).plus({month:1})),a=E(()=>b(n).minus({month:1})),f=E(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=E(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function v(){u(b(n).plus({month:1}))}function L(){u(b(n).minus({month:1}))}return{isTransitioningToPast:o,viewDate:n,viewDateNext:i,viewDatePrevious:a,viewMonth:f,viewYear:l,dates:s,days:r,setViewDate:u,nextMonth:v,previousMonth:L}}import{computed as me,unref as xe}from\"vue\";function U(e,t){return{months:me(()=>{let n=[],s=xe(e),r=s.startOf(\"year\");while(r.month<=12&&r.year===s.year)n.push({date:r,label:r.toLocaleString({month:t})}),r=r.plus({months:1});return n})}}import{computed as be,ref as he,unref as P,watch as ye}from\"vue\";function K(e,t=10){let o=he(0),n=be(()=>{let i=P(e).year,a=[],f=i-i%t+P(o)*t;for(let l=0;l<t;++l)a.push(f+l);return a});function s(){++o.value}function r(){--o.value}return ye(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as De,onUnmounted as Ae,ref as Se,unref as Y,watchEffect as Ie}from\"vue\";import{Fragment as Te}from\"vue\";function z(e){let t=[];for(let o of e){if(o.type===Te&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as ve}from\"@basmilius/utils\";var Ee=[\"a:not([disabled])\",\"button:not([disabled])\",\"input[type=checkbox]:not([disabled])\",\"input[type=radio]:not([disabled])\",\"input[type=text]:not([disabled])\",'[tabindex]:not([disabled]):not([tabindex=\"-1\"])'].join(\",\");function d(e){return Array.from(e.querySelectorAll(Ee)).filter(ve).filter((t)=>t.offsetWidth>0||t.offsetHeight>0||t===document.activeElement)}function M(e,t,o){let n=d(e),s=n.indexOf(t);if(s===-1)return null;let r=Le(n);ge(r,s,o);let i=we(s,o,r,n);if(!i){if(o===\"up\"||o===\"left\")i=n[s-1];if(o===\"down\"||o===\"right\")i=n[s+1]}return i}function ge(e,t,o){let n=e[t];e.forEach((s)=>{let r=s.center;switch(o){case\"up\":r={x:r.x,y:s.top+s.height};break;case\"down\":r={x:r.x,y:s.top};break;case\"left\":r={x:s.left+s.width,y:r.y};break;case\"right\":r={x:s.left,y:r.y};break}s.distance=Math.sqrt(Math.pow(n.center.x-r.x,2)+Math.pow(n.center.y-r.y,2))})}function we(e,t,o,n){let s=o[e],r=[];switch(t){case\"up\":r=o.map((a,f)=>f===e||a.top+a.height>s.top?Number.MAX_SAFE_INTEGER:a.distance);break;case\"down\":r=o.map((a,f)=>f===e||a.top<s.top+s.height?Number.MAX_SAFE_INTEGER:a.distance);break;case\"left\":r=o.map((a,f)=>f===e||a.left+a.width>s.left?Number.MAX_SAFE_INTEGER:a.distance);break;case\"right\":r=o.map((a,f)=>f===e||a.left<s.left+s.width?Number.MAX_SAFE_INTEGER:a.distance);break}let i=r.indexOf(Math.min(...r));if(r[i]!==Number.MAX_SAFE_INTEGER)return n[i];return null}function Le(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function B(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function V(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function q(e,t){if(!e.exposed||!(t in e.exposed))throw new Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Re}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Re(s))return n[0]||void 0;let r=n.indexOf(s);return n[r+t]||void 0}function F(e){return Array.from(e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])')).filter((t)=>!t.hasAttribute(\"disabled\")||t.getAttribute(\"disabled\")!==\"true\").filter((t)=>!t.hasAttribute(\"aria-disabled\")||t.getAttribute(\"aria-disabled\")!==\"true\")}import{isHtmlElement as Fe}from\"@basmilius/utils\";import{unref as ke}from\"vue\";function p(e){let t=ke(e);if(Fe(t))return t;return t?.$el}function W(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=He(e),s=t.compareDocumentPosition(e),r;if(s&&Node.DOCUMENT_POSITION_PRECEDING||o)r=n.firstChild();else r=n.lastChild();(r!==null?r:e).focus()}function He(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class G{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,o=!0){let n={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(n),o)this.toggle(n,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let n=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),n&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new G;var X=!globalThis.document;function j(e,t,o){let n=Se([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Ae(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!Y(t))return;!Y(n).some((a)=>a.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((i)=>{let a=p(i);a&&r.push(a)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function Z(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as $,ref as Ne,watch as Ue}from\"vue\";function J(e,t,o=!1){let n=Ne($(e)?e.value:e),s=_e((r,i)=>({get(){return r(),n.value},set:Pe((a)=>{n.value=a,i()},t,o)}));if($(e))Ue(e,(r)=>s.value=r);return s}function Pe(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Ke}from\"vue\";function k(e,t,o,n={passive:!0}){Ke(e,(s,r,i)=>{if(!s)return;s.addEventListener(t,o,n),i(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function Q(e,t){let o=Ve();ze(()=>{s()}),Be(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),qe(e))}function s(){n(),t()}}import{ref as We,watch as Ge}from\"vue\";function ee(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let i=p(e);if(!i)return;let a=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);a.observe(i),r(()=>a.disconnect())},{immediate:!0}),o}import{onScopeDispose as Xe,watch as Ye}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Ye(()=>p(e),(a)=>{if(r(),!a)return;n=new MutationObserver(t),n.observe(a,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function i(){r(),s()}Xe(i)}import{DateTime as te}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function oe(e,t){let o=`flux/${e}`,n=je(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=te.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let i=r;if(te.isDateTime(r))i=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(i))}),n}import{ref as I,unref as $e}from\"vue\";function ne(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=$e(e);if(n instanceof Document)n=n.scrollingElement;t.value=n?.scrollLeft??0,o.value=n?.scrollTop??0}),{x:t,y:o}}import{ref as ie,watch as ce}from\"vue\";import{onMounted as Je,onUnmounted as Qe,ref as re,unref as se}from\"vue\";var et=0;function D(e=!1){let t=re(`focus-trap-${++et}`),o=re(!1);return Je(()=>w.add(se(t),(n)=>o.value=n,e)),Qe(()=>w.remove(se(t))),o}import{onUnmounted as tt,ref as ot,unref as ae}from\"vue\";function A(e){let t=ot(document.activeElement);tt(()=>{if(ae(e))return;requestAnimationFrame(()=>ae(t)?.focus())})}function le(e,t={}){if(X)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);A(n),ce(e,(i,a,f)=>{let l=p(e),u=s||document;if(r.value&&l&&document.activeElement&&!l.contains(document.activeElement)&&!l.querySelector(\"[autofocus]\"))g(l,document.activeElement,!0);function v(c){if(!r.value||!l)return;let m=c.target||document.body;if(l.contains(m))return;c.preventDefault(),c.stopImmediatePropagation(),g(l,m)}function L(c){if(!r.value||!l)return;if(!c.relatedTarget||c.relatedTarget===document.body)c.preventDefault(),l.focus();let m=c.target||document.body;if(l.contains(m))return;g(l,m)}if(u.addEventListener(\"focusin\",v,{capture:!0}),u.addEventListener(\"focusout\",L,{capture:!0}),l){let c=d(l),m=c.findIndex((T)=>T.classList.contains(\"is-active\")),h=c.findIndex((T)=>!T.hasAttribute(\"aria-disabled\")),y=c[0];if(m>-1)y=c[m];if(h>-1)y=c[h];if(y)y.focus()}f(()=>{u.removeEventListener(\"focusin\",v),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ce(()=>o,()=>{let i=p(e);if(r.value=!o,o||!i)return;let a=d(i);if(a.includes(document.activeElement))return;a[0]?.focus()},{immediate:!0})}import{onMounted as nt,onUnmounted as rt,ref as st}from\"vue\";function fe(e){let t=st(null);nt(()=>t.value=w.subscribe(e)),rt(()=>t.value?.())}import{watch as at}from\"vue\";function pe(e,{cycle:t=!0,direction:o=\"bidirectional\"}={}){H(e,()=>s(n(),!1));function n(){let i=p(e),a=d(i),f=a.findIndex((u)=>u.classList.contains(\"is-active\")),l=a.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(i,a=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===i?0:-1),a&&l[i]?.focus()}function r(i){let a=p(e),f=d(a);if([\"Enter\",\" \"].includes(i.key))return;switch(o){case\"bidirectional\":it(i,a,f,s);break;case\"horizontal\":case\"vertical\":ct(i,a,t,o,f,s);break}}at(e,(i,a,f)=>{let l=p(e);if(!l)return;l.addEventListener(\"keydown\",r),s(n(),!1),f(()=>l.removeEventListener(\"keydown\",r))},{immediate:!0})}function it(e,t,o,n){let s;switch(e.key){case\"ArrowUp\":s=\"up\";break;case\"ArrowDown\":s=\"down\";break;case\"ArrowLeft\":s=\"left\";break;case\"ArrowRight\":s=\"right\";break;default:return}let r=M(t,document.activeElement,s);if(r)n(o.indexOf(r));e.preventDefault()}function ct(e,t,o,n,s,r){let i;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))i=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))i=1;else return;let a=R(t,i);if(a)r(s.indexOf(a));else if(o)r(i===1?0:s.length-1);e.preventDefault()}var nn=\"#f8fafc\",rn=\"#f1f5f9\",sn=\"#e2e8f0\",an=\"#cbd5e1\",cn=\"#94a3b8\",ln=\"#64748b\",fn=\"#475569\",pn=\"#334155\",un=\"#1e293b\",dn=\"#0f172a\",mn=\"#020617\",xn=\"#f9fafb\",bn=\"#f3f4f6\",hn=\"#e5e7eb\",yn=\"#d1d5db\",Tn=\"#9ca3af\",vn=\"#6b7280\",En=\"#4b5563\",gn=\"#374151\",wn=\"#1f2937\",Ln=\"#111827\",Mn=\"#030712\",Rn=\"#fafafa\",Fn=\"#f4f4f5\",kn=\"#e4e4e7\",Hn=\"#d4d4d8\",Dn=\"#a1a1aa\",An=\"#71717a\",Sn=\"#52525b\",In=\"#3f3f46\",On=\"#27272a\",Cn=\"#18181b\",_n=\"#09090b\",Nn=\"#fafafa\",Un=\"#f5f5f5\",Pn=\"#e5e5e5\",Kn=\"#d4d4d4\",zn=\"#a3a3a3\",Bn=\"#737373\",Vn=\"#525252\",qn=\"#404040\",Wn=\"#262626\",Gn=\"#171717\",Xn=\"#0a0a0a\",Yn=\"#fafaf9\",jn=\"#f5f5f4\",Zn=\"#e7e5e4\",$n=\"#d6d3d1\",Jn=\"#a8a29e\",Qn=\"#78716c\",er=\"#57534e\",tr=\"#44403c\",or=\"#292524\",nr=\"#1c1917\",rr=\"#0c0a09\",sr=\"#fef2f2\",ar=\"#fee2e2\",ir=\"#fecaca\",cr=\"#fca5a5\",lr=\"#f87171\",fr=\"#ef4444\",pr=\"#dc2626\",ur=\"#b91c1c\",dr=\"#991b1b\",mr=\"#7f1d1d\",xr=\"#450a0a\",br=\"#fff7ed\",hr=\"#ffedd5\",yr=\"#fed7aa\",Tr=\"#fdba74\",vr=\"#fb923c\",Er=\"#f97316\",gr=\"#ea580c\",wr=\"#c2410c\",Lr=\"#9a3412\",Mr=\"#7c2d12\",Rr=\"#431407\",Fr=\"#fffbeb\",kr=\"#fef3c7\",Hr=\"#fde68a\",Dr=\"#fcd34d\",Ar=\"#fbbf24\",Sr=\"#f59e0b\",Ir=\"#d97706\",Or=\"#b45309\",Cr=\"#92400e\",_r=\"#78350f\",Nr=\"#451a03\",Ur=\"#fefce8\",Pr=\"#fef9c3\",Kr=\"#fef08a\",zr=\"#fde047\",Br=\"#facc15\",Vr=\"#eab308\",qr=\"#ca8a04\",Wr=\"#a16207\",Gr=\"#854d0e\",Xr=\"#713f12\",Yr=\"#422006\",jr=\"#f7fee7\",Zr=\"#ecfccb\",$r=\"#d9f99d\",Jr=\"#bef264\",Qr=\"#a3e635\",es=\"#84cc16\",ts=\"#65a30d\",os=\"#4d7c0f\",ns=\"#3f6212\",rs=\"#365314\",ss=\"#1a2e05\",as=\"#f0fdf4\",is=\"#dcfce7\",cs=\"#bbf7d0\",ls=\"#86efac\",fs=\"#4ade80\",ps=\"#22c55e\",us=\"#16a34a\",ds=\"#15803d\",ms=\"#166534\",xs=\"#14532d\",bs=\"#052e16\",hs=\"#ecfdf5\",ys=\"#d1fae5\",Ts=\"#a7f3d0\",vs=\"#6ee7b7\",Es=\"#34d399\",gs=\"#10b981\",ws=\"#059669\",Ls=\"#047857\",Ms=\"#065f46\",Rs=\"#064e3b\",Fs=\"#022c22\",ks=\"#f0fdfa\",Hs=\"#ccfbf1\",Ds=\"#99f6e4\",As=\"#5eead4\",Ss=\"#2dd4bf\",Is=\"#14b8a6\",Os=\"#0d9488\",Cs=\"#0f766e\",_s=\"#115e59\",Ns=\"#134e4a\",Us=\"#042f2e\",Ps=\"#ecfeff\",Ks=\"#cffafe\",zs=\"#a5f3fc\",Bs=\"#67e8f9\",Vs=\"#22d3ee\",qs=\"#06b6d4\",Ws=\"#0891b2\",Gs=\"#0e7490\",Xs=\"#155e75\",Ys=\"#164e63\",js=\"#083344\",Zs=\"#f0f9ff\",$s=\"#e0f2fe\",Js=\"#bae6fd\",Qs=\"#7dd3fc\",ea=\"#38bdf8\",ta=\"#0ea5e9\",oa=\"#0284c7\",na=\"#0369a1\",ra=\"#075985\",sa=\"#0c4a6e\",aa=\"#082f49\",ia=\"#eff6ff\",ca=\"#dbeafe\",la=\"#bfdbfe\",fa=\"#93c5fd\",pa=\"#60a5fa\",ua=\"#3b82f6\",da=\"#2563eb\",ma=\"#1d4ed8\",xa=\"#1e40af\",ba=\"#1e3a8a\",ha=\"#172554\",ya=\"#eef2ff\",Ta=\"#e0e7ff\",va=\"#c7d2fe\",Ea=\"#a5b4fc\",ga=\"#818cf8\",wa=\"#6366f1\",La=\"#4f46e5\",Ma=\"#4338ca\",Ra=\"#3730a3\",Fa=\"#312e81\",ka=\"#1e1b4b\",Ha=\"#f5f3ff\",Da=\"#ede9fe\",Aa=\"#ddd6fe\",Sa=\"#c4b5fd\",Ia=\"#a78bfa\",Oa=\"#8b5cf6\",Ca=\"#7c3aed\",_a=\"#6d28d9\",Na=\"#5b21b6\",Ua=\"#4c1d95\",Pa=\"#2e1065\",Ka=\"#faf5ff\",za=\"#f3e8ff\",Ba=\"#e9d5ff\",Va=\"#d8b4fe\",qa=\"#c084fc\",Wa=\"#a855f7\",Ga=\"#9333ea\",Xa=\"#7e22ce\",Ya=\"#6b21a8\",ja=\"#581c87\",Za=\"#3b0764\",$a=\"#fdf4ff\",Ja=\"#fae8ff\",Qa=\"#f5d0fe\",ei=\"#f0abfc\",ti=\"#e879f9\",oi=\"#d946ef\",ni=\"#c026d3\",ri=\"#a21caf\",si=\"#86198f\",ai=\"#701a75\",ii=\"#4a044e\",ci=\"#fdf2f8\",li=\"#fce7f3\",fi=\"#fbcfe8\",pi=\"#f9a8d4\",ui=\"#f472b6\",di=\"#ec4899\",mi=\"#db2777\",xi=\"#be185d\",bi=\"#9d174d\",hi=\"#831843\",yi=\"#500724\",Ti=\"#fff1f2\",vi=\"#ffe4e6\",Ei=\"#fecdd3\",gi=\"#fda4af\",wi=\"#fb7185\",Li=\"#f43f5e\",Mi=\"#e11d48\",Ri=\"#be123c\",Fi=\"#9f1239\",ki=\"#881337\",Hi=\"#4c0519\";class ue{#t;#e;constructor(e){this.#e=[],this.#t=e,this.onKeyDown=this.onKeyDown.bind(this)}focusElement(e,t=!0){if(!this.#e[e])return;for(let o=0;o<this.#e.length;++o)this.#e[o].tabIndex=o===e?0:-1;if(t)this.#e[e]?.focus()}register(){this.#e=F(this.#t),this.#t.addEventListener(\"keydown\",this.onKeyDown),this.focusElement(0,!1)}unregister(){this.#t.removeEventListener(\"keydown\",this.onKeyDown)}onKeyDown(e){let t=this.#t.querySelector('[tabindex=\"0\"]'),o=this.#e.findIndex((n)=>n===t)??0;switch(e.key){case\"ArrowUp\":case\"ArrowLeft\":this.focusElement(o-1);break;case\"ArrowDown\":case\"ArrowRight\":this.focusElement(o+1);break;default:return}e.preventDefault(),e.stopPropagation()}}var lt={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new ue(e);t.register(),O.set(e,t)}},O=new WeakMap;class de{#t;#e;constructor(e){this.#t=e,this.#e=new MutationObserver(this.onMutation.bind(this))}register(){this.#e.observe(this.#t,{childList:!0,subtree:!0}),requestAnimationFrame(this.onMutation.bind(this))}unregister(){this.#e.disconnect()}onMutation(){let{height:e}=getComputedStyle(this.#t);this.#t.style.height=\"auto\";let{height:t}=getComputedStyle(this.#t);if(this.#t.style.height=e,t===e)return;getComputedStyle(this.#t),requestAnimationFrame(()=>requestAnimationFrame(()=>this.#t.style.height=t))}}var ft={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new de(e);t.register(),C.set(e,t)}},C=new WeakMap;export{_n as zinc950,Cn as zinc900,On as zinc800,In as zinc700,Sn as zinc600,An as zinc500,Rn as zinc50,Dn as zinc400,Hn as zinc300,kn as zinc200,Fn as zinc100,Yr as yellow950,Xr as yellow900,Gr as yellow800,Wr as yellow700,qr as yellow600,Vr as yellow500,Ur as yellow50,Br as yellow400,zr as yellow300,Kr as yellow200,Pr as yellow100,g as wrapFocus,W as warn,Pa as violet950,Ua as violet900,Na as violet800,_a as violet700,Ca as violet600,Oa as violet500,Ha as violet50,Ia as violet400,Sa as violet300,Aa as violet200,Da as violet100,ft as vHeightTransition,lt as vFocusTrap,ne as useScrollPosition,oe as useRemembered,H as useMutationObserver,Q as useInterval,ee as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,A as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,J as useDebouncedRef,Z as useComponentId,j as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Us as teal950,Ns as teal900,_s as teal800,Cs as teal700,Os as teal600,Is as teal500,ks as teal50,Ss as teal400,As as teal300,Ds as teal200,Hs as teal100,rr as stone950,nr as stone900,or as stone800,tr as stone700,er as stone600,Qn as stone500,Yn as stone50,Jn as stone400,$n as stone300,Zn as stone200,jn as stone100,mn as slate950,dn as slate900,un as slate800,pn as slate700,fn as slate600,ln as slate500,nn as slate50,cn as slate400,an as slate300,sn as slate200,rn as slate100,aa as sky950,sa as sky900,ra as sky800,na as sky700,oa as sky600,ta as sky500,Zs as sky50,ea as sky400,Qs as sky300,Js as sky200,$s as sky100,Hi as rose950,ki as rose900,Fi as rose800,Ri as rose700,Mi as rose600,Li as rose500,Ti as rose50,wi as rose400,gi as rose300,Ei as rose200,vi as rose100,xr as red950,mr as red900,dr as red800,ur as red700,pr as red600,fr as red500,sr as red50,lr as red400,cr as red300,ir as red200,ar as red100,Za as purple950,ja as purple900,Ya as purple800,Xa as purple700,Ga as purple600,Wa as purple500,Ka as purple50,qa as purple400,Va as purple300,Ba as purple200,za as purple100,yi as pink950,hi as pink900,bi as pink800,xi as pink700,mi as pink600,di as pink500,ci as pink50,ui as pink400,pi as pink300,fi as pink200,li as pink100,Rr as orange950,Mr as orange900,Lr as orange800,wr as orange700,gr as orange600,Er as orange500,br as orange50,vr as orange400,Tr as orange300,yr as orange200,hr as orange100,Xn as neutral950,Gn as neutral900,Wn as neutral800,qn as neutral700,Vn as neutral600,Bn as neutral500,Nn as neutral50,zn as neutral400,Kn as neutral300,Pn as neutral200,Un as neutral100,ss as lime950,rs as lime900,ns as lime800,os as lime700,ts as lime600,es as lime500,jr as lime50,Qr as lime400,Jr as lime300,$r as lime200,Zr as lime100,X as isSSR,ka as indigo950,Fa as indigo900,Ra as indigo800,Ma as indigo700,La as indigo600,wa as indigo500,ya as indigo50,ga as indigo400,Ea as indigo300,va as indigo200,Ta as indigo100,bs as green950,xs as green900,ms as green800,ds as green700,us as green600,ps as green500,as as green50,fs as green400,ls as green300,cs as green200,is as green100,Mn as gray950,Ln as gray900,wn as gray800,gn as gray700,En as gray600,vn as gray500,xn as gray50,Tn as gray400,yn as gray300,hn as gray200,bn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,q as getExposedRef,V as getComponentProps,B as getComponentName,M as getBidirectionalFocusElement,ii as fuchsia950,ai as fuchsia900,si as fuchsia800,ri as fuchsia700,ni as fuchsia600,oi as fuchsia500,$a as fuchsia50,ti as fuchsia400,ei as fuchsia300,Qa as fuchsia200,Ja as fuchsia100,z as flattenVNodeTree,Fs as emerald950,Rs as emerald900,Ms as emerald800,Ls as emerald700,ws as emerald600,gs as emerald500,hs as emerald50,Es as emerald400,vs as emerald300,Ts as emerald200,ys as emerald100,js as cyan950,Ys as cyan900,Xs as cyan800,Gs as cyan700,Ws as cyan600,qs as cyan500,Ps as cyan50,Vs as cyan400,Bs as cyan300,zs as cyan200,Ks as cyan100,ha as blue950,ba as blue900,xa as blue800,ma as blue700,da as blue600,ua as blue500,ia as blue50,pa as blue400,fa as blue300,la as blue200,ca as blue100,Nr as amber950,_r as amber900,Cr as amber800,Or as amber700,Ir as amber600,Sr as amber500,Fr as amber50,Ar as amber400,Dr as amber300,Hr as amber200,kr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=87BCF3546FF8C71064756E2164756E21\n//# sourceMappingURL=index.js.map\n","<template>\n <svg\n v-if=\"definition\"\n :viewBox=\"`0 0 ${definition.width} ${definition.height}`\"\n :class=\"$style.fontAwesomeIcon\"\n :style=\"{\n fontSize: size && `${size}px`,\n scale: definition.scale > 1 ? definition.scale : undefined\n }\"\n focusable=\"false\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n <path\n v-for=\"path in definition.paths\"\n :d=\"path\"\n fill=\"currentColor\"/>\n </svg>\n\n <i\n v-else-if=\"name\"\n :class=\"$style.materialSymbolIcon\"\n :style=\"{\n fontSize: size && `${size}px`\n }\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n {{ name }}\n </i>\n\n <i\n v-else\n :class=\"$style.icon\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { warn } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed } from 'vue';\n import { iconRegistry } from '$flux/data';\n import $style from '$flux/css/component/Icon.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n name\n } = defineProps<{\n readonly size?: number | string;\n readonly name?: FluxIconName;\n }>();\n\n const definition = computed(() => {\n if (!name) {\n return null;\n }\n\n const icon = iconRegistry[name];\n\n if (!icon) {\n warn(`Unknown icon: ${name}`);\n\n return null;\n }\n\n return {\n width: icon[0],\n height: icon[1],\n paths: (Array.isArray(icon[4]) ? icon[4] : [icon[4]]) as string[],\n scale: Math.max(1, icon[0] / 512)\n };\n });\n\n const onClick = (evt: MouseEvent) => emit('click', evt);\n</script>\n","<template>\n <router-link\n v-if=\"componentType === 'route'\"\n v-bind=\"$attrs\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </router-link>\n\n <a\n v-else-if=\"componentType === 'link'\"\n v-bind=\"$attrs\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </a>\n\n <button\n v-else-if=\"componentType === 'button'\"\n v-bind=\"$attrs\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </button>\n\n <div\n v-else\n v-bind=\"$attrs\"\n @click=\"onClick\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPressableType, FluxTo } from '@flux-ui/types';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n mouseenter: [MouseEvent];\n mouseleave: [MouseEvent];\n }>();\n\n defineProps<{\n readonly componentType?: FluxPressableType;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onClick(evt: MouseEvent, navigate?: (evt: MouseEvent) => void): void {\n emit('click', evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n\n navigate?.(evt);\n }\n</script>\n","<template>\n <svg\n :class=\"$style.spinner\"\n viewBox=\"0 0 24 24\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <circle\n :class=\"$style.spinnerTrack\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"/>\n\n <circle\n :class=\"$style.spinnerEffect\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n\n <circle\n :class=\"$style.spinnerValue\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Spinner.module.scss';\n\n defineProps<{\n readonly size?: number;\n }>();\n</script>\n","<template>\n <FluxPressable\n :component-type=\"type\"\n :class=\"clsx(\n cssClass,\n isFilled && $style.isFilled,\n size === 'small' && $style.isSmall,\n size === 'medium' && $style.isMedium,\n size === 'large' && $style.isLarge,\n size === 'xl' && $style.isXl\n )\"\n :type=\"isSubmit ? 'submit' : 'button'\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\">\n <slot name=\"before\"/>\n\n <slot name=\"iconLeading\">\n <FluxSpinner\n v-if=\"isLoading && (iconLeading || !iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconLeading\"\n :class=\"cssClassIcon\"\n :name=\"iconLeading\"/>\n </slot>\n\n <slot name=\"label\">\n <span\n v-if=\"label\"\n :class=\"cssClassLabel\">\n {{ label }}\n </span>\n </slot>\n\n <slot name=\"iconTrailing\">\n <FluxSpinner\n v-if=\"isLoading && (!iconLeading && iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"cssClassIcon\"\n :name=\"iconTrailing\"/>\n </slot>\n\n <slot name=\"after\"/>\n </FluxPressable>\n</template>\n\n<script lang=\"ts\">\n export const SLOTS = ['default', 'after', 'before', 'iconLeading', 'iconTrailing', 'label'] as const;\n</script>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/base/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n disabled: componentDisabled,\n isLoading,\n size = 'medium',\n tabindex = 0,\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly cssClass: string;\n readonly cssClassIcon: string;\n readonly cssClassLabel: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onClick(evt: MouseEvent): void {\n if (unref(disabled) || isLoading) {\n evt.preventDefault();\n evt.stopPropagation();\n return;\n }\n\n emit('click', evt);\n }\n\n function onMouseEnter(evt: MouseEvent): void {\n emit('mouseenter', evt);\n }\n\n function onMouseLeave(evt: MouseEvent): void {\n emit('mouseleave', evt);\n }\n</script>\n","<template>\n <FluxButton\n :=\"{disabled, isLoading, label, href, rel, target, to, type}\"\n :css-class=\"$style.action\"\n :css-class-icon=\"$style.actionIcon\"\n :css-class-label=\"$style.actionLabel\"\n :class=\"isDestructive && $style.isDestructive\"\n :icon-leading=\"icon\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxIconName } from '@flux-ui/types';\n import FluxButton from './FluxButton.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading' | 'iconTrailing' | 'isFilled' | 'size'> & {\n readonly icon?: FluxIconName;\n readonly isDestructive?: boolean;\n }>();\n</script>\n","import type { FluxFormSelectEntry, FluxFormSelectOption, FluxFormSelectOptions, FluxFormSelectValue } from '@flux-ui/types';\nimport type { Ref } from 'vue';\nimport { computed, unref } from 'vue';\nimport { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n\nexport default function (modelValue: Ref<FluxFormSelectValue>, isMultiple: boolean, options: Ref<FluxFormSelectEntry[]>, searchQuery?: Ref<string>) {\n const values = computed(() => {\n const model = unref(modelValue);\n return Array.isArray(model) ? model : [model];\n });\n\n const groups = computed(() => {\n const groups: FluxFormSelectOptions[] = [];\n const search = unref(searchQuery)?.trim().toLowerCase();\n\n const available = unref(options)\n .filter(o => !('value' in o) || (!search || o.label.toLowerCase().includes(search)))\n .filter(o => !('value' in o) || !isMultiple || !unref(selected).find(s => s.value === o.value));\n\n if (available.length === 0) {\n return [];\n }\n\n if (!available.find(isFluxFormSelectGroup)) {\n return [[null, available]] as FluxFormSelectOptions[];\n }\n\n for (let i = 0; i < available.length;) {\n const item = available[i];\n\n if (isFluxFormSelectOption(item)) {\n ++i;\n groups.push([null, [item]]);\n continue;\n }\n\n const subItems: FluxFormSelectOption[] = [];\n\n for (++i; i <= available.length; ++i) {\n const subItem = available[i];\n\n if (isFluxFormSelectGroup(subItem) || i === available.length) {\n if (subItems.length > 0) {\n groups.push([item, subItems]);\n }\n\n break;\n }\n\n subItems.push(subItem);\n }\n }\n\n return groups;\n });\n\n const selected = computed(() => unref(values)\n .map(v => unref(options).find(o => isFluxFormSelectOption(o) && o.value === v))\n .filter(isFluxFormSelectOption));\n\n return {\n groups,\n selected,\n values\n };\n}\n","import { computed, shallowRef, unref } from 'vue';\n\nexport default function () {\n const tasks = shallowRef(0);\n\n const isLoading = computed(() => unref(tasks) > 0);\n\n function loaded<T extends Function>(fn: T): T {\n return (async (...args: any[]) => {\n tasks.value++;\n\n return await fn(...args)\n .finally(() => tasks.value--);\n }) as unknown as T;\n }\n\n return {\n isLoading,\n loaded\n };\n}\n","import { getCurrentInstance } from 'vue';\nimport type { FluxTranslate, FluxTranslation } from '$flux/data';\nimport { english } from '$flux/data';\n\nconst fallback: FluxTranslate = (key, params) => {\n if (!(key in english)) {\n return key;\n }\n\n let translation: string = english[key as FluxTranslation];\n\n for (let paramName in params) {\n translation = translation.replaceAll(`{${paramName}}`, params[paramName].toString());\n }\n\n return translation;\n};\n\nexport default () => {\n const instance = getCurrentInstance()?.proxy;\n\n if (!instance || !isVueI18n(instance)) {\n return fallback;\n }\n\n return instance.$t;\n};\n\ntype VueI18n = {\n $t: FluxTranslate;\n}\n\nfunction isVueI18n(obj: object | null): obj is VueI18n {\n return !!obj && '$t' in obj;\n}\n","<template>\n <div :class=\"$style.buttonGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Button.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.destructiveButton\"\n :css-class-icon=\"$style.destructiveButtonIcon\"\n :css-class-label=\"$style.destructiveButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"CLASS_MAP[variant]\">\n <slot/>\n\n <slot\n v-if=\"isLoading\"\n name=\"loader\">\n <div :class=\"$style.paneLoader\">\n <FluxSpinner/>\n </div>\n </slot>\n\n <div\n v-if=\"tag\"\n :class=\"$style.paneTag\">\n {{ tag }}\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const CLASS_MAP = {\n default: $style.paneDefault,\n flat: $style.paneFlat,\n well: $style.paneWell\n } as const;\n\n const {\n variant = 'default'\n } = defineProps<{\n readonly isLoading?: boolean;\n readonly tag?: string;\n readonly variant?: 'default' | 'flat' | 'well';\n }>();\n\n defineSlots<{\n default(): any;\n loader(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"mount\"\n :class=\"$style.flyout\"\n :style=\"{\n '--opener-width': `${openerWidth}px`,\n '--pane-mx': `${paneMarginX}px`,\n '--pane-my': `${paneMarginY}px`,\n '--pane-x': `${paneX - 12}px`,\n '--pane-y': `${paneY - 12}px`\n }\">\n <slot\n name=\"opener\"\n v-bind=\"{close, open, toggle}\"/>\n\n <dialog\n ref=\"dialog\"\n :class=\"$style.flyoutDialog\"\n @click=\"onDialogBackdropClick\"\n @keydown.prevent.esc=\"close\">\n <FluxPane\n v-if=\"isOpen\"\n ref=\"pane\"\n :class=\"clsx(\n $style.flyoutPane,\n isAutoWidth && $style.isAutoWidth,\n isClosing && $style.isClosing,\n isOpening && $style.isOpening\n )\"\n :style=\"{\n width: `${width}px`\n }\">\n <slot v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </FluxPane>\n </dialog>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useFocusTrap } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { provide, ref, unref, useTemplateRef, watch } from 'vue';\n import { FluxFlyoutInjectionKey } from '$flux/data';\n import FluxPane from './FluxPane.vue';\n import $style from '$flux/css/component/Flyout.module.scss';\n\n const {\n direction = 'vertical',\n margin = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly isAutoWidth?: boolean;\n readonly margin?: number;\n readonly width?: number | string;\n }>();\n\n defineSlots<{\n default(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n opener(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const dialogRef = useTemplateRef('dialog');\n const mountRef = useTemplateRef('mount');\n const paneRef = useTemplateRef('pane');\n\n const isClosing = ref(false);\n const isOpening = ref(false);\n const isOpen = ref(false);\n const openerWidth = ref(0);\n const openerHeight = ref(0);\n const paneX = ref(0);\n const paneY = ref(0);\n const paneMarginX = ref(0);\n const paneMarginY = ref(0);\n\n useFocusTrap(paneRef);\n\n function close(): void {\n const pane = unrefTemplateElement(paneRef);\n\n if (!pane) {\n return;\n }\n\n pane.addEventListener('animationend', () => {\n isClosing.value = false;\n isOpen.value = false;\n }, {once: true});\n\n isClosing.value = true;\n }\n\n function open(): void {\n const mount = unref(mountRef)!;\n const {width, height} = mount.children[0].getBoundingClientRect();\n\n isOpen.value = true;\n openerWidth.value = width;\n openerHeight.value = height;\n\n requestAnimationFrame(() => {\n const pane = unrefTemplateElement(paneRef)!;\n\n pane.addEventListener('animationend', () => {\n isOpening.value = false;\n }, {once: true});\n\n isOpening.value = true;\n });\n\n requestAnimationFrame(reposition);\n }\n\n function reposition(): void {\n const mount = unref(mountRef)!;\n const pane = unrefTemplateElement(paneRef)!;\n const {top, left, width, height} = mount.children[0].getBoundingClientRect();\n const {width: paneWidth, height: paneHeight} = pane.getBoundingClientRect();\n\n let x, y, mx = 0, my = 0;\n\n if (direction === 'horizontal') {\n x = left + width;\n y = top + height / 2 - paneHeight / 2;\n mx = margin;\n\n if (x + paneWidth > innerWidth - 30) {\n x = left - paneWidth;\n mx = -mx;\n }\n } else {\n x = left + width / 2 - paneWidth / 2;\n y = top + height;\n my = margin;\n\n if (y + paneHeight > innerHeight - 30) {\n y = top - paneHeight;\n my = -my;\n }\n }\n\n paneX.value = Math.max(30, Math.min(innerWidth - paneWidth - 30, x));\n paneY.value = Math.max(30, Math.min(innerHeight - paneHeight - 30, y));\n paneMarginX.value = mx;\n paneMarginY.value = my;\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n function onDialogBackdropClick(evt: Event): void {\n const target = evt.target as HTMLElement;\n\n if (target.tagName !== 'DIALOG') {\n return;\n }\n\n close();\n }\n\n watch(isOpen, (isOpen, _, onCleanup) => {\n const dialog = unref(dialogRef)!;\n\n if (isOpen && !dialog.open) {\n dialog.showModal();\n\n window.addEventListener('scroll', reposition, {passive: true});\n onCleanup(() => window.removeEventListener('scroll', reposition));\n } else if (!isOpen && dialog.open) {\n dialog.close();\n }\n });\n\n provide(FluxFlyoutInjectionKey, {\n isClosing,\n isOpen,\n isOpening\n });\n\n defineExpose({\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.secondaryButton\"\n :css-class-icon=\"$style.secondaryButtonIcon\"\n :css-class-label=\"$style.secondaryButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"$style.spacer\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n</script>\n","<template>\n <Component\n :is=\"tag ?? 'div'\"\n :class=\"clsx(\n direction === 'horizontal' && $style.stackHorizontal,\n direction === 'vertical' && $style.stackVertical,\n isCentered && $style.isCentered,\n isFill && $style.isFill,\n isWrapping && $style.isWrapping\n )\"\n :style=\"{\n '--gap': gap && `${gap}px`\n }\">\n <slot/>\n </Component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n direction = 'vertical',\n gap = 30\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isCentered?: boolean;\n readonly isFill?: boolean;\n readonly isWrapping?: boolean;\n readonly tag?: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { defineComponent, getCurrentInstance, onMounted, onUnmounted, PropType, ref, SlotsType, VNode } from 'vue';\n import { addTooltip, removeTooltip } from '$flux/data';\n\n export default defineComponent({\n props: {\n content: String as PropType<string | undefined>,\n direction: String as PropType<'horizontal' | 'vertical'>\n },\n slots: Object as SlotsType<{\n content: () => VNode[],\n default: () => VNode[],\n }>,\n setup(props, {slots}) {\n const instance = getCurrentInstance()!;\n\n const tooltipId = ref<number | null>(null);\n\n onMounted(() => {\n const elm = instance.proxy!.$el;\n elm.addEventListener('mouseenter', onHover, {passive: true});\n elm.addEventListener('mouseleave', onLeave, {passive: true});\n });\n\n onUnmounted(() => {\n const elm = instance.proxy!.$el;\n elm.removeEventListener('mouseenter', onHover);\n elm.removeEventListener('mouseleave', onLeave);\n onLeave();\n });\n\n function onHover(): void {\n onLeave();\n\n if ((props.content?.trim().length ?? 0) === 0 && !slots.content) {\n return;\n }\n\n tooltipId.value = addTooltip({\n content: props.content,\n contentSlot: slots.content,\n direction: props.direction || 'vertical',\n origin: instance.proxy?.$el\n });\n }\n\n function onLeave(): void {\n if (tooltipId.value) {\n removeTooltip(tooltipId.value);\n }\n }\n\n return () => (slots.default?.() ?? [])[0] ?? null;\n }\n });\n</script>\n","<template>\n <FluxStack\n :class=\"$style.actionBar\"\n direction=\"horizontal\"\n :gap=\"9\">\n <slot name=\"primary\"/>\n <slot name=\"actionsStart\"/>\n\n <FluxSpacer/>\n\n <slot name=\"actionsBeforeSearch\"/>\n <slot name=\"search\"/>\n <slot name=\"actionsAfterSearch\"/>\n\n <FluxFlyout v-if=\"slots.filter\">\n <template #opener=\"{close, open, toggle}\">\n <slot\n v-bind=\"{close, open, toggle}\"\n name=\"filterOpener\">\n <FluxButtonGroup>\n <FluxSecondaryButton\n icon-leading=\"filter\"\n :label=\"translate('flux.filter')\"\n @click=\"open\"/>\n\n <FluxTooltip\n v-if=\"isResettable\"\n :content=\"translate('flux.filterReset')\">\n <FluxDestructiveButton\n icon-leading=\"xmark\"\n @click=\"$emit('reset')\"/>\n </FluxTooltip>\n </FluxButtonGroup>\n </slot>\n </template>\n\n <template #default=\"{close, paneX, paneY, openerWidth, openerHeight}\">\n <slot\n name=\"filter\"\n v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </template>\n </FluxFlyout>\n\n <slot name=\"actionsEnd\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useTranslate } from '$flux/composable/private';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxDestructiveButton from './FluxDestructiveButton.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import FluxStack from './FluxStack.vue';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<{\n reset: [];\n }>();\n\n defineProps<{\n readonly isResettable?: boolean;\n }>();\n\n const slots = defineSlots<{\n primary?(): any;\n actionsEnd?(): any;\n actionsStart?(): any;\n actionsAfterSearch?(): any;\n actionsBeforeSearch?(): any;\n search?(): any;\n\n filter?(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n filterOpener?(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxStack\n :direction=\"direction\"\n :gap=\"gap\"\n :is-fill=\"isFill\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import FluxStack from './FluxStack.vue';\n\n const {\n direction = 'horizontal',\n gap = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isFill?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneBody\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane\n :class=\"$style.actionPane\"\n :variant=\"paneVariant\">\n <slot name=\"base\"/>\n\n <div :class=\"$style.actionPaneGrid\">\n <FluxPaneBody :class=\"$style.actionPaneBody\">\n <slot/>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-if=\"slots.buttons\"\n :class=\"$style.actionPaneBody\">\n <FluxButtonStack direction=\"vertical\">\n <slot name=\"buttons\"/>\n </FluxButtonStack>\n </FluxPaneBody>\n </div>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxButtonStack from './FluxButtonStack.vue';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineProps<{\n readonly paneVariant?: 'default' | 'flat' | 'well';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n buttons?(): any;\n base?(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n ref=\"element\"\n direction=\"horizontal\"\n :gap=\"1\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'horizontal'\n });\n</script>\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.animatedColors\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useComponentId } from '@flux-ui/internals';\n import { computed, onBeforeUnmount, onMounted, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n type Polygon = [number, number, string, PolygonPoint[]];\n type PolygonPoint = [number, number, number];\n\n const {\n colors,\n incrementor = 1,\n opacity = .5,\n seed\n } = defineProps<{\n readonly colors?: string[];\n readonly incrementor?: number;\n readonly opacity?: number;\n readonly seed?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n const componentId = useComponentId();\n\n const contextRef = ref<CanvasRenderingContext2D>();\n const animationFrame = ref(0);\n const tick = ref(0);\n\n const polygons = computed(() => {\n if (!colors || colors.length === 0) {\n return [];\n }\n\n const mulberry = mulberry32(seed ?? unref(componentId));\n const polygons: Polygon[] = [];\n\n for (const color of colors) {\n const localMulberry = mulberry.fork();\n\n const x = colors.length === 1 ? .5 : localMulberry.next();\n const y = colors.length === 1 ? .5 : localMulberry.next();\n const count = Math.round(localMulberry.nextBetween(6, 9));\n const points: PolygonPoint[] = [];\n\n for (let p = 0; p < count; ++p) {\n points.push([\n localMulberry.next(),\n localMulberry.next(),\n localMulberry.next()\n ]);\n }\n\n polygons.push([x, y, color, points]);\n }\n\n return polygons;\n });\n\n onMounted(() => schedule());\n onBeforeUnmount(() => cancel());\n\n function cancel(): void {\n cancelAnimationFrame(animationFrame.value);\n }\n\n function schedule(): void {\n animationFrame.value = requestAnimationFrame(update);\n tick.value += incrementor;\n }\n\n function update(): void {\n const context = unref(contextRef);\n const shapes = unref(polygons);\n\n if (!context || shapes.length === 0) {\n return;\n }\n\n const width = context.canvas.offsetWidth;\n const height = context.canvas.offsetHeight;\n context.canvas.width = width;\n context.canvas.height = height;\n\n const widthBasedOpacity = Math.min(1, Math.max(.15, 360 / width));\n\n context.globalAlpha = opacity * widthBasedOpacity;\n context.globalCompositeOperation = 'screen';\n context.clearRect(0, 0, width, height);\n\n for (const [tx, ty, color, shape] of shapes) {\n context.save();\n context.translate(tx * width, ty * height);\n context.beginPath();\n context.fillStyle = color;\n\n for (let i = 0; i < shape.length; ++i) {\n let [x, y, m] = shape[i];\n\n x = Math.cos(x * Math.PI * 2 + tick.value / (m * 200 + 300)) * (width * .8);\n y = Math.sin(y * Math.PI * 2 + tick.value / (m * 100 + 300)) * (height * .8);\n\n if (i === 0) {\n context.moveTo(x, y);\n } else {\n context.lineTo(x, y);\n }\n }\n\n context.closePath();\n context.fill();\n context.restore();\n }\n\n schedule();\n }\n\n watch(canvasRef, canvas => {\n if (!canvas) {\n contextRef.value = undefined;\n return;\n }\n\n contextRef.value = canvas.getContext('2d', {\n alpha: true,\n colorSpace: 'display-p3'\n })!;\n }, {immediate: true});\n\n watch(polygons, () => {\n cancel();\n schedule();\n });\n</script>\n","<template>\n <div\n :class=\"$style.aspectRatio\"\n :style=\"{aspectRatio}\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n defineProps<{\n aspectRatio: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.autoGrid\"\n :style=\"{\n gap: `${gap}px`,\n '--min-column-width': minColumnWidth\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n gap = 30\n } = defineProps<{\n readonly gap?: number;\n readonly minColumnWidth: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.height = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.width = width;\n elm.style.height = 'auto';\n elm.style.visibility = 'hidden';\n\n const {height} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('width');\n elm.style.removeProperty('visibility');\n elm.style.height = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = height));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.height = height;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = '0'));\n }\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.width = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.height = height;\n elm.style.width = 'auto';\n elm.style.visibility = 'hidden';\n\n const {width} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('height');\n elm.style.removeProperty('visibility');\n elm.style.width = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = width));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.width = width;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = '0'));\n }\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.breakthroughTransitionBackEnterActive : $style.breakthroughTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.breakthroughTransitionBackEnterFrom : $style.breakthroughTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.breakthroughTransitionBackLeaveActive : $style.breakthroughTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.breakthroughTransitionBackLeaveTo : $style.breakthroughTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.fadeTransitionEnterActive\"\n :enter-from-class=\"$style.fadeTransitionEnterFrom\"\n :enter-to-class=\"$style.fadeTransitionEnterTo\"\n :leave-active-class=\"$style.fadeTransitionLeaveActive\"\n :leave-from-class=\"$style.fadeTransitionLeaveFrom\"\n :leave-to-class=\"$style.fadeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.overlayTransitionEnterActive\"\n :enter-from-class=\"$style.overlayTransitionEnterFrom\"\n :leave-active-class=\"$style.overlayTransitionLeaveActive\"\n :leave-to-class=\"$style.overlayTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.routeTransitionBackEnterActive : $style.routeTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.routeTransitionBackEnterFrom : $style.routeTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.routeTransitionBackLeaveActive : $style.routeTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.routeTransitionBackLeaveTo : $style.routeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.slideOverTransitionEnterActive\"\n :enter-from-class=\"$style.slideOverTransitionEnterFrom\"\n :leave-active-class=\"$style.slideOverTransitionLeaveActive\"\n :leave-to-class=\"$style.slideOverTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.tooltipTransitionEnterActive\"\n :enter-from-class=\"$style.tooltipTransitionEnterFrom\"\n :leave-active-class=\"$style.tooltipTransitionLeaveActive\"\n :leave-to-class=\"$style.tooltipTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.verticalWindowTransitionBackEnterActive : $style.verticalWindowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.verticalWindowTransitionBackEnterFrom : $style.verticalWindowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.verticalWindowTransitionBackLeaveActive : $style.verticalWindowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.verticalWindowTransitionBackLeaveTo : $style.verticalWindowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.windowTransitionBackEnterActive : $style.windowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.windowTransitionBackEnterFrom : $style.windowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.windowTransitionBackLeaveActive : $style.windowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.windowTransitionBackLeaveTo : $style.windowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n !status && $style.avatar,\n !!status && $style.statusAvatar,\n type !== 'none' && $style.avatarClickable\n )\"\n :style=\"{\n '--color': color,\n fontSize: size && `${size}px`\n }\"\n :component-type=\"type\"\n role=\"img\"\n :aria-label=\"alt\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <img\n v-if=\"src\"\n :class=\"$style.avatarImage\"\n :alt=\"alt\"\n :src=\"src\"/>\n\n <div\n v-else\n :class=\"fallback === 'colorized' ? $style.avatarFallbackColorized : $style.avatarFallbackNeutral\">\n <span v-if=\"fallbackInitials\">\n {{ fallbackInitials }}\n </span>\n\n <FluxIcon\n v-else-if=\"fallbackIcon\"\n :name=\"fallbackIcon\"/>\n </div>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.avatarLoading\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n\n <div\n v-if=\"status\"\n :class=\"STATUS_CLASS_MAP[status]\"/>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { amber600, blue600, cyan600, emerald600, fuchsia600, green600, indigo600, lime600, orange600, pink600, purple600, red600, rose600, sky600, teal600, violet600, yellow600 } from '@flux-ui/internals';\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Avatar.module.scss';\n\n const STATUS_CLASS_MAP = {\n gray: $style.avatarStatusGray,\n primary: $style.avatarStatusPrimary,\n danger: $style.avatarStatusDanger,\n info: $style.avatarStatusInfo,\n success: $style.avatarStatusSuccess,\n warning: $style.avatarStatusWarning\n } as const;\n\n defineEmits<FluxButtonEmits>();\n\n const {\n fallback = 'colorized',\n fallbackColors = [lime600, green600, emerald600, teal600, cyan600, sky600, blue600, indigo600, violet600, purple600, fuchsia600, pink600, rose600, red600, orange600, amber600, yellow600],\n fallbackIcon = 'user',\n fallbackInitials,\n type = 'none'\n } = defineProps<{\n readonly alt?: string;\n readonly fallback?: 'colorized' | 'neutral';\n readonly fallbackColors?: string[];\n readonly fallbackIcon?: FluxIconName;\n readonly fallbackInitials?: string;\n readonly isLoading?: boolean;\n readonly size?: number;\n readonly src?: string;\n readonly status?: FluxColor;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n const color = computed(() => fallbackColors[unref(colorSeed) % fallbackColors.length]);\n const colorSeed = computed(() => {\n let seed = 6;\n\n if (fallbackInitials) {\n for (let i = 0; i < fallbackInitials.length; ++i) {\n seed ^= fallbackInitials.charCodeAt(i);\n }\n } else if (fallbackIcon) {\n for (let i = 0; i < fallbackIcon.length; ++i) {\n seed ^= fallbackIcon.charCodeAt(i);\n }\n }\n\n return seed;\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.badgeGray,\n color === 'primary' && $style.badgePrimary,\n color === 'danger' && $style.badgeDanger,\n color === 'info' && $style.badgeInfo,\n color === 'success' && $style.badgeSuccess,\n color === 'warning' && $style.badgeWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.badgeDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"\n :name=\"icon\"/>\n\n <span :class=\"$style.badgeLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"type === 'none' && isDeletable\"\n :class=\"$style.badgeClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n type = 'none'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"6\"\n is-wrapping>\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { flattenVNodeTree, orange600, pink600, purple600 } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { cloneVNode, defineComponent, Fragment, h, PropType } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n export default defineComponent({\n inheritAttrs: false,\n props: {\n colors: {default: [purple600, 'transparent', orange600, 'transparent', pink600, 'transparent', purple600], type: Array as PropType<string[]>},\n duration: {default: 9, type: Number},\n offset: {default: 1, type: Number},\n radius: {default: undefined, type: [String, Number] as PropType<string | number>},\n width: {default: 2, type: Number}\n },\n setup(props, {attrs, slots}) {\n return () => h(\n Fragment,\n flattenVNodeTree(slots.default?.() ?? []).map(vnode => cloneVNode(vnode, {\n ...attrs,\n class: clsx(\n attrs.class as string,\n $style.borderShine\n ),\n style: {\n '--shine-colors': props.colors.join(', '),\n '--shine-duration': props.duration,\n '--shine-offset': props.offset,\n '--shine-radius': props.radius,\n '--shine-width': props.width\n }\n }))\n );\n }\n });\n</script>\n","<template>\n <div\n :class=\"clsx(\n !color && $style.iconBoxedDefault,\n color === 'gray' && $style.iconBoxedGray,\n color === 'primary' && $style.iconBoxedPrimary,\n color === 'danger' && $style.iconBoxedDanger,\n color === 'info' && $style.iconBoxedInfo,\n color === 'success' && $style.iconBoxedSuccess,\n color === 'warning' && $style.iconBoxedWarning,\n )\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <FluxIcon :name=\"name\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Icon.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n defineProps<{\n readonly color?: FluxColor;\n readonly name: FluxIconName;\n readonly size?: number;\n }>();\n</script>\n","<template>\n <component :is=\"tagName\">\n <slot/>\n </component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n defineProps<{\n readonly tagName: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"popup\"\n :style=\"{\n '--x': `${state.x}px`,\n '--y': `${state.y}px`,\n '--width': state.width ? `${state.width}px` : undefined\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n import { useMutationObserver } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { ComponentPublicInstance, onMounted, onUnmounted, reactive, ref, unref, useTemplateRef, watchEffect } from 'vue';\n\n const {\n anchor,\n direction = 'vertical',\n margin = 12,\n position,\n useAnchorWidth\n } = defineProps<{\n readonly anchor?: ComponentPublicInstance | HTMLElement | null;\n readonly direction?: FluxDirection;\n readonly margin?: number;\n readonly position?:\n | 'top' | 'top-left' | 'top-right'\n | 'left' | 'left-top' | 'left-bottom'\n | 'right' | 'right-top' | 'right-bottom'\n | 'bottom' | 'bottom-left' | 'bottom-right';\n readonly useAnchorWidth?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const anchorRef = ref<HTMLElement>();\n const popupRef = useTemplateRef('popup');\n\n const state = reactive({\n x: 0,\n y: 0,\n width: null as number | null\n });\n\n onMounted(() => {\n window.addEventListener('resize', onResize, {passive: true});\n window.addEventListener('scroll', onScroll, {capture: true, passive: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', onResize);\n window.removeEventListener('scroll', onScroll);\n });\n\n useMutationObserver(popupRef, () => {\n reposition();\n }, {childList: true, subtree: true});\n\n function reposition(): void {\n const anchor = unref(anchorRef);\n const popup = unref(popupRef);\n\n if (!anchor || !popup) {\n return;\n }\n\n const {x, y, height, width} = anchor.getBoundingClientRect();\n const {height: popupHeight, width: popupWidth} = popup.getBoundingClientRect();\n\n let px: number,\n py: number;\n\n switch (position) {\n case 'top':\n px = x + width / 2 - popupWidth / 2;\n py = y - popupHeight - margin;\n break;\n\n case 'top-left':\n px = x;\n py = y - popupHeight - margin;\n break;\n\n case 'top-right':\n px = x - popupWidth + width;\n py = y - popupHeight - margin;\n break;\n\n case 'left':\n px = x - popupWidth - margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'left-top':\n px = x - popupWidth - margin;\n py = y;\n break;\n\n case 'left-bottom':\n px = x - popupWidth - margin;\n py = y + height - popupHeight;\n break;\n\n case 'right':\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'right-top':\n px = x + width + margin;\n py = y;\n break;\n\n case 'right-bottom':\n px = x + width + margin;\n py = y + height - popupHeight;\n break;\n\n case 'bottom':\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n break;\n\n case 'bottom-left':\n px = x;\n py = y + height + margin;\n break;\n\n case 'bottom-right':\n px = x - popupWidth + width;\n py = y + height + margin;\n break;\n\n default:\n if (direction === 'horizontal') {\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n\n if (px + popupWidth > innerWidth) {\n px = x - popupWidth - margin;\n }\n } else {\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n\n if (py + popupHeight > innerHeight) {\n py = y - popupHeight - margin;\n }\n }\n break;\n }\n\n state.x = px;\n state.y = py;\n }\n\n function resize(): void {\n const anchor = unref(anchorRef);\n\n if (!anchor) {\n return;\n }\n\n const {width} = anchor.getBoundingClientRect();\n state.width = useAnchorWidth ? width : null;\n }\n\n function onResize(): void {\n resize();\n reposition();\n }\n\n function onScroll(): void {\n reposition();\n }\n\n watchEffect(() => {\n if (!anchor || (!isHtmlElement(anchor) && !anchor.$el)) {\n return;\n }\n\n anchorRef.value = isHtmlElement(anchor) ? anchor : anchor.$el;\n\n requestAnimationFrame(resize);\n requestAnimationFrame(reposition);\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isLoading, label, href, rel, target, to}\"\n :css-class=\"$style.menuItem\"\n :css-class-icon=\"$style.menuItemIcon\"\n :css-class-label=\"$style.menuItemLabel\"\n is-filled\n :role=\"isSelectable ? 'menuitemradio' : 'menuitem'\"\n :class=\"{\n [$style.menuItemActive]: isActive,\n [$style.menuItemDestructive]: isDestructive,\n [$style.menuItemHighlighted]: isHighlighted,\n [$style.menuItemIndented]: isIndented,\n [$style.menuItemSelected]: isSelectable && isSelected\n }\"\n :aria-checked=\"isSelectable ? isSelected : undefined\"\n @click=\"$emit('click', $event)\">\n <template\n v-if=\"isSelectable && (!iconLeading || isSelected)\"\n #iconLeading>\n <FluxIcon\n :class=\"$style.menuItemSelectableIcon\"\n :name=\"isSelected ? 'circle-check' : undefined\"/>\n </template>\n\n <template\n v-else-if=\"imageSrc\"\n #iconLeading>\n <img\n :class=\"$style.menuItemImage\"\n :src=\"imageSrc\"\n alt=\"\"/>\n </template>\n\n <template\n v-if=\"command || commandIcon || commandLoading\"\n #after>\n <FluxSpinner\n v-if=\"commandLoading\"\n :class=\"$style.menuItemCommandIcon\"\n :size=\"16\"/>\n\n <template v-else>\n <kbd\n v-if=\"command\"\n :class=\"$style.menuItemCommand\">\n {{ command }}\n </kbd>\n\n <FluxIcon\n v-if=\"commandIcon\"\n :class=\"$style.menuItemCommandIcon\"\n :name=\"commandIcon\"/>\n </template>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxIconName } from '@flux-ui/types';\n import FluxButton from './FluxButton.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n const {\n type = 'button'\n } = defineProps<Omit<FluxButtonProps, 'isFilled' | 'isSubmit' | 'size'> & {\n readonly command?: string;\n readonly commandIcon?: FluxIconName;\n readonly commandLoading?: boolean;\n readonly imageSrc?: string;\n readonly isActive?: boolean;\n readonly isDestructive?: boolean;\n readonly isHighlighted?: boolean;\n readonly isIndented?: boolean;\n readonly isSelectable?: boolean;\n readonly isSelected?: boolean;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n disabled ? $style.formInputDisabled : $style.formInputEnabled,\n isSecondary && $style.isSecondary\n )\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n ref=\"input\"\n :class=\"clsx(\n $style.formInputNative,\n (!!iconTrailing || type === 'password') && $style.formInputNativeHasIconTrailing,\n !!iconLeading && $style.formInputNativeHasIconLeading\n )\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled\"\n :max=\"max\"\n :maxlength=\"maxLength\"\n :min=\"min\"\n :placeholder=\"placeholder\"\n :readonly=\"isReadonly\"\n :step=\"step\"\n :type=\"nativeType\"\n :value=\"localValue\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\">\n\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.formInputIconLeading\"\n :name=\"iconLeading\"\n :size=\"18\"/>\n\n <FluxIcon\n v-if=\"type === 'password'\"\n :class=\"$style.formInputIconPasswordToggle\"\n :name=\"nativeType === 'password' ? 'eye' : 'eye-slash'\"\n :size=\"18\"\n @click=\"passwordTypeToggle()\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"$style.formInputIconTrailing\"\n :name=\"iconTrailing\"\n :size=\"18\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import type { FluxAutoCompleteType, FluxIconName, FluxInputMask, FluxInputType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { inputMask } from '$flux/data';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n showPicker: [];\n }>();\n\n const modelValue = defineModel<object | string | number | null>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n pattern,\n type = 'text'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly isSecondary?: boolean;\n readonly max?: string | number;\n readonly maxLength?: number;\n readonly min?: string | number;\n readonly pattern?: FluxInputMask;\n readonly placeholder?: string;\n readonly step?: number;\n readonly type?: FluxInputType;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef<HTMLInputElement>('input');\n const {id} = useFormFieldInjection();\n\n const localValue = ref<string | null>(null);\n const nativeType = ref(type);\n\n function blur(): void {\n unrefTemplateElement(inputRef)?.blur();\n }\n\n function focus(): void {\n unrefTemplateElement(inputRef)?.focus();\n }\n\n function passwordTypeToggle(): void {\n if (type !== 'password') {\n return;\n }\n\n nativeType.value = unref(nativeType) === 'password' ? 'text' : 'password';\n }\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n function onInput(evt: Event): void {\n const value = (evt.target as HTMLInputElement).value;\n\n switch (type) {\n case 'date':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n const dateTime = DateTime.fromISO(value);\n\n if (!dateTime.isValid) {\n return;\n }\n\n modelValue.value = dateTime;\n break;\n\n case 'number':\n modelValue.value = Number(value);\n break;\n\n default:\n modelValue.value = value;\n break;\n }\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (!['date', 'datetime-local', 'month', 'week'].includes(type)) {\n return;\n }\n\n if (evt.key === ' ') {\n emit('showPicker');\n evt.preventDefault();\n }\n }\n\n watch([modelValue, () => type], ([modelValue, type]) => {\n if (!modelValue && modelValue !== 0) {\n localValue.value = null;\n return;\n }\n\n if (DateTime.isDateTime(modelValue)) {\n const iso = modelValue.toISO()!;\n\n switch (type) {\n case 'date':\n localValue.value = iso.substring(0, 10);\n break;\n\n case 'datetime-local':\n localValue.value = iso.substring(0, 16);\n break;\n\n case 'time':\n localValue.value = iso.substring(11, 16);\n break;\n\n default:\n localValue.value = iso;\n break;\n }\n\n return;\n }\n\n localValue.value = modelValue.toString();\n }, {immediate: true});\n\n watch([inputRef, () => pattern, localValue], ([input, pattern, value], __, onCleanup) => {\n if (!input || !pattern) {\n return;\n }\n\n const mask = inputMask[pattern](input);\n\n if (value) {\n mask.value = value;\n modelValue.value = mask.value;\n }\n\n onCleanup(() => mask.destroy());\n }, {immediate: true});\n\n watch(() => type, type => nativeType.value = type);\n\n defineExpose({\n blur,\n focus\n });\n</script>\n","<template>\n <div\n :class=\"isHorizontal ? $style.menuGroupHorizontal : $style.menuGroupVertical\"\n role=\"group\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isHorizontal?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.menuSubHeader\"\n role=\"presentation\">\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconLeading\"/>\n\n <span :class=\"$style.menuSubHeaderLabel\">\n {{ label }}\n </span>\n\n <FluxIcon\n v-if=\"iconTrailing\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconTrailing\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly label: string;\n }>();\n</script>\n","<template>\n <FluxMenuGroup>\n <div\n v-if=\"isSearchable\"\n :class=\"$style.filterSearch\">\n <FluxFormInput\n v-model=\"modelSearch\"\n auto-complete=\"off\"\n is-secondary\n icon-leading=\"magnifying-glass\"\n :placeholder=\"searchPlaceholder\"\n type=\"search\"/>\n </div>\n\n <FluxMenuItem\n v-if=\"isLoading && options.length === 0\"\n disabled\n is-loading/>\n\n <template\n v-else\n v-for=\"option of options\">\n <FluxMenuSubHeader\n v-if=\"isFluxFilterOptionHeader(option)\"\n :label=\"option.title\"/>\n\n <FluxMenuItem\n v-else-if=\"isFluxFilterOptionItem(option)\"\n is-selectable\n :is-selected=\"selected.includes(option.value)\"\n :label=\"option.label\"\n @click=\"select(option)\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionItem, FluxFilterOptionRow, FluxFilterValueSingle } from '@flux-ui/types';\n import { isFluxFilterOptionHeader, isFluxFilterOptionItem } from '$flux/data';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n select: [FluxFilterValueSingle];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineProps<{\n readonly isLoading?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFilterOptionRow[];\n readonly selected: FluxFilterValueSingle[];\n readonly searchPlaceholder?: string;\n }>();\n\n function select(option: FluxFilterOptionItem): void {\n emit('select', option.value);\n }\n</script>\n","<template>\n <nav\n ref=\"element\"\n :class=\"isLarge ? $style.menuLarge : $style.menuNormal\"\n role=\"menu\"\n aria-orientation=\"vertical\">\n <slot/>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isLarge?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'vertical'\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.tagGray,\n color === 'primary' && $style.tagPrimary,\n color === 'danger' && $style.tagDanger,\n color === 'info' && $style.tagInfo,\n color === 'success' && $style.tagSuccess,\n color === 'warning' && $style.tagWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.tagIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.tagDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.tagIcon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span :class=\"$style.tagLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"!isClickable && isDeletable\"\n :class=\"$style.tagClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n isClickable\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isClickable?: boolean;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <Anchor\n ref=\"anchor\"\n :=\"$attrs\"\n :class=\"clsx(\n $style.formSelect,\n disabled && $style.isDisabled,\n isPopupOpen && $style.isFocused,\n isSearchable && $style.isSearchable\n )\"\n :id=\"id\"\n :aria-disabled=\"disabled ? true : undefined\"\n tabindex=\"0\"\n tag-name=\"div\"\n @click=\"toggle()\"\n @keydown=\"onKeyDown\"\n @keyup=\"onKeyUp\">\n <template v-if=\"!isMultiple && selected[0]\">\n <FluxMenuItem\n :class=\"$style.formSelectSelected\"\n :command=\"selected[0].command\"\n :command-icon=\"selected[0].commandIcon\"\n :icon-leading=\"selected[0].icon\"\n :label=\"selected[0].label\"\n tabindex=\"-1\"/>\n </template>\n\n <template v-else-if=\"isMultiple && selected[0]\">\n <FluxTag\n v-for=\"option of selected\"\n :key=\"option.value ?? 'null option'\"\n :label=\"option.label\"\n is-deletable\n @delete=\"deselect(option.value)\"/>\n </template>\n\n <template v-else-if=\"placeholder\">\n <span :class=\"$style.formSelectPlaceholder\">\n {{ placeholder }}\n </span>\n </template>\n\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.formSelectIcon\"\n :size=\"16\"/>\n\n <FluxIcon\n v-else\n :class=\"$style.formSelectIcon\"\n name=\"angle-down\"/>\n </Anchor>\n\n <Teleport to=\"body\">\n <FluxFadeTransition>\n <AnchorPopup\n v-if=\"isPopupOpen && !disabled\"\n ref=\"anchorPopup\"\n :class=\"clsx(\n $style.formSelectPopup,\n isKeyboardAction && $style.isKeyboardAction,\n isSearchable && $style.isSearchable\n )\"\n :anchor=\"anchorRef\"\n direction=\"vertical\"\n use-anchor-width>\n <FluxFormInput\n v-if=\"isSearchable\"\n v-model=\"modelSearch\"\n ref=\"searchInputElement\"\n auto-complete=\"off\"\n :class=\"$style.formSelectInput\"\n type=\"search\"\n icon-trailing=\"magnifying-glass\"\n :placeholder=\"translate('flux.search')\"\n @keydown=\"onKeyDown\"/>\n\n <FluxMenu v-if=\"!isLoading && options.length === 0\">\n <FluxMenuSubHeader :label=\"translate('flux.noItems')\"/>\n </FluxMenu>\n\n <FluxMenu v-else>\n <template\n v-for=\"([item, subItems], index) of options\"\n :key=\"`group-${index}`\">\n <FluxMenuGroup>\n <FluxMenuSubHeader\n v-if=\"isFluxFormSelectGroup(item)\"\n :icon-leading=\"item.icon\"\n :label=\"item.label\"/>\n\n <template v-for=\"(subItem, index) of subItems\">\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(subItem)\"\n ref=\"optionElements\"\n :key=\"index\"\n :command=\"subItem.command\"\n :command-icon=\"subItem.commandIcon\"\n :icon-leading=\"subItem.icon\"\n :is-active=\"!!selected.find(so => so.value === subItem.value)\"\n :is-highlighted=\"highlightedId === subItem.value\"\n :label=\"subItem.label\"\n type=\"button\"\n @click=\"select(subItem.value)\"/>\n </template>\n </FluxMenuGroup>\n\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(item)\"\n ref=\"optionElements\"\n :key=\"`item-${index}`\"\n :command=\"item.command\"\n :command-icon=\"item.commandIcon\"\n :icon-leading=\"item.icon\"\n :is-active=\"!!selected.find(so => so.value === item.value)\"\n :is-highlighted=\"highlightedId === item.value\"\n :label=\"item.label\"\n type=\"button\"\n @click=\"select(item.value)\"/>\n </template>\n </FluxMenu>\n </AnchorPopup>\n </FluxFadeTransition>\n </Teleport>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useClickOutside } from '@flux-ui/internals';\n import type { FluxFormSelectOption, FluxFormSelectOptions } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { ComponentPublicInstance, computed, nextTick, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxIcon from '$flux/component/FluxIcon.vue';\n import FluxMenu from '$flux/component/FluxMenu.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import FluxSpinner from '$flux/component/FluxSpinner.vue';\n import FluxTag from '$flux/component/FluxTag.vue';\n import Anchor from './Anchor.vue';\n import AnchorPopup from './AnchorPopup.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const INITIAL_HIGHLIGHTED_INDEX = -1;\n\n const emit = defineEmits<{\n keyDown: [KeyboardEvent];\n deselect: [string | number | null];\n select: [string | number | null];\n search: [string];\n close: [];\n open: [];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled: componentDisabled,\n isMultiple,\n options,\n selected\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFormSelectOptions[];\n readonly placeholder?: string;\n readonly selected: FluxFormSelectOption[];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n const translate = useTranslate();\n\n const anchorRef = useTemplateRef<ComponentPublicInstance>('anchor');\n const anchorPopupRef = useTemplateRef('anchorPopup');\n const optionElementRefs = useTemplateRef<typeof FluxMenuItem[]>('optionElements');\n const searchInputElementRef = useTemplateRef<ComponentPublicInstance<typeof FluxFormInput>>('searchInputElement');\n\n const highlightedIndex = ref(INITIAL_HIGHLIGHTED_INDEX);\n const isKeyboardAction = ref(false);\n const isPopupOpen = ref(false);\n\n const focusElement = computed(() => unrefTemplateElement(searchInputElementRef) ?? unrefTemplateElement(anchorRef));\n const highlightedId = computed(() => unref(rawOptions)[unref(highlightedIndex)]?.value);\n const rawOptions = computed(() => options.map(group => group[1]).flat());\n\n useClickOutside([anchorRef, anchorPopupRef], isPopupOpen, () => isPopupOpen.value = false);\n useClickOutside(anchorRef, isPopupOpen, () => unref(focusElement)?.focus());\n\n function deselect(id: string | number | null): void {\n emit('deselect', id);\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function select(id: string | number | null): void {\n emit('select', id);\n\n !isMultiple && (isPopupOpen.value = false);\n\n highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX;\n modelSearch.value = '';\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function toggle(): void {\n if (unref(disabled)) {\n return;\n }\n\n isPopupOpen.value = !unref(isPopupOpen);\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n emit('keyDown', evt);\n\n if (!unref(isPopupOpen)) {\n if (evt.key === 'Enter') {\n isPopupOpen.value = true;\n }\n\n return;\n }\n\n isKeyboardAction.value = true;\n\n if (unref(highlightedIndex) === INITIAL_HIGHLIGHTED_INDEX && ['ArrowDown', 'ArrowUp'].includes(evt.key)) {\n const options = unref(optionElementRefs);\n const selectedIndex = options?.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n\n highlightedIndex.value = selectedIndex ?? INITIAL_HIGHLIGHTED_INDEX;\n }\n\n switch (evt.key) {\n case 'ArrowUp':\n highlightedIndex.value = Math.max(0, unref(highlightedIndex) - 1);\n break;\n\n case 'ArrowDown':\n highlightedIndex.value = Math.min(unref(rawOptions).length - 1, unref(highlightedIndex) + 1);\n break;\n\n case 'Backspace':\n const search = unref(modelSearch);\n\n if (search.length > 0 || selected.length === 0) {\n return;\n }\n\n deselect(selected[selected.length - 1].value);\n break;\n\n case 'Enter':\n const id = unref(highlightedId);\n id && select(id);\n break;\n\n case 'Escape':\n isPopupOpen.value = false;\n break;\n\n case 'Tab':\n isPopupOpen.value = false;\n return;\n\n default:\n if (evt.key.match(/[a-z]/)) {\n highlightedIndex.value = unref(rawOptions).findIndex(o => o.label.toLowerCase().startsWith(evt.key));\n } else {\n highlightedIndex.value = -1;\n }\n return;\n }\n\n evt.preventDefault();\n }\n\n function onKeyUp(): void {\n isKeyboardAction.value = false;\n }\n\n watch(highlightedIndex, highlightedIndex => {\n const options = unref(optionElementRefs)!;\n options[highlightedIndex]?.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n watch(isPopupOpen, isPopupOpen => {\n if (!isPopupOpen) {\n emit('close');\n return;\n }\n\n nextTick(() => {\n const searchInput = unref(searchInputElementRef);\n searchInput?.focus();\n });\n\n nextTick(() => {\n const options = unref(optionElementRefs);\n\n if (!options || isMultiple) {\n return;\n }\n\n const selectedIndex = options.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n const option = options[selectedIndex];\n\n if (!option) {\n return;\n }\n\n option.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n emit('open');\n });\n\n watch(modelSearch, searchQuery => emit('search', searchQuery));\n\n watch([() => options, isPopupOpen], () => highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX);\n</script>\n","<template>\n <div :class=\"$style.ticks\">\n <template\n v-for=\"tick of ticks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickLarge\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\">\n <span>{{ tick }}</span>\n </div>\n </template>\n\n <template\n v-for=\"tick of smallTicks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickSmall\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\"/>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { generateStepTicks } from '@basmilius/utils';\n import { computed } from 'vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const {\n lower,\n upper\n } = defineProps<{\n readonly lower: number;\n readonly upper: number;\n }>();\n\n const smallTicks = computed(() => generateStepTicks(lower, upper, 50, true).filter(s => !ticks.value.includes(s)));\n const ticks = computed(() => generateStepTicks(lower, upper, 5));\n</script>\n","<template>\n <div\n ref=\"root\"\n :class=\"clsx(\n $style.slider,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n role=\"slider\"\n :aria-disabled=\"disabled ? true : undefined\"\n @pointerdown=\"onPointerDown\">\n <FluxTicks\n v-if=\"isTicksVisible\"\n :lower=\"min\"\n :upper=\"max\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { onMounted, onUnmounted, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxTicks from '$flux/component/FluxTicks.vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n dragging: [boolean];\n update: [number];\n }>();\n\n const {\n disabled: componentDisabled,\n isDragging\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly isTicksVisible?: boolean;\n readonly max: number;\n readonly min: number;\n readonly step: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const rootRef = useTemplateRef('root');\n\n onMounted(() => {\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp, {passive: true});\n });\n\n onUnmounted(() => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n });\n\n function onPointerDown(evt: PointerEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n emit('dragging', true);\n requestAnimationFrame(() => onPointerMove(evt));\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const root = unrefTemplateElement(rootRef);\n\n if (!isDragging || !root) {\n return;\n }\n\n let {left, width} = root.getBoundingClientRect();\n left += 6; // margin.\n width -= 12; // margin times two.\n\n emit('update', Math.max(0, Math.min(1, (evt.pageX - left) / width)));\n evt.preventDefault();\n }\n\n function onPointerUp(): void {\n emit('dragging', false);\n }\n\n watch(() => isDragging, () => emit('dragging', isDragging));\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.sliderThumb,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n :style=\"{\n left: `${position * 100}%`\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n type=\"button\"\n @keydown=\"onKeyDown\"\n @pointerdown=\"$emit('grab', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n decrement: [];\n grab: [PointerEvent];\n increment: [];\n }>();\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly position: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n switch (evt.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n emit('decrement');\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n emit('increment');\n break;\n\n default:\n return;\n }\n\n evt.preventDefault();\n }\n</script>\n","<template>\n <div :class=\"$style.sliderTrack\">\n <div\n :class=\"$style.sliderTrackValue\"\n :style=\"{\n left: `${percentageLower * 100}%`,\n width: `${(percentageUpper - percentageLower) * 100}%`\n }\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n defineProps<{\n readonly percentageLower: number;\n readonly percentageUpper: number;\n }>();\n</script>\n","import { flattenVNodeTree } from '@flux-ui/internals';\nimport { Component, getCurrentInstance, RenderFunction, Slots } from 'vue';\nimport { Comment, h, onMounted, onUnmounted, SetupContext, Teleport, VNode } from 'vue';\nimport { registerDialog, useFluxStore } from '$flux/data';\n\ntype Emit = SetupContext<['close']>['emit'];\ntype Props = {\n readonly isCloseable?: boolean;\n readonly viewKey?: string;\n};\n\nexport default function (attrs: object, props: Props, emit: Emit, slots: Slots, className: string, transition: Component): RenderFunction {\n const instance = getCurrentInstance();\n let unregister: Function | null = null;\n let zIndex = 0;\n\n onMounted(() => {\n window.addEventListener('keydown', onKeyDown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeyDown);\n unregister?.();\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (evt.key !== 'Escape' || !unregister || !props.isCloseable) {\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n emit('close');\n }\n\n return () => {\n const {dialogCount} = useFluxStore();\n\n const children = flattenVNodeTree(slots.default?.() ?? []);\n const isVisible = children.length > 0 && children.some(child => child.type !== Comment);\n const content: VNode[] = [];\n\n if (isVisible) {\n if (!unregister) {\n unregister = registerDialog();\n zIndex = dialogCount + 1000;\n }\n\n content.push(h('div', {\n key: props.viewKey,\n class: className,\n style: {zIndex}\n }, children));\n } else {\n unregister?.();\n unregister = null;\n }\n\n return h(Teleport, {disabled: content.length === 0, to: instance?.appContext.app._container}, [\n h(transition, attrs, {\n default: () => content\n })\n ]);\n };\n}\n","import type { DateTime } from 'luxon';\nimport { useTranslate } from '$flux/composable/private';\n\nexport default function (start: DateTime, end: DateTime, preventCustom: boolean = false): string {\n const translate = useTranslate();\n\n if (start.day === end.day && start.month === end.month && start.year === end.year) {\n return start.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n }\n\n if (start.month === end.month && start.year === end.year) {\n const startStr = start.toLocaleString({\n day: 'numeric'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n if (start.year === end.year) {\n const startStr = start.toLocaleString({\n day: 'numeric',\n month: 'short'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n if (preventCustom) {\n const startStr = start.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n const endStr = end.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n\n return `${startStr} – ${endStr}`;\n }\n\n return translate('flux.customPeriod');\n}\n","<template>\n <div\n :class=\"direction === 'horizontal' ? $style.separatorHorizontal : $style.separatorVertical\"\n role=\"separator\"\n :aria-orientation=\"direction\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import $style from '$flux/css/component/Divider.module.scss';\n\n const {\n direction = 'horizontal'\n } = defineProps<{\n readonly direction?: FluxDirection;\n }>();\n</script>\n","<template>\n <FluxMenuItem\n :command=\"valueLabel\"\n command-icon=\"angle-right\"\n :command-loading=\"isLoading\"\n :icon-leading=\"item.icon\"\n :label=\"item.label\"\n type=\"button\"\n @click=\"onClick\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterItem, FluxFilterValue } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useLoaded } from '$flux/composable/private';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n item,\n value\n } = defineProps<{\n readonly item: FluxFilterItem;\n readonly value: FluxFilterValue;\n }>();\n\n const {isLoading, loaded} = useLoaded();\n const getValueLabel = computed(() => loaded(item.getValueLabel));\n\n const valueLabel = ref<string>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n\n watch(() => item, async () => {\n valueLabel.value = await unref(getValueLabel)(value) ?? undefined;\n }, {deep: true, immediate: true});\n</script>\n","import { formatNumber } from '@basmilius/utils';\nimport { flattenVNodeTree, getComponentName, getComponentProps } from '@flux-ui/internals';\nimport type { FluxFilterBase, FluxFilterDateEntry, FluxFilterDateRangeEntry, FluxFilterItem, FluxFilterOptionEntry, FluxFilterOptionItem, FluxFilterOptionRow, FluxFilterOptionsEntry, FluxFilterRangeEntry, FluxFilterValue, FluxFilterValueSingle } from '@flux-ui/types';\nimport { camelCase } from 'lodash-es';\nimport { DateTime } from 'luxon';\nimport { computed, defineComponent, h, isVNode, unref, VNode } from 'vue';\nimport { useTranslate } from '$flux/composable/private';\nimport { FluxTranslate, isFluxFilterOptionItem } from '$flux/data';\nimport { createLabelForDateRange } from '$flux/util';\nimport FluxMenu from '$flux/component/FluxMenu.vue';\nimport FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\nimport FluxSeparator from '$flux/component/FluxSeparator.vue';\nimport FilterItem from './FilterItem.vue';\n\nexport const FilterMenuRenderer = defineComponent({\n props: {\n navigate: Function,\n state: Object\n },\n\n setup(props, {slots}) {\n const content = computed<(FluxFilterItem | VNode)[][]>(() => {\n const children = flattenVNodeTree(slots.default?.() ?? []);\n const content: (FluxFilterItem | VNode)[][] = [[]];\n\n for (const child of children) {\n const name = getComponentName(child);\n\n if (name === 'FluxSeparator') {\n content.push([]);\n continue;\n }\n\n if (name.startsWith('FluxFilter')) {\n const props = getComponentProps<Omit<FluxFilterItem, 'type'>>(child);\n const type = camelCase(name.substring(10)) as FluxFilterItem['type'];\n\n content[content.length - 1].push(parsers[type](props));\n continue;\n }\n\n content[content.length - 1].push(child);\n }\n\n return content;\n });\n\n return () => h(FluxMenu, {}, {\n default: () => unref(content).map((group, index) => renderFilterGroup(group, index, props.navigate!, props.state!))\n });\n }\n});\n\nfunction parseDate(base: FluxFilterBase): FluxFilterDateEntry {\n return {\n ...base,\n type: 'date',\n\n async getValueLabel(value): Promise<string | null> {\n if (!DateTime.isDateTime(value)) {\n return null;\n }\n\n return value.toLocaleString({\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n });\n }\n };\n}\n\nfunction parseDateRange(base: FluxFilterBase): FluxFilterDateRangeEntry {\n return {\n ...base,\n type: 'dateRange',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value) || value.length !== 2) {\n return null;\n }\n\n const [start, end] = value;\n\n if (!DateTime.isDateTime(start) || !DateTime.isDateTime(end)) {\n return null;\n }\n\n return createLabelForDateRange(start, end);\n }\n };\n}\n\nfunction parseOption(base: FluxFilterBase): FluxFilterOptionEntry {\n const options = (base as any).options as FluxFilterOptionItem[];\n\n return {\n ...base,\n type: 'option',\n\n async getValueLabel(value): Promise<string | null> {\n return options.find(o => o.value === value)?.label ?? null;\n }\n };\n}\n\nfunction parseOptionAsync(base: FluxFilterBase): FluxFilterOptionEntry {\n const fetchOptions = (base as any).fetchOptions as (ids: FluxFilterValue[]) => Promise<FluxFilterOptionRow[]>;\n\n return {\n ...base,\n type: 'option',\n\n async getValueLabel(value): Promise<string | null> {\n const options = (await fetchOptions([value])).filter(isFluxFilterOptionItem);\n\n return options.find(o => o.value === value)?.label ?? null;\n }\n };\n}\n\nfunction parseOptions(base: FluxFilterBase): FluxFilterOptionsEntry {\n const options = (base as any).options as FluxFilterOptionItem[];\n const translate = useTranslate();\n\n return {\n ...base,\n type: 'options',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value)) {\n return null;\n }\n\n return generateMultiOptionsLabel(translate, options, value);\n }\n };\n}\n\nfunction parseOptionsAsync(base: FluxFilterBase): FluxFilterOptionsEntry {\n const fetchOptions = (base as any).fetchOptions as (ids: FluxFilterValue[]) => Promise<FluxFilterOptionRow[]>;\n const translate = useTranslate();\n\n return {\n ...base,\n type: 'options',\n\n async getValueLabel(value): Promise<string | null> {\n if (!Array.isArray(value)) {\n return null;\n }\n\n const options = (await fetchOptions(value)).filter(isFluxFilterOptionItem);\n\n return generateMultiOptionsLabel(translate, options, value);\n }\n };\n}\n\nfunction parseRange(base: FluxFilterBase): FluxFilterRangeEntry {\n return {\n ...base,\n type: 'range',\n\n async getValueLabel(value): Promise<string | null> {\n if (!value || !Array.isArray(value) || value.length !== 2) {\n return null;\n }\n\n const [lower, upper] = value as number[];\n\n if ('formatter' in base) {\n const formatter = base.formatter as (value: number) => string;\n\n return `${formatter(lower)} – ${formatter(upper)}`;\n }\n\n return `${formatNumber(lower)} – ${formatNumber(upper)}`;\n }\n };\n}\n\nfunction renderFilterGroup(group: (FluxFilterItem | VNode)[], index: number, navigate: Function, state: Record<string, FluxFilterValue>): VNode[] {\n const slot: VNode[] = [];\n\n if (index > 0) {\n slot.push(h(FluxSeparator));\n }\n\n slot.push(h(FluxMenuGroup, {}, {\n default: () => group.map(item => renderFilterItem(item, navigate, state))\n }));\n\n return slot;\n}\n\nfunction renderFilterItem(item: FluxFilterItem | VNode, navigate: Function, state: Record<string, FluxFilterValue>): VNode {\n if (isVNode(item)) {\n return item;\n }\n\n return h(FilterItem, {\n item,\n value: state[item.name] ?? null,\n onClick: () => navigate(item.name)\n });\n}\n\nfunction generateMultiOptionsLabel(translate: FluxTranslate, options: FluxFilterOptionItem[], values: FluxFilterValueSingle[]): string | null {\n const selected = options.filter(o => values.includes(o.value)).length;\n\n if (selected <= 0) {\n return null;\n }\n\n if (selected === 1) {\n return options.find(o => values.includes(o.value))!.label;\n }\n\n return translate('flux.nSelected', {\n n: selected\n });\n}\n\nconst parsers = {\n date: parseDate,\n dateRange: parseDateRange,\n option: parseOption,\n optionAsync: parseOptionAsync,\n options: parseOptions,\n optionsAsync: parseOptionsAsync,\n range: parseRange\n} as const;\n","import type { PropType, VNode } from 'vue';\nimport { defineComponent } from 'vue';\n\nexport const VNodeRenderer = defineComponent({\n props: {\n vnode: Object as PropType<VNode>\n },\n setup(props) {\n return () => props.vnode;\n }\n});\n","<template>\n <div :class=\"$style.calendar\">\n <FluxActionBar :class=\"$style.calendarActions\">\n <template #primary>\n <div\n :class=\"$style.calendarCurrent\"\n role=\"presentation\">\n <FluxFlyout :width=\"300\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.calendarCurrentMonth\"\n type=\"button\"\n @click=\"open\">\n {{ viewMonth }}\n </button>\n </template>\n\n <template #default=\"{close}\">\n <div :class=\"$styleDatePicker.datePickerMonths\">\n <template\n v-for=\"month of months\"\n :key=\"month\">\n <FluxSecondaryButton\n :label=\"month.label\"\n tabindex=\"-1\"\n @click=\"setViewMonth(month.date, close)\"/>\n </template>\n </div>\n </template>\n </FluxFlyout>\n\n <FluxFlyout :width=\"300\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.calendarCurrentYear\"\n type=\"button\"\n @click=\"open\">\n {{ viewYear }}\n </button>\n </template>\n\n <template #default=\"{close}\">\n <div :class=\"$styleDatePicker.datePickerYears\">\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n tabindex=\"-1\"\n @click=\"previousYears\"/>\n\n <template\n v-for=\"year of years\"\n :key=\"year\">\n <FluxSecondaryButton\n :label=\"year.toString()\"\n tabindex=\"-1\"\n @click=\"setViewYear(year, close)\"/>\n </template>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n tabindex=\"-1\"\n @click=\"nextYears\"/>\n </div>\n </template>\n </FluxFlyout>\n </div>\n </template>\n\n <template #actionsEnd>\n <FluxSecondaryButton\n :label=\"translate('flux.today')\"\n @click=\"setToday\"/>\n\n <FluxButtonGroup>\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n @click=\"previousMonth\"/>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n @click=\"nextMonth\"/>\n </FluxButtonGroup>\n </template>\n </FluxActionBar>\n\n <FluxWindowTransition :is-back=\"isTransitioningToPast\">\n <div\n :key=\"viewDate.month\"\n :class=\"$style.calendarCells\"\n role=\"grid\">\n <template v-for=\"day of days\">\n <div :class=\"$style.calendarDay\">\n {{ day }}\n </div>\n </template>\n\n <template v-for=\"date of dates\">\n <div\n :class=\"clsx(\n $style.calendarEntry,\n viewDate.month !== date.month && $style.isDisabled\n )\"\n role=\"gridcell\">\n <div :class=\"$style.calendarEvents\">\n <VNodeRenderer\n v-for=\"event of getEventsForDate(date)\"\n :class=\"clsx(\n event.type === 'single' && $style.isSingle,\n event.type === 'start' && $style.isStart,\n event.type === 'end' && $style.isEnd,\n event.type === 'middle' && $style.isMiddle\n )\"\n :style=\"{\n gridRow: event.index\n }\"\n :vnode=\"event.vnode\"/>\n </div>\n\n <span :class=\"$style.calendarEntryDate\">\n {{ date.toLocaleString({day: 'numeric'}) }}\n </span>\n </div>\n </template>\n </div>\n </FluxWindowTransition>\n\n <div\n v-if=\"isLoading\"\n :class=\"$style.calendarLoader\">\n <FluxSpinner/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentName, getComponentProps, useCalendar, useCalendarMonthSwitcher, useCalendarYearSwitcher } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { computed, unref, VNode, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxWindowTransition } from '$flux/transition';\n import { VNodeRenderer } from './primitive';\n import FluxActionBar from './FluxActionBar.vue';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpinner from '$flux/component/FluxSpinner.vue';\n import $style from '$flux/css/component/Calendar.module.scss';\n import $styleDatePicker from '$flux/css/component/DatePicker.module.scss';\n\n type Event = {\n readonly index: number;\n readonly type: 'start' | 'end' | 'middle' | 'single';\n readonly vnode: VNode;\n };\n\n const emit = defineEmits<{\n navigate: [DateTime, DateTime, DateTime];\n }>();\n\n const {\n initialDate = DateTime.now()\n } = defineProps<{\n readonly initialDate?: DateTime;\n readonly isLoading?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n }>();\n\n const {\n isTransitioningToPast,\n viewDate,\n viewMonth,\n viewYear,\n dates,\n days,\n nextMonth,\n previousMonth,\n setViewDate\n } = useCalendar(initialDate, {\n weekDayLength: 'long'\n });\n\n const {\n months\n } = useCalendarMonthSwitcher(viewDate, 'short');\n\n const {\n years,\n next: nextYears,\n previous: previousYears\n } = useCalendarYearSwitcher(viewDate);\n\n const translate = useTranslate();\n\n const eventNodes = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const events = computed(() => unref(eventNodes)\n .filter(en => getComponentName(en) === 'FluxCalendarEvent'));\n\n function getEventsForDate(forDate: DateTime): Event[] {\n const forDateStr = forDate.toSQLDate();\n\n return unref(events)\n .map<Event | null>((vnode, index) => {\n const {date} = getComponentProps<{ date: DateTime | [DateTime, DateTime]; }>(vnode);\n\n if (Array.isArray(date)) {\n if (forDate < date[0] || forDate > date[1]) {\n return null;\n }\n\n return {\n type: forDateStr === date[0].toSQLDate() ? 'start' : (forDateStr === date[1].toSQLDate() ? 'end' : 'middle'),\n index,\n vnode\n };\n }\n\n if (forDateStr !== date.toSQLDate()) {\n return null;\n }\n\n return {\n type: 'single',\n index,\n vnode\n };\n })\n .filter(e => e !== null);\n }\n\n function setToday(): void {\n setViewDate(DateTime.now());\n }\n\n function setViewMonth(month: DateTime, close: () => void): void {\n close();\n setViewDate(month);\n }\n\n function setViewYear(year: number, close: () => void): void {\n close();\n setViewDate(unref(viewDate).set({year}));\n }\n\n watch([viewDate, dates], ([viewDate, dates]) => {\n emit('navigate', viewDate, dates[0], dates[dates.length - 1]);\n }, {immediate: true});\n\n watch(() => initialDate, setViewDate);\n</script>\n","<template>\n <FluxTooltip>\n <template #content>\n <slot name=\"tooltip\">\n {{ label }}\n </slot>\n </template>\n\n <button\n :class=\"$style.calendarEvent\"\n type=\"button\"\n @click=\"onClick\">\n <span>{{ label }}</span>\n </button>\n </FluxTooltip>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { DateTime } from 'luxon';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/Calendar.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n defineProps<{\n readonly date: DateTime | [DateTime, DateTime];\n readonly label: string;\n }>();\n\n defineSlots<{\n tooltip(): any;\n }>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n</script>\n","<template>\n <label\n :class=\"$style.checkbox\"\n :for=\"id\">\n <input\n v-model=\"modelValue\"\n ref=\"input\"\n type=\"checkbox\"\n :class=\"$style.checkboxNative\"\n :id=\"id\"/>\n\n <button\n :class=\"$style.checkboxElement\"\n role=\"checkbox\"\n :aria-checked=\"modelValue ?? false\">\n <FluxIcon\n v-if=\"isIndeterminate\"\n name=\"minus\"\n :size=\"16\"/>\n\n <FluxIcon\n v-else\n name=\"check\"\n :size=\"16\"/>\n </button>\n\n <span\n v-if=\"label\"\n :class=\"$style.checkboxLabel\">\n {{ label }}\n </span>\n </label>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref, useTemplateRef, watchEffect } from 'vue';\n import { useFormFieldInjection } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<boolean | null>({\n default: false\n });\n\n defineProps<{\n readonly label?: string;\n }>();\n\n const inputRef = useTemplateRef('input');\n const {id} = useFormFieldInjection();\n\n const isIndeterminate = computed(() => unref(modelValue) === null);\n\n watchEffect(() => {\n const input = unref(inputRef);\n input && (input.indeterminate = unref(isIndeterminate));\n });\n</script>\n","<template>\n <Component\n :is=\"isSelectable ? 'button' : 'div'\"\n :class=\"clsx(\n $style.chip,\n isSelectable && $style.isSelectable,\n isSelected && $style.isSelected\n )\"\n @click=\"$emit('click', $event)\">\n <FluxFadeTransition v-if=\"isSelectable\">\n <FluxIcon\n :key=\"selectableIcon\"\n :name=\"selectableIcon\"\n :size=\"16\"/>\n </FluxFadeTransition>\n\n <FluxIcon\n v-else-if=\"iconLeading\"\n :name=\"iconLeading\"\n :size=\"16\"/>\n\n <span>{{ label }}</span>\n\n <FluxIcon\n v-if=\"iconTrailing\"\n :name=\"iconTrailing\"\n :size=\"16\"/>\n </component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Chip.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n iconLeading,\n isSelected\n } = defineProps<{\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly isSelectable?: boolean;\n readonly isSelected?: boolean;\n readonly label: string;\n }>();\n\n const selectableIcon = computed<FluxIconName>(() => isSelected ? 'check' : (iconLeading ?? 'plus'));\n</script>\n","<template>\n <FluxPressable\n :component-type=\"type\"\n :class=\"CLASS_MAP[variant]\"\n type=\"button\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\">\n <slot/>\n\n <slot\n v-if=\"isLoading\"\n name=\"loader\">\n <div :class=\"$style.paneLoader\">\n <FluxSpinner/>\n </div>\n </slot>\n\n <div\n v-if=\"tag\"\n :class=\"$style.paneTag\">\n {{ tag }}\n </div>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPressableType, FluxTo } from '@flux-ui/types';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const CLASS_MAP = {\n default: $style.paneDefault,\n flat: $style.paneFlat,\n well: $style.paneWell\n } as const;\n\n const {\n variant = 'default'\n } = defineProps<{\n readonly isLoading?: boolean;\n readonly tag?: string;\n readonly variant?: 'default' | 'flat' | 'well';\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n defineSlots<{\n default(): any;\n loader(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.comment,\n isTyping && $style.isTyping,\n isReceived && $style.isReceived\n )\"\n role=\"article\">\n <FluxAvatar\n :alt=\"avatarAlt\"\n :fallback=\"avatarFallback\"\n :fallback-icon=\"avatarFallbackIcon\"\n :fallback-initials=\"avatarFallbackInitials\"\n :size=\"42\"\n :src=\"avatarSrc\"/>\n\n <div :class=\"$style.commentContent\">\n <div\n v-if=\"isTyping\"\n :class=\"$style.commentTyping\"/>\n <slot v-else/>\n </div>\n\n <div :class=\"$style.commentFooter\">\n <span v-if=\"isReceived && postedBy\">{{ postedBy }}</span>\n <time\n v-if=\"iso && relative && !isTyping\"\n :datetime=\"iso\">\n {{ isJustNowVisible ? translate('flux.justNow') : relative }}\n </time>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import type { DateTime } from 'luxon';\n import { computed } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxAvatar from './FluxAvatar.vue';\n import $style from '$flux/css/component/Comment.module.scss';\n\n const {\n avatarFallback = 'colorized',\n avatarFallbackIcon = 'user',\n postedOn\n } = defineProps<{\n readonly avatarAlt?: string;\n readonly avatarFallback?: 'colorized' | 'neutral';\n readonly avatarFallbackIcon?: FluxIconName;\n readonly avatarFallbackInitials?: string;\n readonly avatarSrc?: string;\n readonly isReceived?: boolean;\n readonly isTyping?: boolean;\n readonly postedBy?: string;\n readonly postedOn?: DateTime;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n const isJustNowVisible = computed(() => postedOn && Math.abs(postedOn.diffNow().as('seconds')) < 15);\n const iso = computed(() => postedOn?.toISO() ?? null);\n const relative = computed(() => postedOn?.toRelative() ?? null);\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.coordinatePickerThumb,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n :style=\"{\n top: `${position[1] * 100}%`,\n left: `${position[0] * 100}%`\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n type=\"button\"\n @keydown=\"onKeyDown\"\n @pointerdown=\"$emit('grab', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import $style from '$flux/css/component/primitive/CoordinatePicker.module.scss';\n\n const emit = defineEmits<{\n decrement: [boolean, boolean];\n grab: [PointerEvent];\n increment: [boolean, boolean];\n }>();\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly position: [number, number];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n switch (evt.key) {\n case 'ArrowUp':\n emit('decrement', false, true);\n break;\n\n case 'ArrowDown':\n emit('increment', false, true);\n break;\n\n case 'ArrowLeft':\n emit('decrement', true, false);\n break;\n\n case 'ArrowRight':\n emit('increment', true, false);\n break;\n\n default:\n return;\n }\n\n evt.preventDefault();\n }\n</script>\n","<template>\n <div\n ref=\"root\"\n :class=\"$style.coordinatePicker\"\n role=\"slider\"\n :aria-disabled=\"disabled ? true : undefined\"\n @pointerdown=\"onPointerDown\">\n <CoordinatePickerThumb\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :position=\"thumbPosition\"\n @decrement=\"onDecrement\"\n @increment=\"onIncrement\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { roundStep } from '@basmilius/utils';\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { computed, onMounted, onUnmounted, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import CoordinatePickerThumb from './CoordinatePickerThumb.vue';\n import $style from '$flux/css/component/primitive/CoordinatePicker.module.scss';\n\n const emit = defineEmits<{\n dragging: [boolean];\n }>();\n\n const modelValue = defineModel<[number, number]>({\n default: [0, 0]\n });\n\n const {\n disabled: componentDisabled,\n max: maxProp = 100,\n min: minProp = 0,\n step: stepProp = 1\n } = defineProps<{\n readonly disabled?: boolean;\n readonly max?: number | [number, number];\n readonly min?: number | [number, number];\n readonly step?: number | [number, number];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const rootRef = useTemplateRef('root');\n\n const isDragging = ref(false);\n\n const max = computed(() => Array.isArray(maxProp) ? maxProp : [maxProp, maxProp]);\n const min = computed(() => Array.isArray(minProp) ? minProp : [minProp, minProp]);\n const step = computed(() => Array.isArray(stepProp) ? stepProp : [stepProp, stepProp]);\n\n const thumbPosition = computed<[number, number]>(() => [\n (unref(modelValue)[0] - unref(min)[0]) / (unref(max)[0] - unref(min)[0]),\n (unref(modelValue)[1] - unref(min)[1]) / (unref(max)[1] - unref(min)[1])\n ]);\n\n onMounted(() => {\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp, {passive: true});\n });\n\n onUnmounted(() => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n });\n\n function onDecrement(x: boolean, y: boolean): void {\n if (unref(disabled)) {\n return;\n }\n\n let [valueX, valueY] = unref(modelValue);\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n if (x) {\n valueX = +roundStep(Math.max(minX, Math.min(maxX, valueX - stepX)), stepX).toPrecision(4);\n }\n\n if (y) {\n valueY = +roundStep(Math.max(minY, Math.min(maxY, valueY - stepY)), stepY).toPrecision(4);\n }\n\n modelValue.value = [valueX, valueY];\n }\n\n function onIncrement(x: boolean, y: boolean): void {\n if (unref(disabled)) {\n return;\n }\n\n let [valueX, valueY] = unref(modelValue);\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n if (x) {\n valueX = +roundStep(Math.max(minX, Math.min(maxX, valueX + stepX)), stepX).toPrecision(4);\n }\n\n if (y) {\n valueY = +roundStep(Math.max(minY, Math.min(maxY, valueY + stepY)), stepY).toPrecision(4);\n }\n\n modelValue.value = [valueX, valueY];\n }\n\n function onPointerDown(evt: PointerEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n isDragging.value = true;\n requestAnimationFrame(() => onPointerMove(evt));\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const root = unrefTemplateElement(rootRef);\n\n if (!unref(isDragging) || !root) {\n return;\n }\n\n const [maxX, maxY] = unref(max);\n const [minX, minY] = unref(min);\n const [stepX, stepY] = unref(step);\n\n let {top, left, width, height} = root.getBoundingClientRect();\n top += 6;\n left += 6;\n width -= 12;\n height -= 12;\n\n const x = Math.max(0, Math.min(1, (evt.clientX - left) / width));\n const y = Math.max(0, Math.min(1, (evt.clientY - top) / height));\n\n modelValue.value = [\n +roundStep(x * (maxX - minX) + minX, stepX).toPrecision(4),\n +roundStep(y * (maxY - minY) + minY, stepY).toPrecision(4)\n ];\n\n evt.preventDefault();\n }\n\n function onPointerUp(): void {\n isDragging.value = false;\n }\n\n watch(isDragging, isDragging => emit('dragging', isDragging));\n</script>\n","<template>\n <div\n :class=\"clsx(\n mode === 'error' && $style.formFieldAdditionError,\n mode === 'hint' && $style.formFieldAdditionHint\n )\"\n role=\"alert\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.formFieldAdditionIcon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span v-if=\"message\">\n {{ message }}\n </span>\n\n <slot/>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const {\n mode = 'hint'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly message?: string;\n readonly mode?: 'error' | 'hint';\n }>();\n</script>\n","<template>\n <div :class=\"$style.formField\">\n <label\n :for=\"id\"\n :class=\"$style.formFieldHeader\">\n <span :class=\"$style.formFieldLabel\">\n {{ label }}\n </span>\n\n <span\n v-if=\"isOptional\"\n :class=\"$style.formFieldOptional\">\n ({{ translate('flux.optional') }})\n </span>\n\n <span\n v-if=\"'value' in slots\"\n :class=\"$style.formFieldValue\">\n <slot\n name=\"value\"\n v-bind=\"{currentLength, error, hint, id, isOptional, label, maxLength}\"/>\n </span>\n </label>\n\n <slot v-bind=\"{id}\"/>\n\n <span\n v-if=\"currentLength && maxLength && maxLength > 0\"\n :class=\"$style.formFieldCounter\">\n {{ currentLength }} / {{ maxLength }}\n </span>\n\n <FluxFormFieldAddition\n v-if=\"error\"\n icon=\"circle-exclamation\"\n mode=\"error\"\n :message=\"error\"/>\n\n <FluxFormFieldAddition\n v-if=\"hint\"\n icon=\"circle-info\"\n :message=\"hint\"/>\n\n <slot\n name=\"addition\"\n v-bind=\"{currentLength, error, hint, id, isOptional, label, maxLength}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { provide, useId } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFormFieldInjectionKey } from '$flux/data';\n import FluxFormFieldAddition from './FluxFormFieldAddition.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }>();\n\n const slots = defineSlots<{\n default(props: {\n readonly id?: string;\n }): any;\n\n addition(props: {\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }): any;\n\n value(props: {\n readonly currentLength?: number;\n readonly error?: string;\n readonly hint?: string;\n readonly isOptional?: boolean;\n readonly label: string;\n readonly maxLength?: number;\n }): any;\n }>();\n\n const id = useId();\n const translate = useTranslate();\n\n provide(FluxFormFieldInjectionKey, {\n id\n });\n</script>\n","<template>\n <SliderBase\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :is-ticks-visible=\"isTicksVisible\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @dragging=\"onDragging\"\n @update=\"onUpdate\">\n <SliderTrack\n :percentage-lower=\"0\"\n :percentage-upper=\"percentage\">\n <SliderThumb\n ref=\"thumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDragging\"\n :position=\"percentage\"\n @decrement=\"onDecrement\"\n @increment=\"onIncrement\"/>\n </SliderTrack>\n </SliderBase>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clampWithStepPrecision, countDecimals, formatNumber } from '@basmilius/utils';\n import { computed, ref, toRef, unref, useTemplateRef, watch, watchEffect } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { addTooltip, removeTooltip, updateTooltip } from '$flux/data';\n import { SliderBase, SliderThumb, SliderTrack } from './primitive';\n\n const modelValue = defineModel<number>({\n required: true\n });\n\n const {\n formatter = formatNumber,\n disabled: componentDisabled = false,\n isTooltipDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n formatter?(value: number, decimals?: number): string;\n\n readonly disabled?: boolean;\n readonly isTicksVisible?: boolean;\n readonly isTooltipDisabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const thumbRef = useTemplateRef('thumb');\n\n const isDragging = ref(false);\n const localValue = ref(0);\n const percentage = ref(0);\n const tooltipId = ref<number | null>(null);\n\n const tooltipContent = computed(() => formatter(modelValue.value, countDecimals(step)));\n\n function onDragging(is: boolean): void {\n isDragging.value = is;\n\n if (is && !tooltipId.value && !isTooltipDisabled) {\n tooltipId.value = addTooltip({\n content: unref(tooltipContent),\n direction: 'vertical',\n origin: unref(thumbRef)?.$el\n });\n } else if (!is && tooltipId.value) {\n removeTooltip(tooltipId.value);\n tooltipId.value = null;\n }\n }\n\n function onUpdate(value: number): void {\n localValue.value = value;\n\n requestAnimationFrame(() => {\n if (!tooltipId.value) {\n return;\n }\n\n updateTooltip(tooltipId.value, {\n content: formatter(modelValue.value, countDecimals(step)),\n origin: unref(thumbRef)?.$el\n });\n });\n }\n\n function onDecrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n const value = clampWithStepPrecision(localValue.value, min, max, step);\n modelValue.value = Math.max(min, value - step);\n }\n\n function onIncrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n const value = clampWithStepPrecision(localValue.value, min, max, step);\n modelValue.value = Math.min(max, value + step);\n }\n\n watchEffect(() => {\n localValue.value = (unref(modelValue) - min) / (max - min);\n });\n\n watch(([() => max, () => min, localValue, () => step]), () => {\n const value = clampWithStepPrecision(unref(localValue), min, max, step);\n modelValue.value = value;\n percentage.value = (value - min) / (max - min);\n }, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"$style.colorPicker\"\n :style=\"{\n '--pickerBackground': saturationPickerColor\n }\">\n <CoordinatePicker\n v-model=\"saturationValue\"\n :class=\"$style.colorPickerSaturation\"\n :max=\"1\"\n :min=\"0\"\n :step=\"0.0005\"\n @dragging=\"onDragging\"/>\n\n <FluxFormSlider\n v-model=\"hue\"\n :class=\"$style.colorPickerHueSlider\"\n is-tooltip-disabled\n :max=\"360\"\n :min=\"0\"\n :step=\"0.1\"/>\n\n <FluxFormSlider\n v-if=\"isAlphaEnabled\"\n v-model=\"alpha\"\n :class=\"$style.colorPickerAlphaSlider\"\n is-tooltip-disabled\n :max=\"1\"\n :min=\"0\"\n :step=\"0.001\"/>\n\n <div :class=\"$style.colorPickerValue\">\n <div\n :class=\"$style.colorPickerPreview\"\n :style=\"{\n '--color': rgb\n }\"/>\n\n <FluxFormField\n v-if=\"type === 'hex'\"\n label=\"Hex\">\n <FluxFormInput v-model.lazy=\"modelValue\"/>\n </FluxFormField>\n\n <template v-else-if=\"type === 'rgb'\">\n <FluxFormField label=\"R\">\n <FluxFormInput\n v-model.lazy=\"rgbInputR\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"G\">\n <FluxFormInput\n v-model.lazy=\"rgbInputG\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"B\">\n <FluxFormInput\n v-model.lazy=\"rgbInputB\"\n :max=\"255\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n\n <template v-else-if=\"type === 'hsv'\">\n <FluxFormField label=\"H\">\n <FluxFormInput\n v-model.lazy=\"hsvInputH\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"S\">\n <FluxFormInput\n v-model.lazy=\"hsvInputS\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"V\">\n <FluxFormInput\n v-model.lazy=\"hsvInputV\"\n :max=\"1\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n\n <template v-else-if=\"type === 'hsl'\">\n <FluxFormField label=\"H\">\n <FluxFormInput\n v-model.lazy=\"hslInputH\"\n :max=\"360\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"S\">\n <FluxFormInput\n v-model.lazy=\"hslInputS\"\n :max=\"100\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n\n <FluxFormField label=\"L\">\n <FluxFormInput\n v-model.lazy=\"hslInputL\"\n :max=\"100\"\n :min=\"0\"\n type=\"number\"/>\n </FluxFormField>\n </template>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { hexToRGB, hslToHSV, hslToRGB, hsvToHSL, hsvToRGB, rgbToHEX, rgbToHSL, rgbToHSV } from '@basmilius/utils';\n import { blue500 } from '@flux-ui/internals';\n import { computed, ComputedRef, ref, unref, watch } from 'vue';\n import CoordinatePicker from './primitive/CoordinatePicker.vue';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormSlider from './FluxFormSlider.vue';\n import $style from '$flux/css/component/Color.module.scss';\n\n const modelValue = defineModel<string | [number, number, number]>({\n default: blue500\n });\n\n const {\n type = 'hex'\n } = defineProps<{\n readonly isAlphaEnabled?: boolean;\n readonly type?: 'hex' | 'rgb' | 'hsl' | 'hsv';\n }>();\n\n const alpha = ref(1);\n const hsv = ref<[number, number, number]>([0, 0, 0]);\n const isDragging = ref(false);\n\n const rgb = computed(() => {\n const [r, g, b] = hsvToRGB(...unref(hsv));\n\n return `rgb(${r} ${g} ${b} / ${unref(alpha)})`;\n });\n\n const hue = computed({\n get: () => unref(hsv)[0] * 360,\n set: value => hsv.value = [value / 360, hsv.value[1], hsv.value[2]]\n });\n\n const saturation = computed({\n get: () => unref(hsv)[1],\n set: value => hsv.value = [hsv.value[0], value, hsv.value[2]]\n });\n\n const value = computed({\n get: () => 1 - unref(hsv)[2],\n set: value => hsv.value = [hsv.value[0], hsv.value[1], 1 - value]\n });\n\n const saturationValue = computed({\n get: (): [number, number] => [unref(saturation), unref(value)],\n set: ([s, v]: [number, number]) => {\n saturation.value = s;\n value.value = v;\n }\n });\n\n const saturationPickerColor = computed(() => {\n const [r, g, b] = hsvToRGB(unref(hsv)[0], 1, 1);\n\n return `rgb(${r} ${g} ${b})`;\n });\n\n const hslInputH = generateComputedInput(0, hsvToHSL, hslToHSV);\n const hslInputS = generateComputedInput(1, hsvToHSL, hslToHSV);\n const hslInputL = generateComputedInput(2, hsvToHSL, hslToHSV);\n\n const hsvInputH = generateComputedInput(0);\n const hsvInputS = generateComputedInput(1);\n const hsvInputV = generateComputedInput(2);\n\n const rgbInputR = generateComputedInput(0, hsvToRGB, rgbToHSV);\n const rgbInputG = generateComputedInput(1, hsvToRGB, rgbToHSV);\n const rgbInputB = generateComputedInput(2, hsvToRGB, rgbToHSV);\n\n function onDragging(is: boolean): void {\n isDragging.value = is;\n }\n\n function generateComputedInput(index: number, fromHSV?: (a: number, b: number, c: number) => [number, number, number], toHSV?: (a: number, b: number, c: number) => [number, number, number]): ComputedRef<number> {\n return computed({\n get: () => fromHSV?.(...unref(hsv))[index] ?? unref(hsv)[index],\n set: value => {\n const values = fromHSV?.(...unref(hsv)) ?? unref(hsv);\n values[index] = value;\n hsv.value = toHSV?.(...values) ?? values;\n }\n });\n }\n\n watch(modelValue, (modelValue, oldModelValue) => {\n if (unref(isDragging)) {\n return;\n }\n\n if (JSON.stringify(modelValue) === JSON.stringify(oldModelValue)) {\n return;\n }\n\n const hex = type === 'hex' ? modelValue.toString() : '';\n const values: [number, number, number] = type !== 'hex' ? modelValue as [number, number, number] : [0, 0, 0];\n\n switch (type) {\n case 'hex':\n hsv.value = rgbToHSV(...hexToRGB(hex));\n break;\n\n case 'rgb':\n hsv.value = rgbToHSV(...values);\n break;\n\n case 'hsl':\n hsv.value = rgbToHSV(...hslToRGB(...values));\n break;\n\n case 'hsv':\n hsv.value = [...values];\n break;\n }\n }, {immediate: true});\n\n watch(hsv, hsv => {\n switch (type) {\n case 'hex':\n modelValue.value = rgbToHEX(...hsvToRGB(...hsv));\n break;\n\n case 'rgb':\n modelValue.value = hsvToRGB(...hsv);\n break;\n\n case 'hsl':\n modelValue.value = rgbToHSL(...hsvToRGB(...hsv));\n break;\n\n case 'hsv':\n modelValue.value = [...hsv];\n break;\n }\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.primaryButton\"\n :css-class-icon=\"$style.primaryButtonIcon\"\n :css-class-label=\"$style.primaryButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"$style.colorSelect\">\n <button\n v-for=\"color of colors\"\n :class=\"modelValue === color ? $style.colorSelectColorSelected : $style.colorSelectColorDeselected\"\n :style=\"{\n '--color': color\n }\"\n @click=\"select(color)\">\n <FluxIcon\n :class=\"$style.colorSelectCheck\"\n name=\"check\"\n :size=\"16\"/>\n </button>\n\n <FluxFlyout v-if=\"isCustomAllowed\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.colorSelectCustom\"\n @click=\"open()\">\n <FluxIcon\n name=\"ellipsis-h\"\n :size=\"16\"/>\n </button>\n </template>\n\n <template #default=\"{close}\">\n <FluxColorPicker\n v-model=\"customColor\"\n :class=\"$style.colorSelectCustomPicker\"/>\n\n <FluxPaneBody :class=\"$style.colorSelectButtons\">\n <FluxSecondaryButton\n :label=\"t('flux.cancel')\"\n @click=\"close()\"/>\n\n <FluxPrimaryButton\n :label=\"t('flux.ok')\"\n @click=\"select(customColor, close)\"/>\n </FluxPaneBody>\n </template>\n </FluxFlyout>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { amber500, blue500, cyan500, emerald500, fuchsia500, green500, indigo500, lime500, orange500, pink500, purple500, red500, rose500, sky500, teal500, violet500, yellow500 } from '@flux-ui/internals';\n import { ref, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxColorPicker from './FluxColorPicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Color.module.scss';\n\n const modelValue = defineModel<string>({\n default: '#000000'\n });\n\n const {\n colors = [red500, orange500, amber500, yellow500, lime500, green500, emerald500, teal500, cyan500, sky500, blue500, indigo500, violet500, purple500, fuchsia500, pink500, rose500]\n } = defineProps<{\n readonly colors?: string[];\n readonly isCustomAllowed?: boolean;\n }>();\n\n const t = useTranslate();\n\n const customColor = ref('#000000');\n\n function select(color: string, close?: () => void): void {\n modelValue.value = color;\n close?.();\n }\n\n watch(modelValue, value => customColor.value = value, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"$style.container\"\n :style=\"{'--gutter': `${gutter}px`}\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n gutter = 30\n } = defineProps<{\n readonly gutter?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <SelectBase\n v-model:searchQuery=\"modelSearch\"\n :disabled=\"disabled\"\n :is-multiple=\"isMultiple\"\n :is-searchable=\"isSearchable\"\n :options=\"groups\"\n :placeholder=\"placeholder\"\n :selected=\"selected\"\n @deselect=\"onDeselect\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectEntry, FluxFormSelectValue } from '@flux-ui/types';\n import { toRef, unref } from 'vue';\n import { SelectBase } from '$flux/component/primitive';\n import { useDisabled } from '$flux/composable';\n import { useFormSelect } from '$flux/composable/private';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const modelValue = defineModel<FluxFormSelectValue>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n isMultiple,\n options\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isMultiple?: boolean;\n readonly placeholder?: string;\n readonly isSearchable?: boolean;\n readonly options: FluxFormSelectEntry[];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {groups, selected, values} = useFormSelect(modelValue, isMultiple, toRef(() => options), modelSearch);\n\n function onDeselect(id: string | number | null): void {\n if (unref(isMultiple)) {\n modelValue.value = unref(values).filter(v => v !== id);\n }\n }\n\n function onSelect(id: string | number | null): void {\n if (unref(isMultiple)) {\n modelValue.value = [...unref(values), id];\n } else {\n modelValue.value = id;\n }\n }\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :class=\"[\n isArrow && $style.paginationButtonArrow,\n isCurrent && $style.paginationButtonCurrent,\n isSpacer && $style.paginationButtonSpacer\n ]\"\n :css-class=\"$style.paginationButton\"\n :css-class-icon=\"$style.paginationButtonIcon\"\n :css-class-label=\"$style.paginationButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<FluxButtonProps & {\n readonly isArrow?: boolean;\n readonly isCurrent?: boolean;\n readonly isSpacer?: boolean;\n }>();\n\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <nav\n :class=\"$style.pagination\"\n role=\"navigation\"\n :aria-label=\"translate('flux.pagination')\">\n <FluxPaginationButton\n v-if=\"arrows || isCompact\"\n :disabled=\"isPreviousDisabled\"\n icon-leading=\"angle-left\"\n is-arrow\n :aria-label=\"translate('flux.previous')\"\n @click=\"previous\"/>\n\n <template\n v-if=\"!isCompact\"\n v-for=\"p of visiblePages\">\n <FluxPaginationButton\n v-if=\"p === 'dots'\"\n disabled\n icon-leading=\"ellipsis-h\"\n is-spacer/>\n\n <FluxPaginationButton\n v-else-if=\"p === page\"\n is-current\n :label=\"`${p}`\"\n aria-current=\"page\"/>\n\n <FluxPaginationButton\n v-else\n :label=\"`${p}`\"\n @click=\"navigate(p)\"/>\n </template>\n\n <template v-else>\n <FluxPaginationButton\n :class=\"$style.paginationCurrentZZ\"\n @click=\"prompt\"\n #before>\n <strong>{{ page }}</strong>\n <span>/</span>\n <span>{{ pages }}</span>\n </FluxPaginationButton>\n </template>\n\n <FluxPaginationButton\n v-if=\"arrows || isCompact\"\n :disabled=\"isNextDisabled\"\n icon-leading=\"angle-right\"\n is-arrow\n :aria-label=\"translate('flux.next')\"\n @click=\"next\"/>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { showPrompt } from '$flux/data';\n import FluxPaginationButton from './FluxPaginationButton.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n const emit = defineEmits<{\n navigate: [number];\n }>();\n\n const {\n page,\n perPage,\n total\n } = defineProps<{\n readonly arrows?: boolean;\n readonly isCompact?: boolean;\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n }>();\n\n const translate = useTranslate();\n\n const pages = computed(() => Math.ceil(total / perPage));\n const isNextDisabled = computed(() => page >= unref(pages));\n const isPreviousDisabled = computed(() => page <= 1);\n\n const visiblePages = computed(() => {\n if (unref(pages) === 0) {\n return [];\n }\n\n const sizes = {\n end: 1,\n middle: 2\n } as const;\n\n let dots = false;\n let visible: (number | 'dots')[] = [];\n\n if (unref(pages) === (sizes.end + sizes.middle + 2)) {\n for (let n = 1; n <= unref(pages); ++n) {\n visible.push(n);\n }\n } else {\n for (let n = 1; n <= unref(pages); ++n) {\n if (page === n) {\n dots = true;\n visible.push(n);\n } else if (n <= sizes.end || (n >= page - sizes.middle && n <= page + sizes.middle) || n > unref(pages) - sizes.end) {\n dots = true;\n visible.push(n);\n } else if (dots) {\n dots = false;\n visible.push('dots');\n }\n }\n }\n\n return visible;\n });\n\n function navigate(page: number): void {\n emit('navigate', page);\n }\n\n function next(): void {\n navigate(page + 1);\n }\n\n function previous(): void {\n navigate(page - 1);\n }\n\n async function prompt(): Promise<void> {\n const pageStr = await showPrompt({\n icon: 'ellipsis',\n title: translate('flux.paginationNavigateTitle'),\n message: translate('flux.paginationNavigateMessage'),\n fieldLabel: translate('flux.paginationNavigatePage')\n });\n\n const page = Number(pageStr);\n\n if (isNaN(page) || page > unref(pages) || page <= 0) {\n return;\n }\n\n navigate(page);\n }\n</script>\n","<template>\n <div :class=\"$style.paginationBar\">\n <FluxPagination\n v-if=\"total > perPage\"\n arrows\n :page=\"page\"\n :per-page=\"perPage\"\n :total=\"total\"\n @navigate=\"$emit('navigate', $event)\"/>\n\n <FluxSpacer :class=\"$style.paginationBarSpacer\"/>\n\n <div :class=\"$style.paginationBarLimit\">\n <span :class=\"$style.paginationBarLimitDisplayingOf\">\n {{\n translate('flux.displayingOf', {\n from: (page - 1) * perPage + 1,\n to: Math.min(total, page * perPage),\n total: total\n })\n }}\n </span>\n\n <FluxFormSelect\n v-model=\"limit\"\n :class=\"$style.paginationBarLimitSelect\"\n :options=\"limitOptions\"/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectOption } from '@flux-ui/types';\n import { computed, ref, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormSelect from './FluxFormSelect.vue';\n import FluxPagination from './FluxPagination.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import $style from '$flux/css/component/Pagination.module.scss';\n\n const emit = defineEmits<{\n limit: [number];\n navigate: [number];\n }>();\n\n const {\n limits = [5, 10, 25, 50, 100],\n perPage\n } = defineProps<{\n readonly limits?: number[];\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n }>();\n\n const translate = useTranslate();\n\n const limit = ref(perPage);\n\n const limitOptions = computed(() => limits.map<FluxFormSelectOption>(n => ({\n label: translate('flux.showN', {n}),\n value: n\n })));\n\n watch(limit, limit => emit('limit', limit));\n\n watch(() => perPage, perPage => limit.value = perPage, {immediate: true});\n</script>\n","<template>\n <td\n :class=\"clsx(\n $style.tableCell,\n isBordered && $style.isBordered,\n isHoverable && $style.isHoverable,\n isSeparated && $style.isSeparated,\n isStriped && $style.isStriped\n )\"\n role=\"cell\">\n <slot name=\"content\">\n <div\n :class=\"$style.tableCellContent\"\n :style=\"{\n flexFlow: contentDirection\n }\">\n <slot/>\n </div>\n </slot>\n </td>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { useTableInjection } from '$flux/composable';\n import $style from '$flux/css/component/Table.module.scss';\n\n const {\n contentDirection = 'row'\n } = defineProps<{\n readonly contentDirection?: 'column' | 'row';\n }>();\n\n defineSlots<{\n default(): any;\n content(): any;\n }>();\n\n const {\n isBordered,\n isHoverable,\n isSeparated,\n isStriped\n } = useTableInjection();\n</script>\n","<template>\n <tr :class=\"$style.tableRow\">\n <slot/>\n </tr>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Table.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.table\">\n <table :class=\"$style.tableBase\">\n <slot name=\"colgroups\"/>\n\n <thead v-if=\"slots.header\">\n <slot name=\"header\"/>\n </thead>\n\n <tbody v-if=\"slots.default\">\n <slot/>\n\n <FluxTableRow\n v-if=\"fillColumns\"\n :class=\"$style.tableFill\">\n <FluxTableCell v-for=\"_ of fillColumns\"/>\n </FluxTableRow>\n </tbody>\n\n <tfoot v-if=\"slots.footer\">\n <slot name=\"footer\"/>\n </tfoot>\n\n <caption\n v-if=\"slots.caption\"\n :style=\"{captionSide}\">\n <slot name=\"caption\"/>\n </caption>\n </table>\n\n <div\n v-if=\"isLoading\"\n :class=\"$style.tableLoader\">\n <FluxSpinner/>\n </div>\n\n <FluxPaneBody\n v-if=\"slots.pagination\"\n :class=\"$style.tablePagination\">\n <slot name=\"pagination\"/>\n </FluxPaneBody>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { VNode } from 'vue';\n import { provide } from 'vue';\n import { FluxTableInjectionKey } from '$flux/data';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import FluxTableCell from './FluxTableCell.vue';\n import FluxTableRow from './FluxTableRow.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n const {\n captionSide = 'bottom',\n isBordered = true,\n isHoverable = false,\n isLoading = false,\n isSeparated = true,\n isStriped = false\n } = defineProps<{\n readonly captionSide?: 'top' | 'bottom';\n readonly fillColumns?: number;\n readonly isBordered?: boolean;\n readonly isHoverable?: boolean;\n readonly isLoading?: boolean;\n readonly isSeparated?: boolean;\n readonly isStriped?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): VNode;\n colgroups?(): VNode;\n caption?(): VNode;\n footer?(): VNode;\n header?(): VNode;\n pagination?(): VNode;\n }>();\n\n provide(FluxTableInjectionKey, {\n isBordered,\n isHoverable,\n isSeparated,\n isStriped\n });\n</script>\n","<template>\n <FluxTable\n :fill-columns=\"fillColumns\"\n :is-bordered=\"isBordered\"\n :is-hoverable=\"isHoverable\"\n :is-loading=\"isLoading\"\n :is-separated=\"isSeparated\"\n :is-striped=\"isStriped\">\n <template\n v-if=\"'colgroups' in slots\"\n #colgroups>\n <slot name=\"colgroups\"/>\n </template>\n\n <template\n v-if=\"'header' in slots\"\n #header>\n <FluxTableRow>\n <slot\n name=\"header\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"'footer' in slots\"\n #footer>\n <FluxTableRow>\n <slot\n name=\"footer\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"total > limits[0]\"\n #pagination>\n <slot\n name=\"pagination\"\n v-bind=\"{page, perPage, rows, total}\">\n <FluxPaginationBar\n :limits=\"limits\"\n :page=\"page\"\n :per-page=\"perPage\"\n :total=\"total\"\n @limit=\"emit('limit', $event)\"\n @navigate=\"emit('navigate', $event)\"/>\n </slot>\n </template>\n\n <FluxTableRow\n v-for=\"(row, index) of rows\"\n :key=\"uniqueKey ? row[uniqueKey] : index\">\n <template v-for=\"(_, name) of slots\">\n <slot\n v-if=\"!IGNORED_SLOTS.includes(name as string)\"\n v-bind=\"{index, page, perPage, row, rows, total}\"\n :name=\"name\"/>\n </template>\n </FluxTableRow>\n </FluxTable>\n</template>\n\n<script\n lang=\"ts\"\n setup\n generic=\"T extends Record<string, any>\">\n import type { VNode } from 'vue';\n import { computed } from 'vue';\n import FluxPaginationBar from './FluxPaginationBar.vue';\n import FluxTable from './FluxTable.vue';\n import FluxTableRow from './FluxTableRow.vue';\n\n const IGNORED_SLOTS: string[] = ['header', 'footer', 'colgroups', 'pagination'];\n\n const emit = defineEmits<{\n limit: [number];\n navigate: [number];\n }>();\n\n const {\n isBordered = true,\n isHoverable = false,\n isLoading = false,\n isSeparated = true,\n isStriped = false,\n dataSet,\n perPage\n } = defineProps<{\n readonly dataSet: T[];\n readonly fillColumns?: number;\n readonly isBordered?: boolean;\n readonly isHoverable?: boolean;\n readonly isLoading?: boolean;\n readonly isSeparated?: boolean;\n readonly isStriped?: boolean;\n readonly limits: number[];\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n readonly uniqueKey?: string;\n }>();\n\n const slots = defineSlots<{\n [key: string]: (props: {\n readonly index: number;\n readonly page: number;\n readonly perPage: number;\n readonly row: T;\n readonly rows: T[];\n readonly total: number;\n }) => VNode;\n\n footer(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n header(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n pagination(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n colgroups(): VNode;\n }>();\n\n const rows = computed(() => dataSet.slice(0, perPage));\n</script>\n","<template>\n <div :class=\"$style.datePicker\">\n <div :class=\"$style.datePickerHeader\">\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDatePrevious, 'month')\"\n icon-leading=\"angle-left\"\n :aria-label=\"translate('flux.previous')\"\n @click=\"previousMonth\"/>\n </FluxFadeTransition>\n\n <div\n :class=\"$style.datePickerHeaderView\"\n :id=\"id\"\n aria-live=\"polite\"\n role=\"presentation\">\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('month')\">\n {{ viewMonth }}\n </button>\n\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('year')\">\n {{ viewYear }}\n </button>\n </div>\n\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDateNext, 'month')\"\n icon-leading=\"angle-right\"\n :aria-label=\"translate('flux.next')\"\n @click=\"nextMonth\"/>\n </FluxFadeTransition>\n </div>\n\n <FluxVerticalWindowTransition :is-back=\"viewMode === 'date'\">\n <div\n v-if=\"viewMode === 'date'\"\n key=\"date\"\n :class=\"$style.datePickerDates\"\n :aria-labelledby=\"id\">\n <FluxWindowTransition :is-back=\"isTransitioningToPast\">\n <div\n :key=\"viewDate.month\"\n :class=\"$style.datePickerDatesGrid\">\n <template\n v-for=\"day of days\"\n :key=\"day\">\n <span :class=\"$style.datePickerDay\">{{ day }}</span>\n </template>\n\n <template\n v-for=\"date of dates\"\n :key=\"date\">\n <button\n :class=\"clsx(\n $style.datePickerDate,\n isDisabled(date) && $style.isDisabled,\n isWithinRange(date, 'end') && $style.isRangeEnd,\n isWithinRange(date) && $style.isRangeEntry,\n isWithinRange(date, 'start') && $style.isRangeStart,\n isWithinSelection(date, 'end') && $style.isSelectionEnd,\n isWithinSelection(date) && $style.isSelectionEntry,\n isWithinSelection(date, 'start') && $style.isSelectionStart,\n isSelected(date) && $style.isSelected\n )\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"setDate(date)\"\n @mouseover=\"onDateMouseOver(date)\"\n @mouseout=\"onDateMouseOut\">\n {{ date.toLocaleString({day: 'numeric'}) }}\n </button>\n </template>\n </div>\n </FluxWindowTransition>\n </div>\n\n <div\n v-else-if=\"viewMode === 'month'\"\n key=\"month\"\n :class=\"$style.datePickerMonths\">\n <template\n v-for=\"month of months\"\n :key=\"month\">\n <FluxSecondaryButton\n :disabled=\"!isWithinBoundary(month.date, 'month')\"\n :label=\"month.label\"\n tabindex=\"-1\"\n @click=\"setViewMonth(month.date)\"/>\n </template>\n </div>\n\n <div\n v-else-if=\"viewMode === 'year'\"\n key=\"year\"\n :class=\"$style.datePickerYears\">\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n tabindex=\"-1\"\n @click=\"previousYears\"/>\n\n <template\n v-for=\"year of years\"\n :key=\"year\">\n <FluxSecondaryButton\n :label=\"year.toString()\"\n tabindex=\"-1\"\n @click=\"setViewYear(year)\"/>\n </template>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n tabindex=\"-1\"\n @click=\"nextYears\"/>\n </div>\n </FluxVerticalWindowTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useCalendar, useCalendarMonthSwitcher, useCalendarYearSwitcher } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { computed, ref, unref, useId, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition, FluxVerticalWindowTransition, FluxWindowTransition } from '$flux/transition';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/DatePicker.module.scss';\n\n const modelValue = defineModel<DateTime | DateTime[] | null>({\n default: null,\n required: true\n });\n\n const {\n max,\n min,\n rangeMode\n } = defineProps<{\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const id = useId();\n const translate = useTranslate();\n\n const {\n isTransitioningToPast,\n viewDate,\n viewDateNext,\n viewDatePrevious,\n viewMonth,\n viewYear,\n dates,\n days,\n setViewDate,\n nextMonth,\n previousMonth\n } = useCalendar(getInitialDate());\n\n const {\n months\n } = useCalendarMonthSwitcher(viewDate, 'short');\n\n const {\n years,\n next: nextYears,\n previous: previousYears\n } = useCalendarYearSwitcher(viewDate);\n\n const selection = ref<[DateTime | null, DateTime | null]>([null, null]);\n const viewMode = ref<'date' | 'month' | 'year'>('date');\n\n const maxDate = computed(() => (max ?? DateTime.now().endOf('year').plus({year: 100})).startOf('day'));\n const minDate = computed(() => (min ?? DateTime.now().startOf('year').minus({year: 100})).startOf('day'));\n const normalizedSelection = computed(() => {\n const [start, end] = unref(selection);\n\n if (!start || !end) {\n return [start, end];\n }\n\n if (start > end) {\n return [end, start];\n } else {\n return [start, end];\n }\n });\n\n watch(modelValue, () => {\n setViewDate(getInitialDate());\n });\n\n function getInitialDate(): DateTime {\n const value = unref(modelValue);\n let date: DateTime;\n\n if (!value) {\n date = DateTime.now();\n } else if (Array.isArray(value)) {\n date = value[1];\n } else {\n date = value as DateTime;\n }\n\n return date.startOf('day');\n }\n\n function isDisabled(date: DateTime): boolean {\n if (unref(viewDate).month !== date.month) {\n return true;\n }\n\n return !isWithinBoundary(date);\n }\n\n function isSelected(date: DateTime): boolean {\n if (rangeMode) {\n return false;\n }\n\n const value = unref(modelValue) as (DateTime | DateTime[]);\n\n if (!value || Array.isArray(value)) {\n return false;\n }\n\n return value.hasSame(date, 'day');\n }\n\n function isWithinBoundary(date: DateTime, unit?: 'month'): boolean {\n if (unit === 'month') {\n return unref(maxDate).endOf('month') >= date && unref(minDate).startOf('month') <= date;\n }\n\n return unref(maxDate) >= date && unref(minDate) <= date;\n }\n\n function isWithinRange(date: DateTime, edge?: 'start' | 'end'): boolean {\n if (!rangeMode) {\n return false;\n }\n\n const value = unref(modelValue);\n\n if (!value || !Array.isArray(value)) {\n return false;\n }\n\n if (edge) {\n const index = edge === 'start' ? 0 : 1;\n\n return value[index].hasSame(date, 'day');\n }\n\n return date >= value[0].startOf('day') && date <= value[1].startOf('day');\n }\n\n function isWithinSelection(date: DateTime, edge?: 'start' | 'end'): boolean {\n const [selectionStart, selectionEnd] = unref(normalizedSelection);\n\n if (!selectionStart || !selectionEnd) {\n return false;\n }\n\n if (edge) {\n return (edge === 'start' ? selectionStart : selectionEnd)?.hasSame(date, 'day');\n }\n\n return date >= selectionStart && date <= selectionEnd;\n }\n\n function setDate(date: DateTime): void {\n switch (rangeMode) {\n case 'range':\n const [start] = unref(selection);\n\n if (!start) {\n selection.value = [date, date];\n } else {\n if (date >= start) {\n modelValue.value = [start, date];\n } else {\n modelValue.value = [date, start];\n }\n\n selection.value = [null, null];\n }\n break;\n\n case 'month':\n modelValue.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n modelValue.value = [date.startOf('week'), date.endOf('week')];\n break;\n\n default:\n modelValue.value = date;\n break;\n }\n }\n\n function setView(view: 'date' | 'month' | 'year'): void {\n viewMode.value = unref(viewMode) === view ? 'date' : view;\n }\n\n function setViewMonth(month: DateTime): void {\n setView('date');\n setViewDate(month);\n }\n\n function setViewYear(year: number): void {\n setView('date');\n setViewDate(unref(viewDate).set({year}));\n }\n\n function onDateMouseOver(date: DateTime): void {\n if (!rangeMode) {\n return;\n }\n\n switch (rangeMode) {\n case 'range':\n selection.value = [selection.value[0], date];\n break;\n\n case 'month':\n selection.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n selection.value = [date.startOf('week'), date.endOf('week')];\n break;\n }\n }\n\n function onDateMouseOut(): void {\n if (!rangeMode || rangeMode === 'range') {\n return;\n }\n\n selection.value = [null, null];\n }\n</script>\n","<template>\n <slot/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { provide, toRef } from 'vue';\n import { FluxDisabledInjectionKey } from '$flux/data';\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled = true\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n provide(FluxDisabledInjectionKey, toRef(() => disabled));\n</script>\n","<template>\n <div\n :class=\"clsx(\n contentPlacement === 'start' && $style.dividerContentStart,\n contentPlacement === 'center' && $style.dividerContentCenter,\n contentPlacement === 'end' && $style.dividerContentEnd\n )\"\n role=\"separator\"\n aria-orientation=\"horizontal\">\n <div\n v-if=\"slots.default\"\n :class=\"$style.dividerContent\">\n <slot/>\n </div>\n\n <hr\n v-else\n :class=\"$style.dividerLine\">\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Divider.module.scss';\n\n const {\n contentPlacement = 'center'\n } = defineProps<{\n readonly contentPlacement?: 'start' | 'center' | 'end';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.dotPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternContentUnits=\"userSpaceOnUse\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <circle\n :r=\"cr\"\n :cx=\"width / 2 - cx\"\n :cy=\"height / 2 - cy\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref, useId, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 16,\n height = 16,\n cr = 1,\n cx = 1,\n cy = 1\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly cr?: number;\n readonly cx?: number;\n readonly cy?: number;\n }>();\n\n const svgRef = useTemplateRef<HTMLElement>('svg');\n const id = useId();\n\n const svgWidth = ref(0);\n const svgHeight = ref(0);\n\n watch(svgRef, (svg, _, onCleanup) => {\n if (!svg) {\n return;\n }\n\n const onResize = () => {\n svgWidth.value = svg.clientWidth;\n svgHeight.value = svg.clientHeight;\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n onResize();\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"[\n $style.dropZone,\n isDragging && $style.isDragging,\n isDraggingOver && $style.isDraggingOver\n ]\"\n :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"$style.dropZoneContent\"\n @dragleave.capture=\"onDragLeave\"\n @dragover.capture=\"onDragEnter\"\n @drop=\"onDrop\">\n <svg\n ref=\"content\"\n :class=\"$style.dropZoneBorder\"\n role=\"presentation\">\n <rect\n height=\"100%\"\n width=\"100%\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n :pathLength=\"pathLength\"/>\n </svg>\n\n <slot v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.dropZoneLoader\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n </div>\n\n <div\n v-if=\"slots.actions\"\n :class=\"$style.dropZoneActions\">\n <slot\n name=\"actions\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n\n <slot\n name=\"extra\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { roundStep } from '@basmilius/utils';\n import { onMounted, onUnmounted, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/DropZone.module.scss';\n\n const emit = defineEmits<{\n select: [File];\n selectMultiple: [FileList];\n }>();\n\n const {\n accept,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n readonly accept?: string;\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n actions?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n extra?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n }>();\n\n const contentRef = useTemplateRef('content');\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n const isDragging = ref(false);\n const isDraggingOver = ref(false);\n const pathLength = ref(0);\n\n onMounted(() => {\n window.addEventListener('dragleave', onWindowDragEnd, {capture: true});\n window.addEventListener('dragover', onWindowDragStart, {capture: true});\n window.addEventListener('drop', onWindowDrop, {capture: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('dragleave', onWindowDragEnd);\n window.removeEventListener('dragover', onWindowDragStart);\n window.removeEventListener('drop', onWindowDrop);\n });\n\n function onDragEnter(evt: DragEvent): void {\n isDraggingOver.value = true;\n evt.preventDefault();\n }\n\n function onDragLeave(): void {\n isDraggingOver.value = false;\n }\n\n function onDrop(evt: DragEvent): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n\n if (!evt.dataTransfer) {\n return;\n }\n\n const files = evt.dataTransfer.files;\n\n if (files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n function onWindowDragEnd(): void {\n isDragging.value = false;\n }\n\n function onWindowDragStart(): void {\n isDragging.value = true;\n }\n\n function onWindowDrop(): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n }\n\n function onFileSelected(evt: Event): void {\n const files = (evt.target as HTMLInputElement).files;\n\n if (!files || files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n }\n\n function showPicker(): void {\n if (unref(disabled)) {\n return;\n }\n\n let input: HTMLInputElement | undefined = document.createElement('input');\n input.accept = accept ?? '*';\n input.multiple = isMultiple ?? false;\n input.type = 'file';\n\n input.addEventListener('change', onFileSelected, {once: true});\n input.showPicker();\n }\n\n watch(contentRef, content => {\n if (!content) {\n return;\n }\n\n const {width, height} = content.getBoundingClientRect();\n pathLength.value = roundStep(width * 2 + height * 2, 6);\n }, {immediate: true});\n</script>\n\n","<template>\n <VNodeRenderer\n v-if=\"vnode\"\n :vnode=\"vnode\"/>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import { VNode } from 'vue';\n import { VNodeRenderer } from './primitive';\n\n defineProps<{\n readonly vnode?: VNode;\n }>();\n</script>\n","<template>\n <div\n :class=\"isOpen ? $style.expandableOpened : $style.expandable\"\n :id=\"headerId\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"isOpen\">\n <slot\n v-bind=\"{label, isOpen, close, open, toggle}\"\n name=\"header\">\n <button\n :class=\"$style.expandableHeader\"\n type=\"button\"\n @click=\"toggle\">\n <FluxFadeTransition>\n <FluxIcon\n v-if=\"icon\"\n :key=\"icon\"\n :name=\"icon\"/>\n </FluxFadeTransition>\n\n <span>{{ label }}</span>\n\n <FluxFadeTransition>\n <FluxIcon\n :key=\"expandIcon\"\n :name=\"expandIcon\"\n :size=\"16\"/>\n </FluxFadeTransition>\n </button>\n </slot>\n\n <FluxAutoHeightTransition>\n <div\n v-if=\"isOpen\"\n :class=\"$style.expandableBody\"\n :id=\"contentId\"\n :aria-labelledby=\"headerId\">\n <slot\n v-bind=\"{label, close}\"\n name=\"body\">\n <div :class=\"$style.expandableContent\">\n <slot v-bind=\"{label, close}\"/>\n </div>\n </slot>\n </div>\n </FluxAutoHeightTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useComponentId } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, getCurrentInstance, onBeforeMount, onUnmounted, ref, unref, useId, watch } from 'vue';\n import { useExpandableGroupInjection } from '$flux/composable';\n import { FluxAutoHeightTransition, FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const emit = defineEmits<{\n toggle: [boolean];\n }>();\n\n const {\n isOpened\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isOpened?: boolean;\n readonly label?: string;\n }>();\n\n const componentId = useComponentId();\n const contentId = useId();\n const headerId = useId();\n const instance = getCurrentInstance()!;\n const isOpen = ref(false);\n\n const {closeAll, register, unregister} = useExpandableGroupInjection();\n\n const expandIcon = computed<FluxIconName>(() => unref(isOpen) ? 'minus' : 'plus');\n\n onBeforeMount(() => register?.(unref(componentId), instance));\n onUnmounted(() => unregister?.(unref(componentId)));\n\n function close(): void {\n isOpen.value = false;\n emit('toggle', isOpen.value);\n }\n\n function open(): void {\n closeAll?.();\n isOpen.value = true;\n emit('toggle', isOpen.value);\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n watch(() => isOpened, () => {\n if (isOpened) {\n open();\n } else {\n close();\n }\n }, {immediate: true});\n\n defineExpose({\n isOpen,\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <div :class=\"$style.expandableGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { getExposedRef } from '@flux-ui/internals';\n import { ComponentInternalInstance, provide } from 'vue';\n import { FluxExpandableGroupInjectionKey } from '$flux/data';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const {\n isControlled\n } = defineProps<{\n readonly isControlled?: boolean;\n }>();\n\n\n defineSlots<{\n default(): any;\n }>();\n\n const expandables: { [key: number]: ComponentInternalInstance; } = {};\n\n function closeAll(): void {\n Object.values(expandables).forEach(expandable => {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = false;\n });\n }\n\n function register(uid: number, expandable: ComponentInternalInstance): void {\n expandables[uid] = expandable;\n\n if (!isControlled && Object.values(expandables).length === 1) {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = true;\n }\n }\n\n function unregister(uid: number): void {\n delete expandables[uid];\n }\n\n provide(FluxExpandableGroupInjectionKey, {\n closeAll,\n register,\n unregister\n });\n</script>\n","<template>\n <div\n ref=\"fader\"\n :class=\"$style.fader\">\n <slot v-bind=\"{current, next, previous}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useInterval } from '@flux-ui/internals';\n import { computed, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Fader.module.scss';\n\n const emit = defineEmits<{\n update: [number];\n }>();\n\n const {\n interval = 9000\n } = defineProps<{\n readonly interval?: number;\n }>();\n\n defineSlots<{\n default(props: {\n next(): void;\n previous(): void;\n\n readonly current: number;\n }): any;\n }>();\n\n const faderRef = useTemplateRef('fader');\n useInterval(interval, () => next());\n\n const current = ref(-1);\n\n const count = computed(() => {\n const fader = unrefTemplateElement(faderRef);\n return fader?.children.length ?? 0;\n });\n\n function next(): void {\n current.value = unref(current) + 1 >= unref(count) ? 0 : unref(current) + 1;\n }\n\n function previous(): void {\n current.value = unref(current) - 1 <= -1 ? unref(count) - 1 : unref(current) + 1;\n }\n\n watch(current, current => {\n const fader = unrefTemplateElement(faderRef);\n\n if (!fader || fader.children.length === 0) {\n return;\n }\n\n Array.from(fader.children).forEach(item => item.classList.remove($style.isCurrent));\n fader.children[current].classList.add($style.isCurrent);\n emit('update', current);\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.faderItem\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Fader.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxWindowTransition :is-back=\"isBack\">\n <template v-for=\"(_, slot) of slots\">\n <slot\n v-if=\"slot === view\"\n v-bind=\"{back, navigate}\"\n :name=\"slot\"/>\n </template>\n </FluxWindowTransition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n\n const slots = defineSlots<{\n default(props: {\n back(to?: string): void;\n navigate(to: string): void;\n }): any;\n\n [key: string]: (props: {\n back(to?: string): void;\n navigate(to: string): void;\n }) => any;\n }>();\n\n const isBack = ref(false);\n const view = ref<string>('default');\n\n function back(to: string = 'default'): void {\n isBack.value = true;\n view.value = to;\n }\n\n function navigate(to: string): void {\n isBack.value = false;\n view.value = to;\n }\n\n defineExpose({\n back,\n navigate\n });\n</script>\n","<template>\n <div\n v-height-transition\n :class=\"$style.filter\">\n <FluxWindow ref=\"window\">\n <template #default=\"{navigate}\">\n <FilterMenuRenderer\n :navigate=\"navigate\"\n :state=\"modelValue\">\n <slot/>\n </FilterMenuRenderer>\n </template>\n\n <template\n v-for=\"(filter, name) of filters\"\n #[name]>\n <FluxMenu>\n <FluxMenuGroup\n :class=\"$style.filterHeader\"\n is-horizontal>\n <FluxMenuItem\n :class=\"$style.filterBack\"\n :label=\"translate('flux.back')\"\n icon-leading=\"angle-left\"\n @click=\"back()\"/>\n\n <FluxMenuItem\n v-if=\"resettable?.includes(name)\"\n :class=\"$style.filterReset\"\n icon-leading=\"trash\"\n is-destructive\n @click=\"reset(name)\"/>\n </FluxMenuGroup>\n\n <VNodeRenderer :vnode=\"filter\"/>\n </FluxMenu>\n </template>\n </FluxWindow>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentName, getComponentProps, vHeightTransition } from '@flux-ui/internals';\n import type { FluxFilterOptionItem, FluxFilterState } from '@flux-ui/types';\n import { computed, provide, unref, useTemplateRef, VNode } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFilterInjectionKey } from '$flux/data';\n import { FilterMenuRenderer, VNodeRenderer } from './primitive';\n import FluxMenu from './FluxMenu.vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n import FluxMenuItem from './FluxMenuItem.vue';\n import FluxWindow from './FluxWindow.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n reset: [string]\n }>();\n\n const modelValue = defineModel<FluxFilterState>({\n required: true\n });\n\n defineProps<{\n readonly resettable?: string[];\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n const windowRef = useTemplateRef<{ back(to: string): void; }>('window');\n\n const filters = computed<Record<string, VNode>>(() => {\n const filters: { [key: string]: VNode; } = {};\n const items = flattenVNodeTree(slots.default?.() ?? []);\n\n for (const item of items) {\n const name = getComponentName(item);\n\n if (!name.startsWith('FluxFilter')) {\n continue;\n }\n\n const props = getComponentProps<{ name: string; }>(item);\n\n if (!props.name) {\n continue;\n }\n\n filters[props.name] = item;\n }\n\n return filters;\n });\n\n function back(): void {\n unref(windowRef)?.back('default');\n }\n\n function reset(name: string): void {\n back();\n emit('reset', name);\n }\n\n function getValue(name: string): FluxFilterOptionItem['value'] | undefined {\n if (!hasValue(name)) {\n return undefined;\n }\n\n return unref(modelValue)[name] as FluxFilterOptionItem['value'];\n }\n\n function hasValue(name: string): boolean {\n return name in unref(modelValue);\n }\n\n function setValue(name: string, value: FluxFilterOptionItem['value']): void {\n modelValue.value[name] = value;\n }\n\n provide(FluxFilterInjectionKey, {\n state: modelValue,\n back,\n reset,\n getValue,\n hasValue,\n setValue\n });\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value) {\n return null;\n }\n\n if (!DateTime.isDateTime(value)) {\n if (typeof value === 'string') {\n return DateTime.fromISO(value);\n }\n\n return null;\n }\n\n return value;\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (!DateTime.isDateTime(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n :range-mode=\"rangeMode\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name,\n rangeMode = 'range'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value || !Array.isArray(value)) {\n return null;\n }\n\n const [start, end] = value;\n\n if (!DateTime.isDateTime(start) || !DateTime.isDateTime(end)) {\n return null;\n }\n\n return [start, end];\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (date === null || !Array.isArray(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {default: ''});\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n\n watch(currentValue, async value => {\n if (!value && value !== 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)([value]);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n\n watch(currentValue, async value => {\n if (value.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(value);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.formColumn\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPaneBody>\n <FluxFormColumn>\n <FluxFormField :label=\"translate('flux.min')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[0]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({lower: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[0]) : currentValue[0] }}\n </template>\n </FluxFormField>\n\n <FluxFormField :label=\"translate('flux.max')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[1]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({upper: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[1]) : currentValue[1] }}\n </template>\n </FluxFormField>\n </FluxFormColumn>\n </FluxPaneBody>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { formatNumber } from '@basmilius/utils';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormColumn from './FluxFormColumn.vue';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormSlider from './FluxFormSlider.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n\n const {\n formatter = formatNumber,\n max,\n min,\n name,\n step = 1\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isTicksVisible?: boolean;\n readonly label: string;\n readonly name: string;\n readonly max: number;\n readonly min: number;\n readonly step?: number;\n readonly formatter?: (value: number) => string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const translate = useTranslate();\n\n const currentValue = computed(() => (unref(state)[name] ?? [min, max]) as number[]);\n\n function update({lower, upper}: { lower?: number, upper?: number }): void {\n if (lower || lower === 0) {\n upper ??= unref(currentValue)[1];\n\n if (lower > upper) {\n upper = lower;\n }\n }\n\n if (upper || upper === 0) {\n lower ??= unref(currentValue)[0];\n\n if (lower > upper) {\n lower = upper;\n }\n }\n\n setValue(name, [lower!, upper!]);\n }\n</script>\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.flickeringGrid\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useInView } from '@flux-ui/internals';\n import { computed, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n color = '#1d4ed8',\n flickerChance = 0.15,\n gap = 6,\n maxOpacity = 0.3,\n size = 3\n } = defineProps<{\n readonly color?: string;\n readonly flickerChance?: number;\n readonly gap?: number;\n readonly maxOpacity?: number;\n readonly size?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n\n const inView = useInView(canvasRef);\n\n const mulberry = mulberry32(13);\n\n const rgb = computed(() => {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return [0, 0, 0];\n }\n\n context.fillStyle = color;\n context.fillRect(0, 0, 1, 1);\n\n return context.getImageData(0, 0, 1, 1).data;\n });\n\n function draw(context: CanvasRenderingContext2D, width: number, height: number, columns: number, rows: number, squares: Float32Array, dpr: number): void {\n context.clearRect(0, 0, width * dpr, height * dpr);\n\n const [r, g, b] = unref(rgb);\n\n for (let i = 0; i < columns; ++i) {\n for (let j = 0; j < rows; ++j) {\n const opacity = squares[i * rows + j];\n context.fillStyle = `rgb(${r} ${g} ${b} / ${opacity})`;\n context.fillRect(\n (i * (size + gap) + width / 2 - (columns / 2 * (size + gap) - gap / 2)) * dpr,\n (j * (size + gap) + height / 2 - (rows / 2 * (size + gap) - gap / 2)) * dpr,\n size * dpr,\n size * dpr\n );\n }\n }\n }\n\n function setup(canvas: HTMLCanvasElement) {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n const columns = Math.ceil(width / (size + gap));\n const rows = Math.ceil(height / (size + gap));\n const squares = new Float32Array(columns * rows);\n\n for (let i = 0; i < squares.length; ++i) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n\n return {\n width,\n height,\n columns,\n rows,\n squares,\n dpr\n };\n }\n\n function tick(squares: Float32Array, delta: number): void {\n for (let i = 0; i < squares.length; ++i) {\n if (mulberry.next() < flickerChance * delta) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n }\n }\n\n watch([canvasRef, inView], ([canvas, inView], _, onCleanup) => {\n if (!canvas || !inView) {\n return;\n }\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return;\n }\n\n let frame = 0;\n let lastTime = 0;\n let {width, height, columns, rows, squares, dpr} = setup(canvas);\n\n const animate = (time: number): void => {\n const delta = (time - lastTime) / 1000;\n lastTime = time;\n\n tick(squares, delta);\n draw(context, width, height, columns, rows, squares, dpr);\n frame = requestAnimationFrame(animate);\n };\n\n const onResize = () => {\n ({width, height, columns, rows, squares, dpr} = setup(canvas));\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n requestAnimationFrame(animate);\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n cancelAnimationFrame(frame);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.paneFooter\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane :style=\"{'--aspect-ratio': aspectRatio}\">\n <FluxFadeTransition mode=\"out-in\">\n <FluxPaneBody\n v-if=\"isPreviewing\"\n key=\"preview\">\n <div :class=\"$style.focalPointPreview\">\n <div\n :class=\"$style.focalPointPreviewImage\"\n :style=\"{\n backgroundImage: `url(${src})`,\n backgroundPosition: `${focalPointX}% ${focalPointY}%`\n }\"/>\n </div>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-else\n key=\"editor\">\n <div\n :class=\"$style.focalPointEditor\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\">\n <img\n ref=\"image\"\n :class=\"$style.focalPointEditorImage\"\n :src=\"src\"\n alt=\"\"\n @load=\"onImageLoaded\"/>\n\n <div\n :class=\"$style.focalPointEditorArea\"\n :style=\"{\n top: `${focalPointY}%`,\n left: `${focalPointX}%`\n }\"/>\n </div>\n </FluxPaneBody>\n </FluxFadeTransition>\n\n <FluxPaneFooter>\n <slot name=\"footer-before\"/>\n\n <FluxSecondaryButton\n :label=\"translate(isPreviewing ? 'flux.previewClose' : 'flux.preview')\"\n @click=\"onShowPreviewClicked\"/>\n\n <FluxSpacer/>\n\n <slot name=\"footer\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, onMounted, onUnmounted, ref, unref, useTemplateRef, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n src\n } = defineProps<{\n readonly src: string;\n }>();\n\n const imageRef = useTemplateRef('image');\n const translate = useTranslate();\n\n const aspectRatio = ref(1);\n const dragging = ref<[number, number] | null>(null);\n const isPreviewing = ref(false);\n\n const focalPointX = computed(() => unref(dragging) ? unref(dragging)![0] : unref(modelValue)[0]);\n const focalPointY = computed(() => unref(dragging) ? unref(dragging)![1] : unref(modelValue)[1]);\n\n onMounted(() => window.addEventListener('pointerup', onPointerUp, {passive: true}));\n\n onUnmounted(() => window.removeEventListener('pointerup', onPointerUp));\n\n function onImageLoaded(): void {\n const image = unref(imageRef);\n\n if (!image) {\n return;\n }\n\n aspectRatio.value = image.width / image.height;\n }\n\n function onPointerDown(evt: PointerEvent): void {\n dragging.value = [0, 0];\n onPointerMove(evt);\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const image = unref(imageRef);\n\n if (!image || !dragging.value) {\n return;\n }\n\n const {top, left, width, height} = image.getBoundingClientRect();\n const {pageX, pageY} = evt;\n\n dragging.value = [\n Math.max(0, Math.min(1, (pageX - left) / width)) * 100,\n Math.max(0, Math.min(1, (pageY - top) / height)) * 100\n ];\n }\n\n function onPointerUp(): void {\n if (!dragging.value) {\n return;\n }\n\n modelValue.value = dragging.value!;\n dragging.value = null;\n }\n\n function onShowPreviewClicked(): void {\n isPreviewing.value = !isPreviewing.value;\n }\n\n watch(() => src, () => isPreviewing.value = false);\n</script>\n","<template>\n <img\n :class=\"$style.focalPointImage\"\n :style=\"{\n objectPosition: `${x}% ${y}%`\n }\"\n :src=\"src\"\n :alt=\"alt\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { computed } from 'vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const {\n alt = '',\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly alt?: string;\n readonly src: string;\n }>();\n\n const x = computed(() => focalPoint?.x ?? 50);\n const y = computed(() => focalPoint?.y ?? 50);\n</script>\n","<template>\n <FluxDisabled :disabled=\"disabled\">\n <form\n :class=\"$style.form\"\n :aria-disabled=\"disabled ? true : undefined\"\n @submit.prevent=\"onSubmit()\">\n <slot/>\n </form>\n </FluxDisabled>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxDisabled from './FluxDisabled.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n submit: [];\n }>();\n\n const {\n disabled = false\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onSubmit(): void {\n emit('submit');\n }\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.formInputGroup,\n isSecondary && $style.isSecondary\n )\"\n role=\"textbox\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly isSecondary?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoComplete, autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n v-model=\"localValue\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :max=\"max?.toISO()?.substring(0, 10)\"\n :min=\"min?.toISO()?.substring(0, 10)\"\n type=\"date\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import type { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<DateTime | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISODate() === localValue?.toISODate()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"clsx(\n $style.formDateRangeInput,\n disabled && $style.isDisabled\n )\"\n role=\"presentation\">\n <span>{{ label }}</span>\n </div>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"\n :range-mode=\"rangeMode\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import type { DateTime } from 'luxon';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { createLabelForDateRange } from '$flux/util';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<[DateTime, DateTime] | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n rangeMode = 'range'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<[DateTime, DateTime] | null>(null);\n\n const label = computed(() => {\n const value = unref(localValue);\n\n if (!value) {\n return '';\n }\n\n const [start, end] = value;\n\n return createLabelForDateRange(start, end, true);\n });\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n modelValue.value = localValue;\n });\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n</script>\n","<template>\n <FluxStack\n :class=\"$style.formDateTimeInput\"\n direction=\"horizontal\"\n :gap=\"15\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :model-value=\"localValue\"\n type=\"date\"\n @update:model-value=\"setDate\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n :max=\"max\"\n :min=\"min\"\n :model-value=\"localValue\"\n @update:model-value=\"setDate\"/>\n </FluxFlyout>\n\n <FluxFormInput\n :=\"{disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formTimeInput\"\n type=\"time\"\n :model-value=\"localValue\"\n @update:model-value=\"setTime\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<DateTime | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n isHourOnly\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isHourOnly?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef<{ close(): void; }>('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function setDate(dateTime: DateTime | object | string | number | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n day: dateTime.day,\n month: dateTime.month,\n year: dateTime.year\n });\n }\n\n function setTime(dateTime: DateTime | string | number | object | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n hour: dateTime.hour,\n minute: unref(isHourOnly) ? 0 : dateTime.minute,\n second: unref(isHourOnly) ? 0 : dateTime.second\n });\n }\n\n watch(() => isHourOnly, () => isHourOnly && (localValue.value = unref(localValue)?.startOf('hour') ?? null), {immediate: true});\n watch(modelValue, modelValue => localValue.value = isHourOnly ? modelValue?.startOf('hour') ?? null : modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISO() === localValue?.toISO()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <div :class=\"$style.formInputAddition\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"18\"/>\n\n <span v-if=\"label\">\n {{ label }}\n </span>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <fieldset\n :class=\"disabled ? $style.pinInputDisabled : $style.pinInputEnabled\"\n :id=\"id\"\n :style=\"{\n '--max-length': maxLength\n }\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n v-for=\"field of maxLength\"\n :key=\"field\"\n ref=\"fields\"\n :class=\"$style.pinInputField\"\n maxlength=\"1\"\n :autocomplete=\"field === 1 ? autoComplete : undefined\"\n :autofocus=\"field === 1 && autoFocus\"\n :disabled=\"disabled\"\n :tabindex=\"(field - 1) === modelValue?.length ? 0 : -1\"\n :type=\"isPrivate ? 'password' : 'text'\"\n :value=\"modelValue[field - 1]\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\"\n @paste=\"onPaste\"/>\n </fieldset>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef, unref, useTemplateRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoComplete = 'one-time-code',\n autoFocus = false,\n disabled: componentDisabled,\n maxLength = 6\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isPrivate?: boolean;\n readonly maxLength?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n\n const fieldRefs = useTemplateRef<HTMLInputElement[]>('fields');\n\n function onFocus(evt: FocusEvent): void {\n const input = evt.target as HTMLInputElement;\n requestAnimationFrame(() => input.select());\n }\n\n function onInput(): void {\n const fields = unref(fieldRefs) ?? [];\n const values = fields\n .map(f => f.value.trim() === '' ? NaN : Number(f.value))\n .filter(v => !isNaN(v));\n\n modelValue.value = values.join('');\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n const input = evt.target as HTMLInputElement;\n const value = input.value.trim();\n\n const next = input.nextElementSibling as HTMLInputElement | null;\n const previous = input.previousElementSibling as HTMLInputElement | null;\n\n switch (evt.key) {\n case 'Backspace':\n value === '' && previous?.focus();\n break;\n\n case 'ArrowLeft':\n case 'ArrowUp':\n input.selectionStart === 0 && previous?.select();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n (input.selectionStart === 1 || value === '') && next?.select();\n break;\n\n case 'Tab':\n break;\n\n case 'v':\n if (evt.ctrlKey || evt.metaKey) {\n break;\n }\n\n evt.preventDefault();\n break;\n\n default:\n if (isNaN(Number(evt.key))) {\n evt.preventDefault();\n break;\n }\n\n requestAnimationFrame(() => next?.focus());\n break;\n }\n }\n\n function onPaste(evt: ClipboardEvent): void {\n if (!evt.clipboardData) {\n return;\n }\n\n const value = evt.clipboardData.getData('text').replace(/\\D/g, '');\n\n if (value.length !== maxLength) {\n return;\n }\n\n modelValue.value = value;\n\n requestAnimationFrame(() => {\n const fields = unref(fieldRefs) ?? [];\n fields[maxLength - 1].focus();\n });\n }\n</script>\n","<template>\n <SliderBase\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower || isDraggingUpper\"\n :is-ticks-visible=\"isTicksVisible\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @dragging=\"onDragging\"\n @update=\"onUpdate\">\n <SliderTrack\n :percentage-lower=\"percentageLower\"\n :percentage-upper=\"percentageUpper\">\n <SliderThumb\n ref=\"lowerThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower\"\n :position=\"percentageLower\"\n @grab=\"!disabled && (isDraggingLower = true)\"\n @decrement=\"onDecrement('lower')\"\n @increment=\"onIncrement('lower')\"/>\n\n <SliderThumb\n ref=\"upperThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingUpper\"\n :position=\"percentageUpper\"\n @grab=\"!disabled && (isDraggingUpper = true)\"\n @decrement=\"onDecrement('upper')\"\n @increment=\"onIncrement('upper')\"/>\n </SliderTrack>\n </SliderBase>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clampWithStepPrecision, countDecimals, formatNumber } from '@basmilius/utils';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { addTooltip, removeTooltip, updateTooltip } from '$flux/data';\n import { SliderBase, SliderThumb, SliderTrack } from './primitive';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n formatter = formatNumber,\n disabled: componentDisabled,\n isTooltipDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n formatter?(value: number, decimals?: number): string;\n\n readonly disabled?: boolean;\n readonly isTicksVisible?: boolean;\n readonly isTooltipDisabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const lowerThumbRef = useTemplateRef('lowerThumb');\n const upperThumbRef = useTemplateRef('upperThumb');\n\n const isDraggingLower = ref(false);\n const isDraggingUpper = ref(false);\n const percentageLower = ref(0);\n const percentageUpper = ref(0);\n const lowerValue = ref(0);\n const upperValue = ref(0);\n const tooltipId = ref<number | null>(null);\n\n const tooltipContent = computed(() => formatter(modelValue.value[isDraggingLower.value ? 0 : 1], countDecimals(step)));\n\n function onDragging(is: boolean): void {\n if (is) {\n return;\n }\n\n isDraggingLower.value = is;\n isDraggingUpper.value = is;\n }\n\n function onUpdate(value: number): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (isDraggingLower.value) {\n lower = clampWithStepPrecision(value, min, max, step);\n }\n\n if (isDraggingUpper.value) {\n upper = clampWithStepPrecision(value, min, max, step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n if (tooltipId.value) {\n updateTooltip(tooltipId.value, {\n content: unref(tooltipContent),\n origin: unref(isDraggingLower.value ? lowerThumbRef : upperThumbRef)?.$el\n });\n }\n\n lowerValue.value = (lower - min) / (max - min);\n upperValue.value = (upper - min) / (max - min);\n }\n\n function onDecrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.max(min, lower - step);\n } else {\n upper = Math.max(min, upper - step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n function onIncrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.min(max, lower + step);\n } else {\n upper = Math.min(max, upper + step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n watch(modelValue, modelValue => {\n lowerValue.value = (modelValue[0] - min) / (max - min);\n upperValue.value = (modelValue[1] - min) / (max - min);\n }, {immediate: true});\n\n watch(([() => max, () => min, () => step, lowerValue, upperValue]), () => {\n const lower = clampWithStepPrecision(unref(lowerValue), min, max, step);\n const upper = clampWithStepPrecision(unref(upperValue), min, max, step);\n\n percentageLower.value = (lower - min) / (max - min);\n percentageUpper.value = (upper - min) / (max - min);\n\n modelValue.value = [lower, upper];\n }, {immediate: true});\n\n watch(([isDraggingLower, isDraggingUpper]), ([isDraggingLower, isDraggingUpper]) => {\n const is = isDraggingLower || isDraggingUpper;\n\n if (is && !tooltipId.value && !isTooltipDisabled) {\n tooltipId.value = addTooltip({\n content: unref(tooltipContent),\n direction: 'vertical',\n origin: unref(isDraggingLower ? lowerThumbRef : upperThumbRef)?.$el\n });\n } else if (!is && tooltipId.value) {\n removeTooltip(tooltipId.value);\n tooltipId.value = null;\n }\n });\n</script>\n","<template>\n <div :class=\"$style.formRow\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.formSection\">\n <div :class=\"$style.formSectionTitle\">\n {{ title }}\n </div>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <SelectBase\n v-model:search-query=\"modelSearch\"\n :disabled=\"disabled\"\n :is-loading=\"isLoading\"\n :is-multiple=\"isMultiple\"\n is-searchable\n :options=\"groups\"\n :placeholder=\"placeholder\"\n :selected=\"selected\"\n @deselect=\"onDeselect\"\n @open=\"onOpen()\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFormSelectEntry, FluxFormSelectValue, FluxFormSelectValueSingle } from '@flux-ui/types';\n import { computed, ref, toRef, unref, watch } from 'vue';\n import { SelectBase } from '$flux/component/primitive';\n import { useDisabled } from '$flux/composable';\n import { useFormSelect, useLoaded } from '$flux/composable/private';\n import { isFluxFormSelectOption } from '$flux/data';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const modelValue = defineModel<FluxFormSelectValue>({\n required: true\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n fetchOptions(ids: FluxFormSelectValueSingle[]): Promise<FluxFormSelectEntry[]>;\n fetchRelevant(): Promise<FluxFormSelectEntry[]>;\n fetchSearch(searchQuery: string): Promise<FluxFormSelectEntry[]>;\n\n readonly disabled?: boolean;\n readonly isMultiple?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const selectedOptions = ref<FluxFormSelectEntry[]>([]);\n const visibleOptions = ref<FluxFormSelectEntry[]>([]);\n\n const options = computed(() => {\n const options: FluxFormSelectEntry[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFormSelectOption(so) && visible.find(vo => isFluxFormSelectOption(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFormSelectOption(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n const {groups, selected, values} = useFormSelect(modelValue, isMultiple, options);\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 300);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n function onDeselect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = unref(values).filter(v => v !== id);\n }\n }\n\n async function onOpen(): Promise<void> {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n\n function onSelect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = [...unref(values), id];\n } else {\n modelValue.value = id;\n }\n }\n\n watch(values, async values => {\n if (values.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(values);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n });\n</script>\n","<template>\n <textarea\n v-model=\"modelValue\"\n ref=\"input\"\n :class=\"disabled ? $style.formTextAreaDisabled : $style.formTextAreaEnabled\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :disabled=\"disabled\"\n :maxlength=\"maxLength\"\n :placeholder=\"placeholder\"\n :style=\"{\n '--rows': rows\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n @blur=\"emit('blur')\"\n @focus=\"emit('focus')\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n rows = 3\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly maxLength?: number;\n readonly placeholder?: string;\n readonly rows?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n</script>\n","<template>\n <FluxFormSelect\n v-model=\"modelValue\"\n :disabled=\"disabled\"\n is-searchable\n :options=\"options\"\n :placeholder=\"placeholder\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectEntry } from '@flux-ui/types';\n import { upperFirst } from 'lodash-es';\n import { computed, toRef } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import type { FluxTranslation } from '$flux/data';\n import FluxFormSelect from './FluxFormSelect.vue';\n\n const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Asmera',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Timbuktu',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/ComodRivadavia',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Atka',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Buenos_Aires',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Catamarca',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Ciudad_Juarez',\n 'America/Coral_Harbour',\n 'America/Cordoba',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Ensenada',\n 'America/Fort_Nelson',\n 'America/Fort_Wayne',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indianapolis',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Jujuy',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Knox_IN',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Louisville',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Mendoza',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montreal',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Nuuk',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Acre',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Rosario',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Shiprock',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Virgin',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/South_Pole',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Ashkhabad',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Calcutta',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Chongqing',\n 'Asia/Chungking',\n 'Asia/Colombo',\n 'Asia/Dacca',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Harbin',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Istanbul',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kashgar',\n 'Asia/Kathmandu',\n 'Asia/Katmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macao',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Saigon',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Tel_Aviv',\n 'Asia/Thimbu',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ujung_Pandang',\n 'Asia/Ulaanbaatar',\n 'Asia/Ulan_Bator',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faeroe',\n 'Atlantic/Faroe',\n 'Atlantic/Jan_Mayen',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/ACT',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Canberra',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/LHI',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/North',\n 'Australia/NSW',\n 'Australia/Perth',\n 'Australia/Queensland',\n 'Australia/South',\n 'Australia/Sydney',\n 'Australia/Tasmania',\n 'Australia/Victoria',\n 'Australia/West',\n 'Australia/Yancowinna',\n 'Brazil/Acre',\n 'Brazil/DeNoronha',\n 'Brazil/East',\n 'Brazil/West',\n 'Canada/Atlantic',\n 'Canada/Central',\n 'Canada/Eastern',\n 'Canada/Mountain',\n 'Canada/Newfoundland',\n 'Canada/Pacific',\n 'Canada/Saskatchewan',\n 'Canada/Yukon',\n 'CET',\n 'Chile/Continental',\n 'Chile/EasterIsland',\n 'CST6CDT',\n 'Cuba',\n 'EET',\n 'Egypt',\n 'Eire',\n 'EST',\n 'EST5EDT',\n 'Etc/GMT',\n 'Etc/GMT+0',\n 'Etc/GMT+1',\n 'Etc/GMT+10',\n 'Etc/GMT+11',\n 'Etc/GMT+12',\n 'Etc/GMT+2',\n 'Etc/GMT+3',\n 'Etc/GMT+4',\n 'Etc/GMT+5',\n 'Etc/GMT+6',\n 'Etc/GMT+7',\n 'Etc/GMT+8',\n 'Etc/GMT+9',\n 'Etc/GMT-0',\n 'Etc/GMT-1',\n 'Etc/GMT-10',\n 'Etc/GMT-11',\n 'Etc/GMT-12',\n 'Etc/GMT-13',\n 'Etc/GMT-14',\n 'Etc/GMT-2',\n 'Etc/GMT-3',\n 'Etc/GMT-4',\n 'Etc/GMT-5',\n 'Etc/GMT-6',\n 'Etc/GMT-7',\n 'Etc/GMT-8',\n 'Etc/GMT-9',\n 'Etc/GMT0',\n 'Etc/Greenwich',\n 'Etc/UCT',\n 'Etc/Universal',\n 'Etc/UTC',\n 'Etc/Zulu',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belfast',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Nicosia',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Tiraspol',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Factory',\n 'GB',\n 'GB-Eire',\n 'GMT',\n 'GMT+0',\n 'GMT-0',\n 'GMT0',\n 'Greenwich',\n 'Hongkong',\n 'HST',\n 'Iceland',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Iran',\n 'Israel',\n 'Jamaica',\n 'Japan',\n 'Kwajalein',\n 'Libya',\n 'MET',\n 'Mexico/BajaNorte',\n 'Mexico/BajaSur',\n 'Mexico/General',\n 'MST',\n 'MST7MDT',\n 'Navajo',\n 'NZ',\n 'NZ-CHAT',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Ponape',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Samoa',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Truk',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n 'Pacific/Yap',\n 'Poland',\n 'Portugal',\n 'PRC',\n 'PST8PDT',\n 'ROC',\n 'ROK',\n 'Singapore',\n 'Turkey',\n 'UCT',\n 'Universal',\n 'US/Alaska',\n 'US/Aleutian',\n 'US/Arizona',\n 'US/Central',\n 'US/East-Indiana',\n 'US/Eastern',\n 'US/Hawaii',\n 'US/Indiana-Starke',\n 'US/Michigan',\n 'US/Mountain',\n 'US/Pacific',\n 'US/Samoa',\n 'UTC',\n 'W-SU',\n 'WET',\n 'Zulu'\n ];\n\n const timeZoneGroupOrder: FluxTranslation[] = [\n 'flux.timezoneEurope',\n 'flux.timezoneAmerica',\n 'flux.timezoneUs',\n 'flux.timezoneAustralia',\n 'flux.timezoneCanada',\n 'flux.timezoneMexico',\n 'flux.timezoneAfrica',\n 'flux.timezoneAntarctica',\n 'flux.timezoneArctic',\n 'flux.timezoneAsia',\n 'flux.timezoneAtlantic',\n 'flux.timezoneBrazil',\n 'flux.timezoneChile',\n 'flux.timezoneEtc',\n 'flux.timezoneOther',\n 'flux.timezoneIndian',\n 'flux.timezonePacific'\n ];\n\n const modelValue = defineModel<string | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const translate = useTranslate();\n\n const options = computed<FluxFormSelectEntry[]>(() => {\n const groups: Record<string, FluxFormSelectEntry[]> = {};\n const options: FluxFormSelectEntry[] = [];\n\n for (const timeZone of timeZones) {\n const timeZoneOptions = Intl.DateTimeFormat(navigator.language, {timeZone}).resolvedOptions();\n const timeZoneOffset = new Intl.DateTimeFormat(navigator.language, {timeZone, timeZoneName: 'longOffset'}).formatToParts().find(p => p.type === 'timeZoneName')!.value.substring(3);\n const label = timeZoneOptions.timeZone\n .replaceAll('_', ' ')\n .replaceAll('/', ' / ');\n\n let group = 'flux.timezoneOther';\n\n if (label.includes('/')) {\n group = `flux.timezone${upperFirst(label.split('/')[0].trim().toLowerCase())}`;\n }\n\n groups[group] ??= [];\n\n if (groups[group].find(go => go.label === label)) {\n continue;\n }\n\n groups[group].push({\n command: timeZoneOffset,\n label: label,\n value: timeZone\n });\n }\n\n const sortedGroups = Object.fromEntries(\n Object.entries(groups)\n .sort(([a], [b]) => {\n const ai = timeZoneGroupOrder.indexOf(a as FluxTranslation);\n const bi = timeZoneGroupOrder.indexOf(b as FluxTranslation);\n\n if (ai > bi) {\n return 1;\n }\n\n if (bi > ai) {\n return -1;\n }\n\n return 0;\n })\n );\n\n for (const group in sortedGroups) {\n const groupOptions = sortedGroups[group].sort(({label: labelA}, {label: labelB}) => labelA.localeCompare(labelB));\n\n options.push({\n label: translate(group as FluxTranslation)\n });\n\n groupOptions.forEach(go => options.push(go));\n }\n\n return options;\n });\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.remove,\n isHidden && $style.isHidden\n )\"\n type=\"button\"\n @click=\"emit('click', $event)\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"16\"/>\n </button>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Remove.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n icon = 'xmark'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isHidden?: boolean;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.galleryItem\"\n @mouseenter.capture=\"isDeleteVisible = true\"\n @mouseout.capture=\"isDeleteVisible = false\">\n <FluxFocalPointImage\n :class=\"$style.galleryItemImage\"\n :focal-point=\"focalPoint\"\n :src=\"url\"/>\n\n <FluxRemove\n v-if=\"isDeletable\"\n :is-hidden=\"!isDeleteVisible\"\n tabindex=\"-1\"\n @click=\"emit('delete')\"/>\n\n <div\n v-if=\"isPending\"\n :class=\"$style.galleryItemLoader\">\n <FluxSpinner :size=\"24\"/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { ref } from 'vue';\n import FluxFocalPointImage from './FluxFocalPointImage.vue';\n import FluxRemove from './FluxRemove.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [];\n }>();\n\n const {\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly isDeletable?: boolean;\n readonly isPending?: boolean;\n readonly url: string;\n }>();\n\n const isDeleteVisible = ref(false);\n</script>\n","<template>\n <FluxDropZone\n :class=\"$style.gallery\"\n accept=\"image/*\"\n :disabled=\"!isEditable\"\n is-multiple\n placeholder-icon=\"image\"\n :placeholder-button=\"translate('flux.galleryPlaceholderButton')\"\n :placeholder-message=\"translate('flux.galleryPlaceholderMessage')\"\n :placeholder-title=\"translate('flux.galleryPlaceholderTitle')\"\n @select-multiple=\"onFilesSelected\">\n <template #default=\"{showPicker}\">\n <TransitionGroup\n :class=\"$style.galleryGrid\"\n :move-class=\"$style.galleryMove\"\n tag=\"div\">\n <template\n v-if=\"items\"\n v-for=\"(item, index) of items\">\n <FluxGalleryItem\n v-if=\"typeof item === 'string'\"\n :is-deletable=\"isEditable\"\n :key=\"item\"\n :url=\"item\"\n @delete=\"$emit('delete', index)\"/>\n\n <FluxGalleryItem\n v-else\n :is-deletable=\"isEditable\"\n :key=\"item.url\"\n :focal-point=\"item\"\n :url=\"item.url\"\n @delete=\"$emit('delete', index)\"/>\n </template>\n\n <slot/>\n\n <FluxGalleryItem\n v-for=\"item of pendingItems\"\n is-pending\n :key=\"item\"\n :url=\"item\"/>\n\n <button\n v-if=\"isEditable\"\n key=\"gallery-add\"\n :class=\"$style.galleryAdd\"\n type=\"button\"\n @click=\"showPicker()\">\n <FluxIcon name=\"plus\"/>\n </button>\n </TransitionGroup>\n </template>\n </FluxDropZone>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxDropZone from './FluxDropZone.vue';\n import FluxGalleryItem from './FluxGalleryItem.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [number];\n upload: [File[]];\n }>();\n\n defineProps<{\n readonly isEditable?: boolean;\n readonly items?: (string | (FluxFocalPointObject & { readonly url: string; }))[];\n readonly pendingItems?: string[];\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n function onFilesSelected(files: FileList): void {\n const images: File[] = [];\n\n for (let i = 0; i < files.length; ++i) {\n const file = files.item(i);\n\n if (!file || !file.type.startsWith('image/')) {\n continue;\n }\n\n images.push(file);\n }\n\n emit('upload', images);\n }\n</script>\n","<template>\n <div\n :class=\"$style.grid\"\n :style=\"{\n '--gap': `${gap}px`,\n '--columns': columns\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n const {\n columns = 12,\n gap = 30\n } = defineProps<{\n readonly columns?: number;\n readonly gap?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.gridColumn\"\n :style=\"{\n '--xs': xs ?? 12,\n '--sm': sm ?? xs ?? 12,\n '--md': md ?? sm ?? xs ?? 12,\n '--lg': lg ?? md ?? sm ?? xs ?? 12,\n '--xl': xl ?? lg ?? md ?? sm ?? xs ?? 12\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n defineProps<{\n readonly xs?: number;\n readonly sm?: number;\n readonly md?: number;\n readonly lg?: number;\n readonly xl?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.gridPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <path\n :d=\"`M.5 ${height}V.5H${width}`\"\n fill=\"none\"\n :stroke-dasharray=\"strokeDasharray\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n\n <svg\n v-if=\"squares\"\n style=\"overflow: visible;\">\n <rect\n v-for=\"[x, y] of squares\"\n :key=\"`${x}-${y}`\"\n :width=\"width - 1\"\n :height=\"height - 1\"\n :x=\"x * width\"\n :y=\"y * height\"\n stroke-width=\"0\"/>\n </svg>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useId } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 42,\n height = 42,\n strokeDasharray = 0,\n squares\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly strokeDasharray?: number | string;\n readonly squares?: Array<[x: number, y: number]>;\n }>();\n\n const id = useId();\n</script>\n","<template>\n <div :class=\"$style.info\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.infoIcon\"\n :name=\"icon\"/>\n\n <div :class=\"$style.infoBody\">\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Info.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"21\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"direction === 'horizontal' ? $style.legendHorizontal : $style.legendVertical\">\n <template v-for=\"item of items\">\n <span\n :class=\"$style.legendItem\"\n :style=\"{\n '--color': item.color\n }\">\n {{ item.label }}\n </span>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection, FluxLegendObject } from '@flux-ui/types';\n import $style from '$flux/css/component/Legend.module.scss';\n\n const {\n direction = 'horizontal'\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly items: FluxLegendObject[];\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading: icon, iconTrailing: 'arrow-right-long', isFilled, label, href, rel, target, to}\"\n :css-class=\"$style.linkButton\"\n :css-class-icon=\"$style.linkButtonIcon\"\n :css-class-label=\"$style.linkButtonLabel\"\n @click=\"emit('click', $event)\"\n @mouseenter=\"emit('mouseenter', $event)\"\n @mouseleave=\"emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots, FluxIconName } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <FluxMenuGroup :is-horizontal=\"isHorizontal\">\n <template v-for=\"item in items\">\n <component :is=\"item\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree } from '@flux-ui/internals';\n import { cloneVNode, computed, unref, VNode } from 'vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n\n const modelValue = defineModel<number>({\n required: true\n });\n\n const {\n mode = 'highlight'\n } = defineProps<{\n readonly isHorizontal?: boolean;\n readonly mode?: 'highlight' | 'select';\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const items = computed(() => flattenVNodeTree(slots.default())\n .map((item: VNode, index: number) => cloneVNode(item, {\n isHighlighted: mode === 'highlight' && unref(modelValue) === index,\n isSelectable: mode === 'select',\n isSelected: mode === 'select' && unref(modelValue) === index,\n onClick: () => modelValue.value = index\n })));\n</script>\n","<template>\n <div\n :class=\"$style.menuTitle\"\n role=\"presentation\">\n {{ title }}\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n color === 'gray' && $style.noticeGray,\n color === 'primary' && $style.noticePrimary,\n color === 'danger' && $style.noticeDanger,\n color === 'info' && $style.noticeInfo,\n color === 'success' && $style.noticeSuccess,\n color === 'warning' && $style.noticeWarning,\n isCenter && $style.isCenter,\n isFluid && $style.isFluid\n )\"\n role=\"alert\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.noticePrefix\"/>\n\n <FluxIcon\n v-if=\"icon && !isLoading\"\n :class=\"$style.noticePrefix\"\n :name=\"icon\"/>\n\n <div :class=\"$style.noticeBody\">\n <p\n v-if=\"title\"\n :class=\"$style.noticeTitle\">\n {{ title }}\n </p>\n <p\n v-if=\"message\"\n :class=\"$style.noticeMessage\">\n {{ message }}\n </p>\n <slot/>\n </div>\n\n <slot name=\"end\"/>\n\n <button\n v-if=\"isCloseable\"\n :class=\"$style.noticeClose\"\n type=\"button\"\n @click=\"emit('close')\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Notice.module.scss';\n\n const emit = defineEmits<{\n close: [];\n }>();\n\n const {\n color = 'gray'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly isCenter?: boolean;\n readonly isCloseable?: boolean;\n readonly isFluid?: boolean;\n readonly isLoading?: boolean;\n readonly message?: string;\n readonly title?: string;\n }>();\n\n defineSlots<{\n default(): any;\n end(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"6\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import type { FluxSize } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { defineComponent, PropType } from 'vue';\n import { FluxOverlayTransition } from '$flux/transition';\n import { createDialogRenderer } from '$flux/util';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n export default defineComponent({\n emits: ['close'],\n inheritAttrs: false,\n props: {\n isCloseable: {default: false, type: Boolean},\n size: {default: 'small', type: String as PropType<FluxSize>}\n },\n setup(props, {attrs, emit, slots}) {\n return createDialogRenderer(\n attrs,\n props,\n emit,\n slots,\n clsx(\n props.size === 'small' && $style.overlaySmall,\n props.size === 'medium' && $style.overlayMedium,\n props.size === 'large' && $style.overlayLarge\n ),\n FluxOverlayTransition\n );\n }\n });\n</script>\n","<template>\n <div :class=\"$style.paneDeck\">\n <FluxAutoGrid\n :gap=\"0\"\n :min-column-width=\"minColumnWidth\">\n <slot/>\n </FluxAutoGrid>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxAutoGrid from './FluxAutoGrid.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineProps<{\n readonly minColumnWidth: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneHeader\">\n <slot name=\"before\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.paneHeaderIcon\"\n :size=\"20\"\n :name=\"icon\"/>\n\n <div\n v-if=\"title || subTitle\"\n :class=\"$style.paneHeaderCaption\">\n <strong v-if=\"title\">\n {{ title }}\n </strong>\n\n <span v-if=\"subTitle\">\n {{ subTitle }}\n </span>\n </div>\n\n <slot name=\"after\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly subTitle?: string;\n readonly title?: string;\n }>();\n\n defineSlots<{\n after(): any;\n before(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"isMasked ? $style.paneIllustrationMasked : $style.paneIllustration\"\n :style=\"{\n aspectRatio\n }\">\n <div\n :class=\"$style.paneIllustrationMagic\"\n :style=\"{\n border: `1px solid ${borderColor}`\n }\">\n <FluxGridPattern :stroke-dasharray=\"3\"/>\n\n <FluxAnimatedColors\n :colors=\"animatedColors\"\n :opacity=\"animatedOpacity\"\n :seed=\"animatedSeed\"/>\n </div>\n\n <div\n v-if=\"slots.controlled\"\n :class=\"$style.paneIllustrationContentControlled\">\n <slot name=\"controlled\"/>\n </div>\n\n <div\n v-if=\"slots.default\"\n :class=\"$style.paneIllustrationContent\">\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { hexToRGB } from '@basmilius/utils';\n import { computed } from 'vue';\n import FluxAnimatedColors from './FluxAnimatedColors.vue';\n import FluxGridPattern from './FluxGridPattern.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const {\n animatedColors,\n aspectRatio = 16 / 9\n } = defineProps<{\n readonly animatedColors: string[];\n readonly animatedOpacity?: number;\n readonly animatedSeed?: number;\n readonly aspectRatio?: number;\n readonly isMasked?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n controlled?(): any;\n }>();\n\n const borderColor = computed(() => {\n if (!animatedColors || animatedColors.length === 0) {\n return 'transparent';\n }\n\n const [r, g, b] = hexToRGB(animatedColors[0]);\n\n return `rgb(${r} ${g} ${b} / .15)`;\n });\n</script>\n","<template>\n <div :class=\"isInset ? $style.paneMediaInset : $style.paneMedia\">\n <img\n v-if=\"imageUrl\"\n :class=\"$style.paneMediaImage\"\n :style=\"{\n objectPosition: `${focalPointX}% ${focalPointY}%`\n }\"\n :src=\"imageUrl\"\n :alt=\"imageAlt\">\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed } from 'vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const {\n imageFocalPoint\n } = defineProps<{\n readonly imageAlt?: string;\n readonly imageFocalPoint?: [number, number];\n readonly imageUrl?: string;\n readonly isInset?: boolean;\n }>();\n\n const focalPointX = computed(() => imageFocalPoint?.[0] ?? 50);\n const focalPointY = computed(() => imageFocalPoint?.[1] ?? 50);\n</script>\n","<template>\n <div :class=\"$style.percentageBar\">\n <div :class=\"$style.percentageBarTrack\">\n <FluxTooltip v-for=\"item of items\">\n <template #content>\n <div :class=\"$style.percentageBarTooltip\">\n <FluxIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n :size=\"16\"/>\n\n <span>{{ formatPercentage(item.value) }} {{ item.label }}</span>\n </div>\n </template>\n\n <div\n :class=\"$style.percentageBarSegment\"\n :style=\"{\n backgroundColor: item.color,\n flexGrow: item.value\n }\"/>\n </FluxTooltip>\n </div>\n\n <FluxLegend\n v-if=\"isLegendVisible\"\n :items=\"items\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { formatPercentage } from '@basmilius/utils';\n import type { FluxPercentageBarItemObject } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import FluxLegend from './FluxLegend.vue';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/PercentageBar.module.scss';\n\n defineProps<{\n readonly isLegendVisible?: boolean;\n readonly items: FluxPercentageBarItemObject[];\n }>();\n</script>\n","<template>\n <button\n :class=\"$style.persona\"\n type=\"button\"\n @click=\"$emit('click', $event)\">\n <FluxAvatar\n :alt=\"avatarAlt\"\n :fallback=\"avatarFallback\"\n :fallback-icon=\"avatarFallbackIcon\"\n :fallback-initials=\"avatarFallbackInitials\"\n :size=\"avatarSize\"\n :src=\"avatarSrc\"/>\n\n <template v-if=\"!isCompact\">\n <div :class=\"$style.personaDetails\">\n <strong>{{ name }}</strong>\n <span v-if=\"title\">{{ title }}</span>\n </div>\n </template>\n </button>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxAvatar from './FluxAvatar.vue';\n import $style from '$flux/css/component/Avatar.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n avatarFallback = 'colorized',\n avatarFallbackIcon = 'user'\n } = defineProps<{\n readonly avatarAlt?: string;\n readonly avatarFallback?: 'colorized' | 'neutral';\n readonly avatarFallbackIcon?: FluxIconName;\n readonly avatarFallbackInitials?: string;\n readonly avatarSize?: number;\n readonly avatarSrc?: string;\n readonly isCompact?: boolean;\n readonly name: string;\n readonly title?: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.placeholder,\n isButton && $style.isButton,\n variant === 'extended' && $style.isExtended,\n variant === 'simple' && $style.isSimple,\n variant === 'small' && $style.isSmall\n )\"\n role=\"presentation\"\n @click=\"onClick\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.placeholderIcon\"\n :name=\"icon\"/>\n\n <div :class=\"$style.placeholderCaption\">\n <strong v-if=\"title\">\n {{ title }}\n </strong>\n\n <p v-if=\"message\">\n {{ message }}\n </p>\n </div>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Placeholder.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n variant = 'extended'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isButton?: boolean;\n readonly message?: string;\n readonly title?: string;\n readonly variant?: 'extended' | 'simple' | 'small';\n }>();\n\n function onClick(evt: MouseEvent): void {\n emit('click', evt);\n }\n</script>\n","<template>\n <FluxStack\n :class=\"$style.progressBar\"\n :gap=\"6\"\n role=\"progressbar\"\n :aria-valuenow=\"value\"\n :aria-valuemax=\"max\"\n :aria-valuemin=\"min\">\n <div :class=\"isIndeterminate ? $style.progressBarTrackIndeterminate : $style.progressBarTrack\">\n <div\n :class=\"$style.progressBarValue\"\n :style=\"{\n width: `${isIndeterminate ? 100 : position * 100}%`\n }\"/>\n </div>\n\n <div\n v-if=\"status\"\n :class=\"$style.progressBarInfo\">\n <FluxFadeTransition>\n <span\n :key=\"status\"\n :class=\"$style.progressBarStatus\">\n {{ status }}\n </span>\n </FluxFadeTransition>\n\n <FluxFadeTransition>\n <span\n v-if=\"!isIndeterminate\"\n :class=\"$style.progressBarProgress\">\n {{ progress }}\n </span>\n </FluxFadeTransition>\n </div>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Progress.module.scss';\n\n const {\n isIndeterminate,\n max = 1,\n min = 0,\n value\n } = defineProps<{\n readonly isIndeterminate?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly status?: string;\n readonly value?: number;\n }>();\n\n const position = computed(() => {\n if (isIndeterminate) {\n return 0;\n }\n\n return ((value ?? min) - min) / (max - min);\n });\n\n const progress = computed(() => new Intl\n .NumberFormat(navigator.language, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n })\n .format(unref(position) ?? 0));\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconTrailing, isFilled, isLoading, label, size, to}\"\n :class=\"clsx(\n !isDone && !isLoading && $style.isIdle,\n isDone && $style.isDone,\n isLoading && $style.isLoading\n )\"\n :css-class=\"$style.publishButton\"\n :css-class-icon=\"$style.publishButtonIcon\"\n :css-class-label=\"$style.publishButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template #iconLeading>\n <div :class=\"$style.publishButtonAnimation\">\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <svg\n :class=\"$style.publishButtonAnimation\"\n viewBox=\"0 0 512 512\">\n <path\n :class=\"$style.publishButtonAnimationCircle\"\n d=\"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256 114.6 0 256 0s256 114.6 256 256ZM256 48C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationArrow\"\n d=\"M272.9 135.7c-4.6-4.9-11-7.7-17.7-7.7-7.7.3-14.1 2.9-17.7 7.8l-87.25 96a23.86 23.86 0 0 0-4.15 25.9c3.8 8.7 12.4 14.3 21 14.3h56l.9 88a24 24 0 0 0 24 24h16c13.25 0 23.1-10.75 23.1-24v-88h56c9.53 0 18.16-5.66 22-14.38a24.03 24.03 0 0 0-4.38-25.91L272.9 135.7Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationCheck\"\n d=\"M243.8 339.8a28.07 28.07 0 0 1-39.6 0l-64-64a28.07 28.07 0 0 1 0-39.6 28.07 28.07 0 0 1 39.6 0l44.2 44.2 108.2-108.2a28.07 28.07 0 0 1 39.6 0 28.07 28.07 0 0 1 0 39.6l-128 128Z\"/>\n </svg>\n </div>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxButton from './FluxButton.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading'> & {\n readonly isDone?: boolean;\n }>();\n</script>\n","<template>\n <FluxButtonGroup\n :class=\"$style.quantitySelector\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue <= min\"\n icon-leading=\"minus\"\n tabindex=\"-1\"\n @click=\"decrement\"/>\n\n <input\n ref=\"input\"\n v-model=\"modelValue\"\n :class=\"$style.quantitySelectorInput\"\n :style=\"{\n width: `${width}px`\n }\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n type=\"number\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"/>\n\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue >= max\"\n icon-leading=\"plus\"\n tabindex=\"-1\"\n @click=\"increment\"/>\n </FluxButtonGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { ref, toRef, unref, useTemplateRef, watchEffect } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const {\n disabled: componentDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n readonly disabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef('input');\n\n const width = ref(0);\n\n function decrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.max(min, unref(modelValue) - step);\n }\n\n function increment(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.min(max, unref(modelValue) + step);\n }\n\n function sizeToContent(): void {\n const input = unrefTemplateElement<HTMLInputElement>(inputRef);\n\n if (!input || isNaN(input.valueAsNumber)) {\n return;\n }\n\n width.value = 0;\n\n requestAnimationFrame(() => {\n width.value = Math.max(51, input.scrollWidth + 30);\n });\n }\n\n watchEffect(() => {\n if (unref(modelValue) > max) {\n increment();\n return;\n }\n\n if (unref(modelValue) < min) {\n decrement();\n return;\n }\n\n sizeToContent();\n });\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"alert.icon\"\n :title=\"alert.title\"/>\n\n <FluxPaneBody v-html=\"alert.message\"/>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxPrimaryButton\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"alert.onClose()\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAlertObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n defineProps<{\n readonly alert: FluxAlertObject;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"confirm.icon\"\n :title=\"confirm.title\"/>\n\n <FluxPaneBody v-html=\"confirm.message\"/>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxSecondaryButton\n :label=\"translate('flux.cancel')\"\n @click=\"confirm.onCancel()\"/>\n\n <FluxPrimaryButton\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"confirm.onConfirm()\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxConfirmObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n defineProps<{\n readonly confirm: FluxConfirmObject;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxPane>\n <FluxPaneHeader\n :icon=\"prompt.icon\"\n :title=\"prompt.title\"/>\n\n <FluxPaneBody v-html=\"prompt.message\"/>\n\n <FluxPaneBody>\n <FluxFormField :label=\"prompt.fieldLabel\">\n <FluxFormInput\n ref=\"input\"\n v-model=\"value\"\n :placeholder=\"prompt.fieldPlaceholder\"\n :type=\"prompt.fieldType ?? 'text'\"\n @keydown=\"onKeyDown\"/>\n </FluxFormField>\n </FluxPaneBody>\n\n <FluxPaneFooter>\n <FluxSpacer/>\n\n <FluxSecondaryButton\n :label=\"translate('flux.cancel')\"\n @click=\"prompt.onCancel()\"/>\n\n <FluxPrimaryButton\n :disabled=\"!hasValue\"\n icon-leading=\"circle-check\"\n :label=\"translate('flux.ok')\"\n @click=\"prompt.onConfirm(value)\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPromptObject } from '@flux-ui/types';\n import { computed, onMounted, ref, unref, useTemplateRef } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxPaneHeader from './FluxPaneHeader.vue';\n import FluxPrimaryButton from './FluxPrimaryButton.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n\n const {\n prompt\n } = defineProps<{\n readonly prompt: FluxPromptObject;\n }>();\n\n const inputRef = useTemplateRef('input');\n const translate = useTranslate();\n\n const value = ref('');\n\n const hasValue = computed(() => unref(value).trim().length > 0);\n\n onMounted(() => {\n const input = unref(inputRef);\n requestAnimationFrame(() => input?.$el.querySelector('input')?.focus());\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (!unref(hasValue) || evt.key !== 'Enter') {\n return;\n }\n\n prompt.onConfirm(unref(value));\n }\n</script>\n","<template>\n <div\n v-if=\"isRendered\"\n :class=\"clsx(\n color === 'gray' && $style.snackbarGray,\n color === 'primary' && $style.snackbarPrimary,\n color === 'danger' && $style.snackbarDanger,\n color === 'info' && $style.snackbarInfo,\n color === 'success' && $style.snackbarSuccess,\n color === 'warning' && $style.snackbarWarning\n )\">\n <div :class=\"$style.snackbarContent\">\n <FluxSpinner\n v-if=\"isLoading\"\n :size=\"18\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :size=\"18\"\n :name=\"icon\"/>\n\n <div :class=\"$style.snackbarBody\">\n <div\n v-if=\"title\"\n :class=\"$style.snackbarTitle\">\n {{ title }}\n </div>\n\n <div\n v-if=\"message\"\n :class=\"$style.snackbarMessage\">\n {{ message }}\n </div>\n\n <FluxProgressBar\n v-if=\"progressIndeterminate || progressValue\"\n :is-indeterminate=\"progressIndeterminate\"\n :max=\"progressMax\"\n :min=\"progressMin\"\n :status=\"progressStatus\"\n :value=\"progressValue\"/>\n\n <div\n v-if=\"subMessage\"\n :class=\"$style.snackbarSubMessage\">\n {{ subMessage }}\n </div>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n :class=\"$style.snackbarActions\">\n <button\n v-for=\"(actionLabel, actionKey) of actions\"\n :key=\"actionKey\"\n :class=\"$style.snackbarAction\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"onAction(actionKey)\">\n <span>{{ actionLabel }}</span>\n </button>\n </div>\n\n <FluxAction\n v-if=\"isCloseable\"\n icon=\"xmark\"\n @click=\"onClose()\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName, FluxSnackbarObject } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed, getCurrentInstance, onBeforeUnmount, ref, watch, watchEffect } from 'vue';\n import { addSnackbar, removeSnackbar, updateSnackbar } from '$flux/data';\n import FluxAction from './FluxAction.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxProgressBar from './FluxProgressBar.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Snackbar.module.scss';\n\n const emit = defineEmits<{\n action: [string];\n close: [];\n }>();\n\n const {\n actions,\n color = 'gray',\n isRendered\n } = defineProps<{\n readonly actions?: Record<string, string>;\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly isCloseable?: boolean;\n readonly isLoading?: boolean;\n readonly isRendered?: boolean;\n readonly message?: string;\n readonly progressIndeterminate?: boolean;\n readonly progressMax?: number;\n readonly progressMin?: number;\n readonly progressStatus?: string;\n readonly progressValue?: number;\n readonly subMessage?: string;\n readonly title?: string;\n }>();\n\n const instance = getCurrentInstance()!;\n\n const id = ref<number | null>(null);\n\n const hasActions = computed(() => actions && Object.entries(actions).length > 0);\n\n onBeforeUnmount(() => {\n if (id.value) {\n removeSnackbar(id.value);\n }\n });\n\n function onAction(actionKey: string): void {\n emit('action', actionKey);\n }\n\n function onClose(): void {\n emit('close');\n }\n\n watchEffect(() => {\n if (!id.value) {\n return;\n }\n\n updateSnackbar(id.value, instance.props);\n });\n\n watch(() => isRendered, () => {\n if (isRendered) {\n if (id.value) {\n removeSnackbar(id.value);\n }\n\n return;\n }\n\n let spec: Omit<FluxSnackbarObject, 'id'> = instance.props;\n spec.onAction = onAction;\n spec.onClose = onClose;\n\n id.value = addSnackbar(spec);\n }, {immediate: true});\n</script>\n","<template>\n <TransitionGroup\n name=\"flux-snackbars\"\n tag=\"div\"\n :class=\"$style.snackbars\"\n :enter-active-class=\"$style.snackbarsEnterActive\"\n :enter-from-class=\"$style.snackbarsEnterFrom\"\n :leave-active-class=\"$style.snackbarsLeaveActive\"\n :leave-to-class=\"$style.snackbarsLeaveTo\"\n :move-class=\"$style.snackbarsMove\">\n <FluxSnackbar\n v-for=\"snackbar of snackbars.toReversed()\"\n :key=\"snackbar.id\"\n :=\"snackbar\"\n is-rendered\n @action=\"onAction(snackbar)\"\n @close=\"() => snackbar.onClose?.()\"/>\n </TransitionGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxSnackbarObject } from '@flux-ui/types';\n import { useFluxStore } from '$flux/data';\n import FluxSnackbar from './FluxSnackbar.vue';\n import $style from '$flux/css/component/Snackbar.module.scss';\n\n const {snackbars} = useFluxStore();\n\n function onAction(snackbar: FluxSnackbarObject): (actionKey: string) => void {\n return actionKey => snackbar.onAction?.(actionKey);\n }\n</script>\n","<script lang=\"ts\">\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { computed, defineComponent, h, provide, ref, unref, watch } from 'vue';\n import { FluxTooltipInjectionKey, useFluxStore } from '$flux/data';\n import { FluxTooltipTransition } from '$flux/transition';\n import $style from '$flux/css/component/Tooltip.module.scss';\n\n type Transition = 'above' | 'below' | 'end' | 'start';\n\n type PositionData = {\n readonly x: number;\n readonly y: number;\n readonly arrowAngle: string;\n readonly arrowX: string;\n readonly arrowY: string;\n readonly transition: Transition;\n };\n\n export default defineComponent(() => {\n const {tooltip} = useFluxStore();\n\n const elementRef = ref<HTMLElement | null>(null);\n const position = ref<PositionData | null>(null);\n\n const content = computed(() => unref(tooltip) ? unref(tooltip)!.contentSlot?.() ?? [unref(tooltip)!.content] : null);\n const has = computed(() => !!unref(tooltip));\n\n function calculate(): void {\n const element = unrefTemplateElement(elementRef);\n const spec = unref(tooltip);\n\n if (!spec || !element || !unref(content)) {\n position.value = null;\n return;\n }\n\n const {direction, origin} = spec;\n const margin = 9;\n const safeZone = 15;\n\n if (!origin) {\n position.value = null;\n return;\n }\n\n let {width, height} = element.getBoundingClientRect();\n const {scale} = getComputedStyle(element);\n const {top, left, width: originWidth, height: originHeight} = origin.getBoundingClientRect();\n\n let s = Number(scale ?? 1);\n s = isNaN(s) ? 1 : s;\n height /= s;\n width /= s;\n\n if (direction === 'horizontal') {\n position.value = calculateHorizontalPosition(top, left, width, height, originWidth, originHeight, margin, safeZone);\n } else {\n position.value = calculateVerticalPosition(top, left, width, height, originWidth, originHeight, margin, safeZone);\n }\n }\n\n provide(FluxTooltipInjectionKey, {\n calculate\n });\n\n watch(content, () => requestAnimationFrame(calculate));\n\n return () => h(FluxTooltipTransition, {}, {\n default: () => {\n if (!unref(has)) {\n return;\n }\n\n const pos = unref(position);\n\n return h('div', {\n ref: elementRef,\n class: pos\n ? clsx(\n pos.transition === 'above' && $style.tooltipAbove,\n pos.transition === 'below' && $style.tooltipBelow,\n pos.transition === 'end' && $style.tooltipEnd,\n pos.transition === 'start' && $style.tooltipStart\n )\n : $style.tooltip,\n style: {\n '--x': pos?.x ?? undefined,\n '--y': pos?.y ?? undefined,\n '--arrowAngle': pos?.arrowAngle ?? undefined,\n '--arrowX': pos?.arrowX ?? undefined,\n '--arrowY': pos?.arrowY ?? undefined\n }\n }, unref(content));\n }\n });\n });\n\n function calculateHorizontalPosition(top: number, left: number, width: number, height: number, originWidth: number, originHeight: number, margin: number, safeZone: number): PositionData {\n let x, y, arrowAngle, arrowX, arrowY, transition: Transition;\n\n if (left > innerWidth / 2) {\n x = left - width - margin;\n y = top + originHeight / 2 - height / 2;\n arrowAngle = '315deg';\n arrowX = '100%';\n arrowY = '50%';\n transition = 'start';\n } else {\n x = left + originWidth + margin;\n y = top + originHeight / 2 - height / 2;\n arrowAngle = '135deg';\n arrowX = '0';\n arrowY = '50%';\n transition = 'end';\n }\n\n if (y + height > innerHeight - safeZone) {\n const diff = Math.min(y, innerHeight - height - safeZone) - y;\n arrowY = `calc(50% - ${diff}px)`;\n y += diff;\n }\n\n if (y < safeZone) {\n const diff = Math.max(y, safeZone) - y;\n arrowY = `calc(50% - ${diff}px)`;\n y += diff;\n }\n\n return {\n x: Math.round(x),\n y: Math.round(y),\n arrowAngle,\n arrowX,\n arrowY,\n transition\n };\n }\n\n function calculateVerticalPosition(top: number, left: number, width: number, height: number, originWidth: number, originHeight: number, margin: number, safeZone: number): PositionData {\n let x, y, arrowAngle, arrowX, arrowY, transition: Transition;\n\n if (top > 300) {\n x = left + originWidth / 2 - width / 2;\n y = top - height - margin;\n arrowAngle = '45deg';\n arrowX = '50%';\n arrowY = '100%';\n transition = 'above';\n } else {\n x = left + originWidth / 2 - width / 2;\n y = top + originHeight + margin;\n arrowAngle = '225deg';\n arrowX = '50%';\n arrowY = '0';\n transition = 'below';\n }\n\n if (x + width > innerWidth - safeZone) {\n const diff = Math.min(x, innerWidth - width - safeZone) - x;\n arrowX = `calc(50% - ${diff}px)`;\n x += diff;\n }\n\n if (x < safeZone) {\n const diff = Math.max(x, safeZone) - x;\n arrowX = `calc(50% - ${diff}px)`;\n x += diff;\n }\n\n return {\n x: Math.round(x),\n y: Math.round(y),\n arrowAngle,\n arrowX,\n arrowY,\n transition\n };\n }\n</script>\n","<template>\n <div\n v-bind=\"$attrs\"\n :class=\"$style.root\"\n :inert=\"inertMain\">\n <slot/>\n </div>\n\n <FluxOverlay size=\"medium\">\n <FluxAlert\n v-for=\"alert of alerts\"\n :key=\"alert.id\"\n :alert=\"alert\"/>\n </FluxOverlay>\n\n <FluxOverlay size=\"medium\">\n <FluxConfirm\n v-for=\"confirm of confirms\"\n :key=\"confirm.id\"\n :confirm=\"confirm\"/>\n </FluxOverlay>\n\n <FluxOverlay size=\"medium\">\n <FluxPrompt\n v-for=\"prompt of prompts\"\n :key=\"prompt.id\"\n :prompt=\"prompt\"/>\n </FluxOverlay>\n\n <FluxSnackbarProvider/>\n <FluxTooltipProvider/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { watch } from 'vue';\n import { useFluxStore } from '$flux/data';\n import FluxAlert from './FluxAlert.vue';\n import FluxConfirm from './FluxConfirm.vue';\n import FluxPrompt from './FluxPrompt.vue';\n import FluxOverlay from './FluxOverlay.vue';\n import FluxSnackbarProvider from './FluxSnackbarProvider.vue';\n import FluxTooltipProvider from './FluxTooltipProvider.vue';\n import $style from '$flux/css/component/Root.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineSlots<{\n default(): any;\n }>();\n\n const {alerts, confirms, inertMain, prompts} = useFluxStore();\n\n watch(inertMain, (inert, _, onCleanup): void => {\n if (!inert) {\n return;\n }\n\n document.body.classList.add($style.isLocked);\n onCleanup(() => document.body.classList.remove($style.isLocked));\n }, {immediate: true});\n</script>\n","<template>\n <nav\n ref=\"control\"\n :class=\"isFill ? $style.segmentedControlFill : $style.segmentedControlInline\">\n <div\n v-if=\"activeItemWidth > 0\"\n :class=\"$style.segmentedControlHighlight\"\n :style=\"{\n left: `${activeItemX}px`,\n width: `${activeItemWidth}px`\n }\"/>\n\n <template v-for=\"(item, index) of items\">\n <div\n v-if=\"index > 0\"\n :class=\"clsx(\n $style.segmentedControlSeparator,\n (index === modelValue || index === modelValue + 1) && $style.isActive\n )\"\n role=\"separator\"/>\n\n <button\n ref=\"items\"\n :class=\"clsx(\n $style.segmentedControlItem,\n index === modelValue && $style.isActive\n )\"\n type=\"button\"\n @click=\"activate(index)\">\n <FluxIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n :size=\"15\"/>\n\n <span>{{ item.label }}</span>\n </button>\n </template>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxSegmentedControlItemObject } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { onMounted, onUpdated, ref, unref, useTemplateRef } from 'vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/SegmentedControl.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n defineProps<{\n readonly isFill?: boolean;\n readonly items: FluxSegmentedControlItemObject[];\n }>();\n\n const controlRef = useTemplateRef<HTMLElement>('control');\n const itemRefs = useTemplateRef<HTMLButtonElement[]>('items');\n\n const activeItemX = ref(0);\n const activeItemWidth = ref(0);\n\n onMounted(() => activate(unref(modelValue)));\n onUpdated(() => activate(unref(modelValue)));\n\n function activate(index: number): void {\n const itemRef = itemRefs.value![index];\n const {left: controlX} = controlRef.value!.getBoundingClientRect();\n const {width, left: x} = itemRef.getBoundingClientRect();\n\n activeItemX.value = x - controlX - 1;\n activeItemWidth.value = width;\n modelValue.value = index;\n }\n</script>\n","<script lang=\"ts\">\n import { defineComponent } from 'vue';\n\n export default defineComponent({\n props: {\n index: Number\n },\n setup(props, {slots}) {\n return () => {\n const items = slots.default!();\n return items[props.index!];\n };\n }\n });\n</script>\n","<script lang=\"ts\">\n import { defineComponent } from 'vue';\n import { FluxSlideOverTransition } from '$flux/transition';\n import { createDialogRenderer } from '$flux/util';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n export default defineComponent({\n emits: ['close'],\n inheritAttrs: false,\n props: {\n isCloseable: {default: false, type: Boolean},\n viewKey: {default: null, type: String}\n },\n setup(props, {attrs, emit, slots}) {\n return createDialogRenderer(\n attrs,\n props,\n emit,\n slots,\n $style.slideOver,\n FluxSlideOverTransition\n );\n }\n });\n</script>\n","<template>\n <div :style=\"{flex: `0 0 ${spacings[size]}px`}\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n const spacings = [\n 0,\n 3,\n 6,\n 9,\n 12,\n 15,\n 18,\n 24,\n 30,\n 36,\n 42,\n 48,\n 54,\n 60,\n 72,\n 84,\n 90,\n 120\n ] as const;\n\n defineProps<{\n readonly size: keyof typeof spacings;\n }>();\n</script>\n","<template>\n <FluxFlyout\n :direction=\"flyoutDirection\"\n :is-auto-width=\"flyoutIsAutoWidth\"\n :margin=\"flyoutMargin\"\n :width=\"flyoutWidth\">\n <template #opener=\"{close, open, toggle}\">\n <div :class=\"$style.buttonGroup\">\n <slot\n v-bind=\"{close, open, toggle}\"\n name=\"button\"/>\n\n <FluxSecondaryButton\n :icon-leading=\"buttonIcon\"\n @click=\"open\"/>\n </div>\n </template>\n\n <template #default=\"bindings\">\n <slot\n v-bind=\"bindings\"\n name=\"flyout\"/>\n </template>\n </FluxFlyout>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxDirection, FluxIconName } from '@flux-ui/types';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n const {\n buttonIcon = 'ellipsis-h'\n } = defineProps<{\n readonly buttonIcon?: FluxIconName;\n readonly flyoutDirection?: FluxDirection;\n readonly flyoutIsAutoWidth?: boolean;\n readonly flyoutMargin?: number;\n readonly flyoutWidth?: number | string;\n }>();\n\n defineSlots<{\n button(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n\n flyout(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n }>();\n</script>\n","<template>\n <FluxPane\n :class=\"clsx(\n direction === 'horizontal' && $style.statisticHorizontal,\n direction === 'vertical' && $style.statisticVertical,\n color === 'gray' && $style.isGray,\n color === 'primary' && $style.isPrimary,\n color === 'danger' && $style.isDanger,\n color === 'info' && $style.isInfo,\n color === 'success' && $style.isSuccess,\n color === 'warning' && $style.isWarning\n )\">\n <div :class=\"$style.statisticIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"24\"/>\n </div>\n\n <div :class=\"$style.statisticData\">\n <span>{{ label }}</span>\n <strong>{{ value }}</strong>\n </div>\n\n <div\n v-if=\"changeIcon || changeValue\"\n :class=\"clsx(\n $style.statisticChange,\n changeColor === 'gray' && $style.isGray,\n changeColor === 'primary' && $style.isPrimary,\n changeColor === 'danger' && $style.isDanger,\n changeColor === 'info' && $style.isInfo,\n changeColor === 'success' && $style.isSuccess,\n changeColor === 'warning' && $style.isWarning\n )\">\n <span v-if=\"changeValue\">{{ changeValue }}</span>\n\n <FluxIcon\n v-if=\"changeIcon\"\n :name=\"changeIcon\"\n :size=\"14\"/>\n </div>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxDirection, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPane from './FluxPane.vue';\n import $style from '$flux/css/component/Statistic.module.scss';\n\n const {\n changeColor = 'gray',\n color = 'gray',\n direction = 'horizontal'\n } = defineProps<{\n readonly changeColor?: FluxColor;\n readonly changeIcon?: FluxIconName;\n readonly changeValue?: string;\n readonly color?: FluxColor;\n readonly direction?: FluxDirection;\n readonly icon: FluxIconName;\n readonly label: string;\n readonly value: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.stepperSteps\"\n :style=\"{\n '--progress': progress\n }\">\n <template\n v-for=\"step of amount\"\n :key=\"step\">\n <button\n :class=\"clsx(\n $style.stepperStepsItem,\n current > step && $style.stepperStepsItemComplete,\n current === step && $style.stepperStepsItemCurrent,\n current < step && $style.stepperStepsItemIdle\n )\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"activate(step - 1)\">\n <span :class=\"$style.stepperStepsItemParticles\"/>\n\n <FluxFadeTransition>\n <FluxIcon\n v-if=\"current > step\"\n name=\"check\"/>\n\n <span v-else>\n {{ step }}\n </span>\n </FluxFadeTransition>\n </button>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Stepper.module.scss';\n\n const emit = defineEmits<{\n activate: [number];\n }>();\n\n const {\n amount,\n current\n } = defineProps<{\n readonly amount: number;\n readonly current: number;\n }>();\n\n const progress = computed(() => (current - 1) / (amount - 1));\n\n function activate(index: number): void {\n emit('activate', index);\n }\n</script>\n","<template>\n <slot\n v-bind=\"{activate, modelValue, steps}\"\n name=\"steps\">\n <FluxStepperSteps\n :amount=\"steps\"\n :current=\"modelValue + 1\"\n @activate=\"activate\"/>\n </slot>\n\n <slot\n v-bind=\"{activate, modelValue, children, isTransitioningBack, steps, view}\"\n name=\"content\">\n <FluxWindowTransition :is-back=\"isTransitioningBack\">\n <FluxDynamicView\n :key=\"modelValue\"\n :vnode=\"view\"/>\n </FluxWindowTransition>\n </slot>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree } from '@flux-ui/internals';\n import { computed, ref, unref, VNode, watch } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n import FluxDynamicView from './FluxDynamicView.vue';\n import FluxStepperSteps from './FluxStepperSteps.vue';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const slots = defineSlots<{\n default(): any;\n\n content(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly isTransitioningBack: boolean;\n readonly modelValue: number;\n readonly steps: number;\n readonly view: VNode;\n }): any;\n\n steps(props: {\n activate(index: number): void;\n\n readonly modelValue: number;\n readonly steps: number;\n }): any;\n }>();\n\n const isTransitioningBack = ref(false);\n\n const children = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const steps = computed(() => unref(children).length);\n const view = computed(() => unref(children)[unref(modelValue)] ?? null);\n\n function activate(index: number): void {\n modelValue.value = index;\n }\n\n watch(modelValue, (newIndex, oldIndex) => {\n isTransitioningBack.value = newIndex < oldIndex;\n });\n</script>\n","<template>\n <div :class=\"$style.stepperStep\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Stepper.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.tab\"\n role=\"tabpanel\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import $style from '$flux/css/component/Tab.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <nav\n :class=\"$style.tabBar\"\n role=\"tablist\"\n aria-orientation=\"horizontal\">\n <FluxFadeTransition>\n <button\n v-if=\"isStartArrowVisible\"\n :class=\"$style.tabBarArrowStart\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"scrollToStart\">\n <FluxIcon name=\"angle-left\"/>\n </button>\n </FluxFadeTransition>\n\n <div\n ref=\"tabBar\"\n :class=\"clsx(\n $style.tabBarTabs,\n isEndArrowVisible && $style.isEndMasked,\n isStartArrowVisible && $style.isStartMasked\n )\">\n <slot/>\n </div>\n\n <FluxFadeTransition>\n <button\n v-if=\"isEndArrowVisible\"\n :class=\"$style.tabBarArrowEnd\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"scrollToEnd\">\n <FluxIcon name=\"angle-right\"/>\n </button>\n </FluxFadeTransition>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useEventListener, useMutationObserver } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { onMounted, ref, useTemplateRef } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n\n const tabBarRef = useTemplateRef('tabBar');\n\n useEventListener(tabBarRef, 'scroll', () => checkScroll());\n useMutationObserver(tabBarRef, () => checkScroll(), {childList: true});\n\n const isEndArrowVisible = ref(false);\n const isStartArrowVisible = ref(false);\n\n onMounted(() => checkScroll());\n\n function checkScroll(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n\n if (tabBar.scrollWidth <= tabBar.offsetWidth) {\n isEndArrowVisible.value = false;\n isStartArrowVisible.value = false;\n return;\n }\n\n isEndArrowVisible.value = tabBar.scrollLeft < tabBar.scrollWidth - tabBar.offsetWidth;\n isStartArrowVisible.value = tabBar.scrollLeft > 0;\n }\n\n function scrollToEnd(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n tabBar.scrollBy({\n behavior: 'smooth',\n left: tabBar.offsetWidth / 1.5\n });\n }\n\n function scrollToStart(): void {\n const tabBar = unrefTemplateElement(tabBarRef)!;\n tabBar.scrollBy({\n behavior: 'smooth',\n left: tabBar.offsetWidth / -1.5\n });\n }\n</script>\n","<template>\n <FluxPressable\n ref=\"tab\"\n :component-type=\"type\"\n :class=\"isActive ? $style.tabBarItemActive : $style.tabBarItem\"\n type=\"button\"\n role=\"tab\"\n :aria-disabled=\"disabled ? true : undefined\"\n :aria-selected=\"isActive\"\n :disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span v-if=\"label\">{{ label }}</span>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { ComponentPublicInstance, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n mouseenter: [MouseEvent];\n mouseleave: [MouseEvent];\n }>();\n\n const {\n disabled: componentDisabled,\n isActive\n } = defineProps<{\n readonly type?: FluxPressableType;\n readonly disabled?: boolean;\n readonly icon?: FluxIconName;\n readonly isActive?: boolean;\n readonly label?: string;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const tabRef = useTemplateRef<ComponentPublicInstance>('tab');\n\n function onClick(evt: MouseEvent): void {\n if (unref(disabled)) {\n evt.preventDefault();\n evt.stopPropagation();\n return;\n }\n\n emit('click', evt);\n }\n\n function onMouseEnter(evt: MouseEvent): void {\n emit('mouseenter', evt);\n }\n\n function onMouseLeave(evt: MouseEvent): void {\n emit('mouseleave', evt);\n }\n\n watch(() => isActive, () => {\n if (!isActive) {\n return;\n }\n\n const tab = unref(tabRef);\n\n if (!tab) {\n return;\n }\n\n const el = tab.$el;\n\n if (el.parentElement?.offsetWidth === el.parentElement?.scrollWidth) {\n return;\n }\n\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.tabs\">\n <slot\n v-bind=\"{children, modelValue, tabs, activate}\"\n name=\"tabs\">\n <FluxTabBar :class=\"$style.tabsBar\">\n <template\n v-for=\"(tab, index) of tabs\"\n :key=\"index\">\n <FluxTabBarItem\n :icon=\"tab.icon\"\n :is-active=\"modelValue === index\"\n :label=\"tab.label\"\n @click=\"activate(index)\"/>\n </template>\n </FluxTabBar>\n </slot>\n\n <slot\n v-bind=\"{children, modelValue, tabs, activate}\"\n name=\"content\">\n <FluxWindowTransition :is-back=\"isTransitioningBack\">\n <VNodeRenderer\n :key=\"modelValue\"\n :vnode=\"children[modelValue]\"/>\n </FluxWindowTransition>\n </slot>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentProps } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, VNode, watch } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n import { VNodeRenderer } from './primitive';\n import FluxTabBar from './FluxTabBar.vue';\n import FluxTabBarItem from './FluxTabBarItem.vue';\n import $style from '$flux/css/component/Tab.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const slots = defineSlots<{\n default(): any;\n\n content(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly modelValue: number;\n readonly tabs: {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }[];\n }): any;\n\n tabs(props: {\n activate(index: number): void;\n\n readonly children: VNode[];\n readonly modelValue: number;\n readonly tabs: {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }[];\n }): any;\n }>();\n\n const isTransitioningBack = ref(false);\n\n const children = computed(() => flattenVNodeTree(slots.default?.() ?? []));\n const tabs = computed<{ icon?: FluxIconName; label?: string; }[]>(() => unref(children)\n .filter((child: VNode) => getComponentProps<any>(child).icon || getComponentProps<any>(child).label)\n .map((child: VNode) => ({\n icon: getComponentProps<any>(child).icon,\n label: getComponentProps<any>(child).label\n }))\n );\n\n function activate(index: number): void {\n modelValue.value = index;\n }\n\n watch(modelValue, (newIndex, oldIndex) => {\n isTransitioningBack.value = newIndex < oldIndex;\n });\n</script>\n","<template>\n <FluxActions :class=\"$style.tableActions\">\n <slot/>\n </FluxActions>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxActions from './FluxActions.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <th\n :class=\"clsx(\n $style.tableHeader,\n isBordered && $style.isBordered,\n isShrinking && $style.isShrinking,\n isSticky && $style.isSticky\n )\"\n :style=\"{\n minWidth: `${minWidth}px`\n }\">\n <div :class=\"$style.tableHeaderContent\">\n <slot/>\n\n <FluxFlyout v-if=\"isSortable\">\n <template #opener=\"{open}\">\n <button\n :class=\"$style.tableSort\"\n :aria-label=\"translate('flux.sort')\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"open\">\n <FluxIcon\n :size=\"16\"\n :name=\"sortingIcon\"/>\n </button>\n </template>\n\n <FluxMenu>\n <FluxMenuGroup>\n <FluxMenuItem\n :is-highlighted=\"sort === 'ascending'\"\n icon-leading=\"arrow-down-a-z\"\n :label=\"translate('flux.sortAscending')\"\n @click=\"$emit('sort', 'ascending')\"/>\n\n <FluxMenuItem\n :is-highlighted=\"sort === 'descending'\"\n icon-leading=\"arrow-up-a-z\"\n :label=\"translate('flux.sortDescending')\"\n @click=\"$emit('sort', 'descending')\"/>\n </FluxMenuGroup>\n\n <template v-if=\"sort\">\n <FluxSeparator/>\n\n <FluxMenuGroup>\n <FluxMenuItem\n icon-leading=\"circle-xmark\"\n is-destructive\n :label=\"translate('flux.sortRemove')\"\n @click=\"$emit('sort', null)\"/>\n </FluxMenuGroup>\n </template>\n </FluxMenu>\n </FluxFlyout>\n </div>\n </th>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed } from 'vue';\n import { useTableInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxIcon from './FluxIcon.vue';\n import FluxMenu from './FluxMenu.vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n import FluxMenuItem from './FluxMenuItem.vue';\n import FluxSeparator from './FluxSeparator.vue';\n import $style from '$flux/css/component/Table.module.scss';\n\n defineEmits<{\n sort: ['ascending' | 'descending' | null];\n }>();\n\n const {\n minWidth = 0,\n sort\n } = defineProps<{\n readonly isShrinking?: boolean;\n readonly isSortable?: boolean;\n readonly isSticky?: boolean;\n readonly minWidth?: number;\n readonly sort?: 'ascending' | 'descending';\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const {isBordered} = useTableInjection();\n const translate = useTranslate();\n\n const sortingIcon = computed((): FluxIconName => {\n switch (sort) {\n case 'ascending':\n return 'arrow-down-a-z';\n\n case 'descending':\n return 'arrow-up-a-z';\n\n default:\n return 'arrow-up-arrow-down';\n }\n });\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"6\"\n is-wrapping>\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.timeline\"\n role=\"feed\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Timeline.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n color === 'gray' && $style.timelineItemGray,\n color === 'primary' && $style.timelineItemPrimary,\n color === 'danger' && $style.timelineItemDanger,\n color === 'info' && $style.timelineItemInfo,\n color === 'success' && $style.timelineItemSuccess,\n color === 'warning' && $style.timelineItemWarning\n )\"\n role=\"article\">\n <div :class=\"$style.timelineItemLine\"/>\n\n <div\n v-if=\"photo\"\n :class=\"$style.timelineItemPhoto\">\n <img\n :class=\"$style.timelineItemPhotoImage\"\n :src=\"photo\"\n alt=\"\">\n\n <div\n v-if=\"icon\"\n :class=\"$style.timelineItemPhotoIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"16\"/>\n </div>\n </div>\n\n <div\n v-else-if=\"icon\"\n :class=\"$style.timelineItemIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"20\"/>\n </div>\n\n <div :class=\"$style.timelineItemBody\">\n <div\n v-if=\"title || when\"\n :class=\"$style.timelineItemHeader\">\n <strong v-if=\"title\">{{ title }}</strong>\n <span v-if=\"when\">{{ when }}</span>\n </div>\n\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Timeline.module.scss';\n\n const {\n color = 'gray'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly photo?: string;\n readonly title?: string;\n readonly when?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <label\n :class=\"clsx(\n $style.toggle,\n modelValue && $style.isChecked,\n disabled && $style.isDisabled,\n isSwitch && $style.isSwitch\n )\"\n :for=\"id\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxIcon\n v-if=\"iconOff\"\n :class=\"$style.toggleIconOff\"\n :name=\"iconOff\"\n :size=\"14\"/>\n\n <FluxIcon\n v-if=\"iconOn\"\n :class=\"$style.toggleIconOn\"\n :name=\"iconOn\"\n :size=\"14\"/>\n\n <input\n :class=\"$style.toggleInput\"\n :id=\"id\"\n :disabled=\"disabled\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n role=\"switch\"\n :aria-checked=\"modelValue\"\n @input=\"toggle\"/>\n </label>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { toRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<boolean>({\n default: false\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly iconOff?: FluxIconName;\n readonly iconOn?: FluxIconName;\n readonly disabled?: boolean;\n readonly isSwitch?: boolean;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n\n function toggle(evt: Event): void {\n modelValue.value = (evt.target as HTMLInputElement).checked;\n }\n</script>\n","<template>\n <FluxStack\n :class=\"clsx(\n !!floatingMode ? $style.toolbarFloating : $style.toolbarFlat,\n floatingMode === 'free' && $style.isFree,\n floatingMode === 'top-end' && $style.isTopEnd,\n floatingMode === 'top-start' && $style.isTopStart,\n floatingMode === 'bottom-end' && $style.isBottomEnd,\n floatingMode === 'bottom-start' && $style.isBottomStart,\n )\"\n direction=\"horizontal\"\n :gap=\"6\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Toolbar.module.scss';\n\n defineProps<{\n readonly floatingMode?: 'free' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"3\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n"],"names":["r","e","t","f","n","o","clsx","BREAKPOINTS","useBreakpoints","currentBreakpoint","ref","breakpointRefs","key","updateBreakpoints","width","activeBreakpoint","value","onMounted","onUnmounted","FluxDisabledInjectionKey","FluxExpandableGroupInjectionKey","FluxFlyoutInjectionKey","FluxFilterInjectionKey","FluxFormFieldInjectionKey","FluxTableInjectionKey","FluxTooltipInjectionKey","isFluxFilterOptionHeader","obj","isFluxFilterOptionItem","isFluxFormSelectGroup","item","isFluxFormSelectOption","english","iconRegistry","fluxRegisterIcons","icons","acc","icon","iconName","DEFAULT_SNACKBAR_DURATION","state","reactive","alertId","tooltipId","addAlert","spec","id","addConfirm","addPrompt","addSnackbar","addTooltip","registerDialog","removeAlert","index","removeConfirm","c","removePrompt","removeSnackbar","s","removeTooltip","updateSnackbar","updateTooltip","showAlert","resolve","showConfirm","showPrompt","text","showSnackbar","duration","useFluxStore","inertMain","computed","tooltip","promiseToVoidFunction","fn","args","isString","str","isObject","_obj$constructor","pick","keys","_","k","_ref","v","DIRECTION","forceDirection","direction","objectIncludes","b","a","arrA","arrB","i","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","el","maskedClass","mask","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","start","end","KEY_Z","KEY_Y","HTMLMaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","HTMLInputMaskElement","HTMLContenteditableMaskElement","root","selection","anchorOffset","focusOffset","range","InputHistory","steps","InputMask","_this$masked","masked","val","ev","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","handler","hIndex","details","oldRawValue","offset","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","beforePos","shiftChar","Masked","flags","fromPos","toPos","ch","checkTail","consistentState","noFixState","fixDetails","chDetails","consistentTail","appended","beforeTailState","tailDetails","ci","d","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","chunk","lastBlockIter","chunkBlock","remainChars","props","cstate","chunkShiftPos","PatternCursor","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","p","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","block","blockDetails","chunkTail","bFromPos","bToPos","blockChunk","blockIndex","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","bic","element","imask","iban","vat","useDisabledInjection","inject","useDisabled","componentDisabled","treeDisabled","unref","useExpandableGroupInjection","useFilterInjection","useFlyoutInjection","useFormFieldInjection","useId","useTableInjection","useTooltipInjection","M","R","H","I","C","u","D","w","m","E","g","T","U","h","S","G","N","z","Y","$","freeGlobal","freeSelf","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","length","isArray","symbolProto","symbolToString","baseToString","toString","baseSlice","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","string","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","arrayReduce","accumulator","initAccum","basePropertyOf","object","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","guard","reApos","createCompounder","callback","camelCase","word","y","x","L","me","xe","K","he","be","P","ye","Te","Ee","ve","Le","ge","we","B","V","Me","q","Re","ke","Fe","W","He","#e","#t","X","j","Se","De","Ae","Ie","Z","Ce","Oe","J","Ne","_e","Pe","Ue","Ke","Q","Ve","ze","Be","qe","ee","We","Ge","Ye","Xe","et","re","Je","se","Qe","A","ot","tt","ae","le","ie","ce","pe","it","ct","at","fr","pr","Er","gr","Sr","Ir","Vr","qr","es","ts","ps","us","gs","ws","Is","Os","qs","Ws","ta","oa","ua","da","wa","La","Oa","Ca","Wa","Ga","oi","ni","di","mi","Li","Mi","de","ft","emit","__emit","definition","__props","warn","onClick","evt","_createElementBlock","_normalizeClass","_unref","$style","_normalizeStyle","size","_openBlock","_Fragment","_renderList","path","navigate","componentType","_createBlock","_component_router_link","_mergeProps","$attrs","rel","target","to","_cache","$event","$emit","_renderSlot","_ctx","href","_createElementVNode","SLOTS","disabled","toRef","onMouseEnter","onMouseLeave","FluxPressable","type","cssClass","isFilled","isSubmit","tabindex","isLoading","iconLeading","iconTrailing","FluxSpinner","FluxIcon","cssClassIcon","label","cssClassLabel","FluxButton","isDestructive","useFormSelect","modelValue","isMultiple","options","searchQuery","values","model","groups","search","available","selected","subItems","subItem","useLoaded","tasks","shallowRef","loaded","fallback","params","translation","paramName","useTranslate","instance","getCurrentInstance","isVueI18n","slot","CLASS_MAP","variant","_createVNode","dialogRef","useTemplateRef","mountRef","paneRef","isClosing","isOpening","isOpen","openerWidth","openerHeight","paneX","paneY","paneMarginX","paneMarginY","useFocusTrap","close","pane","unrefTemplateElement","open","mount","height","reposition","top","left","paneWidth","paneHeight","mx","my","toggle","onDialogBackdropClick","watch","onCleanup","dialog","provide","__expose","_normalizeProps","_guardReactiveProps","FluxPane","isAutoWidth","_resolveDynamicComponent","isCentered","isFill","isWrapping","gap","_sfc_main$2p","defineComponent","slots","elm","onHover","onLeave","_useSlots","translate","FluxStack","FluxSpacer","FluxFlyout","FluxButtonGroup","FluxSecondaryButton","isResettable","FluxTooltip","FluxDestructiveButton","_withCtx","paneVariant","FluxPaneBody","FluxButtonStack","elementRef","useFocusZone","canvasRef","componentId","useComponentId","contextRef","animationFrame","tick","polygons","mulberry","mulberry32","color","localMulberry","count","points","schedule","onBeforeUnmount","cancel","update","context","shapes","widthBasedOpacity","tx","ty","shape","canvas","aspectRatio","minColumnWidth","afterEnter","isHtmlElement","enter","leave","_Transition","mode","isBack","STATUS_CLASS_MAP","colorSeed","seed","status","alt","src","fallbackInitials","fallbackIcon","FluxFadeTransition","onDeleteClick","dot","isDeletable","_sfc_main$23","purple600","orange600","pink600","attrs","Fragment","flattenVNodeTree","vnode","cloneVNode","tagName","anchorRef","popupRef","onResize","onScroll","useMutationObserver","anchor","popup","popupHeight","popupWidth","px","py","resize","watchEffect","isSelectable","isActive","isHighlighted","isIndented","isSelected","imageSrc","command","commandIcon","commandLoading","_useModel","inputRef","localValue","nativeType","blur","focus","passwordTypeToggle","onBlur","onFocus","onInput","dateTime","DateTime","onKeyDown","iso","__","inputMask","isSecondary","autoComplete","autoFocus","max","maxLength","min","placeholder","isReadonly","step","isHorizontal","modelSearch","select","option","FluxMenuGroup","isSearchable","FluxFormInput","searchPlaceholder","FluxMenuItem","FluxMenuSubHeader","isLarge","isClickable","INITIAL_HIGHLIGHTED_INDEX","anchorPopupRef","optionElementRefs","searchInputElementRef","highlightedIndex","isKeyboardAction","isPopupOpen","focusElement","highlightedId","rawOptions","group","useClickOutside","deselect","nextTick","selectedIndex","onKeyUp","Anchor","FluxTag","_Teleport","AnchorPopup","FluxMenu","so","smallTicks","generateStepTicks","ticks","lower","upper","rootRef","onPointerMove","onPointerUp","onPointerDown","isDragging","isTicksVisible","FluxTicks","position","percentageLower","percentageUpper","createDialogRenderer","className","transition","unregister","zIndex","dialogCount","children","isVisible","child","Comment","content","Teleport","createLabelForDateRange","preventCustom","startStr","endStr","getValueLabel","valueLabel","FilterMenuRenderer","getComponentName","getComponentProps","parsers","renderFilterGroup","parseDate","base","parseDateRange","parseOption","parseOptionAsync","fetchOptions","parseOptions","generateMultiOptionsLabel","parseOptionsAsync","parseRange","formatter","formatNumber","FluxSeparator","renderFilterItem","isVNode","FilterItem","VNodeRenderer","isTransitioningToPast","viewDate","viewMonth","viewYear","dates","days","nextMonth","previousMonth","setViewDate","useCalendar","months","useCalendarMonthSwitcher","years","nextYears","previousYears","useCalendarYearSwitcher","eventNodes","events","en","getEventsForDate","forDate","forDateStr","date","setToday","setViewMonth","month","setViewYear","year","FluxActionBar","_hoisted_1","$styleDatePicker","_hoisted_2","FluxWindowTransition","day","event","_toDisplayString","isIndeterminate","selectableIcon","isJustNowVisible","relative","isTyping","isReceived","FluxAvatar","avatarAlt","avatarFallback","avatarFallbackIcon","avatarFallbackInitials","avatarSrc","postedBy","thumbPosition","onDecrement","valueX","valueY","maxX","maxY","minX","minY","stepX","stepY","roundStep","onIncrement","CoordinatePickerThumb","message","currentLength","error","hint","FluxFormFieldAddition","thumbRef","percentage","tooltipContent","countDecimals","onDragging","is","onUpdate","clampWithStepPrecision","SliderBase","SliderTrack","SliderThumb","alpha","hsv","rgb","hsvToRGB","hue","saturation","saturationValue","saturationPickerColor","hslInputH","generateComputedInput","hsvToHSL","hslToHSV","hslInputS","hslInputL","hsvInputH","hsvInputS","hsvInputV","rgbInputR","rgbToHSV","rgbInputG","rgbInputB","fromHSV","toHSV","oldModelValue","hex","hexToRGB","hslToRGB","rgbToHEX","rgbToHSL","CoordinatePicker","FluxFormSlider","isAlphaEnabled","FluxFormField","customColor","colors","isCustomAllowed","FluxColorPicker","FluxPrimaryButton","gutter","onDeselect","onSelect","SelectBase","isArrow","isCurrent","isSpacer","pages","isNextDisabled","isPreviousDisabled","visiblePages","sizes","dots","visible","page","next","previous","prompt","pageStr","arrows","isCompact","FluxPaginationButton","limit","limitOptions","perPage","FluxPagination","FluxFormSelect","isBordered","isHoverable","isSeparated","isStriped","contentDirection","fillColumns","FluxTableRow","FluxTableCell","_hoisted_3","captionSide","IGNORED_SLOTS","rows","FluxTable","row","uniqueKey","limits","FluxPaginationBar","viewDateNext","viewDatePrevious","getInitialDate","viewMode","maxDate","minDate","normalizedSelection","isDisabled","isWithinBoundary","unit","isWithinRange","edge","isWithinSelection","selectionStart","selectionEnd","setDate","setView","view","onDateMouseOver","onDateMouseOut","FluxVerticalWindowTransition","contentPlacement","svgRef","svgWidth","svgHeight","svg","cr","cx","cy","contentRef","isDraggingOver","pathLength","onWindowDragEnd","onWindowDragStart","onWindowDrop","onDragEnter","onDragLeave","onDrop","files","onFileSelected","showPicker","contentId","headerId","closeAll","register","expandIcon","onBeforeMount","FluxAutoHeightTransition","expandables","expandable","isOpenRef","getExposedRef","uid","faderRef","useInterval","current","fader","back","windowRef","filters","items","reset","getValue","hasValue","setValue","FluxWindow","_createSlots","filter","resettable","currentValue","onDatePicked","FluxDatePicker","rangeMode","filteredOptions","FilterOptionBase","debouncedModelSearch","useDebouncedRef","fetchRelevant","fetchSearch","selectedOptions","visibleOptions","vo","FluxFormColumn","inView","useInView","draw","columns","squares","dpr","opacity","setup","delta","frame","lastTime","animate","time","imageRef","dragging","isPreviewing","focalPointX","focalPointY","onImageLoaded","image","pageX","pageY","onShowPreviewClicked","FluxPaneFooter","onSubmit","FluxDisabled","flyoutRef","FluxFormInputGroup","setTime","fieldRefs","onPaste","field","isPrivate","lowerThumbRef","upperThumbRef","isDraggingLower","isDraggingUpper","lowerValue","upperValue","which","title","onOpen","timeZones","timeZoneGroupOrder","timeZone","timeZoneOptions","timeZoneOffset","go","sortedGroups","ai","groupOptions","labelA","labelB","isHidden","isDeleteVisible","FluxFocalPointImage","focalPoint","url","FluxRemove","isPending","onFilesSelected","images","file","FluxDropZone","isEditable","_TransitionGroup","FluxGalleryItem","pendingItems","xs","sm","md","lg","xl","strokeDasharray","_hoisted_4","isCenter","isFluid","isCloseable","_sfc_main$D","FluxOverlayTransition","FluxAutoGrid","subTitle","borderColor","isMasked","FluxGridPattern","FluxAnimatedColors","animatedColors","animatedOpacity","animatedSeed","isInset","imageUrl","imageAlt","formatPercentage","isLegendVisible","FluxLegend","avatarSize","isButton","progress","isDone","decrement","increment","sizeToContent","FluxPaneHeader","alert","confirm","hasActions","onAction","actionKey","onClose","isRendered","progressIndeterminate","progressValue","FluxProgressBar","progressMax","progressMin","progressStatus","subMessage","actions","actionLabel","FluxAction","snackbars","snackbar","FluxSnackbar","_sfc_main$m","has","calculate","origin","margin","safeZone","scale","originWidth","originHeight","calculateHorizontalPosition","calculateVerticalPosition","FluxTooltipTransition","arrowAngle","arrowX","arrowY","diff","alerts","confirms","prompts","inert","FluxOverlay","FluxAlert","FluxConfirm","FluxPrompt","FluxSnackbarProvider","FluxTooltipProvider","controlRef","itemRefs","activeItemX","activeItemWidth","activate","onUpdated","itemRef","controlX","_sfc_main$j","_sfc_main$i","FluxSlideOverTransition","spacings","flyoutDirection","flyoutIsAutoWidth","flyoutMargin","flyoutWidth","buttonIcon","bindings","changeIcon","changeValue","changeColor","amount","isTransitioningBack","newIndex","oldIndex","FluxStepperSteps","FluxDynamicView","tabBarRef","useEventListener","checkScroll","isEndArrowVisible","isStartArrowVisible","tabBar","scrollToEnd","scrollToStart","tabRef","tab","tabs","FluxTabBar","FluxTabBarItem","FluxActions","sortingIcon","isShrinking","isSticky","minWidth","isSortable","sort","photo","when","isSwitch","iconOff","iconOn","floatingMode"],"mappings":"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AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAC1B,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,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MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,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","x_google_ignoreList":[0,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67]}