@flux-ui/components 3.0.0-next.20 → 3.0.0-next.21

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/.bun/clsx@2.1.1/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/.bun/imask@7.6.1/node_modules/imask/esm/core/utils.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/action-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/holder.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/factory.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/input-history.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/input.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/change-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/base.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/regexp.js","../../../node_modules/.bun/imask@7.6.1/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/.bun/@basmilius+utils@2.13.0+1fb4c65d43e298b9/node_modules/@basmilius/utils/dist/index.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/toString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseSlice.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_castSlice.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicode.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_asciiToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_unicodeToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_stringToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_createCaseFirst.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/upperFirst.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/capitalize.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_arrayReduce.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyOf.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_deburrLetter.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/deburr.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_asciiWords.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicodeWord.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_unicodeWords.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/words.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_createCompounder.js","../../../node_modules/.bun/lodash-es@4.17.21/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/FluxPaneHeader.vue","../src/component/FluxAlert.vue","../src/component/FluxConfirm.vue","../src/component/FluxPrompt.vue","../src/component/FluxOverlayProvider.vue","../src/component/FluxPaneDeck.vue","../src/component/FluxPaneGroup.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/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 as FluxIconName] = 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(): [number, 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(): [number, VoidFunction] {\n return [\n ++state.dialogCount,\n () => --state.dialogCount\n ];\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 p(e,t){return Math.round(e/t)*t}function C(e,t,r,n){return Math.max(t,Math.min(r,+p(e*(r-t)+t,n).toPrecision(4)))}function D(e){return e.toString().split(\".\")[1]?.length??0}function P(e,t,r){let n=[],a=[],o=null;return(...i)=>{return clearTimeout(o),o=setTimeout(()=>{try{let u=e.apply(r,i);n.forEach((s)=>s(u))}catch(u){a.forEach((s)=>s(u))}n=[],a=[]},t),new Promise((u,s)=>{n.push(u),a.push(s)})}}import{defineStore as me,storeToRefs as le}from\"pinia\";function v(e,t){let r=me(e,t);return()=>{let n=r(),a=Object.getOwnPropertyNames(n),o=le(n),i={};for(let u of a){if(u.startsWith(\"$\")||u.startsWith(\"_\"))continue;if(u in o){i[u]=o[u];continue}i[u]=n[u]}return i}}function b(e,t){let r=document.createElement(\"a\");r.download=t,r.href=e,document.body.appendChild(r),r.click(),document.body.removeChild(r)}function g(e,t){let r=URL.createObjectURL(e);b(r,t),URL.revokeObjectURL(r)}function R(e,t,r){let n=new Blob([e],{type:r});g(n,t)}function I(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function B(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function N(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function z(e){return e.toLocaleString({month:\"long\"})}function L(e,t=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:t,minimumFractionDigits:t}).format(e)}function E(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function F(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function G(e,t,r=5,n){let a=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],o=[0.1,0.5,...a],i=t-e,u=n?o:a;for(let f of u){let k=Math.floor(i/f),d=[];if(k>r+1)continue;d.push(e);for(let M=1;M<k;++M)d.push(M*f+e);return d.push(t),d}let s=i.toString().length-1,m=Math.pow(10,s),l=[];for(let f=0;f<i;f+=m)l.push(f+e);return l}function H(e){if(e.hour>=6&&e.hour<10)return\"alert\";if(e.hour>=10&&e.hour<18)return\"focused\";if(e.hour>=18&&e.hour<22)return\"wind_down\";return\"sleep\"}function _(e){if(e.hour>=5&&e.hour<12)return\"morning\";if(e.hour>=12&&e.hour<17)return\"afternoon\";if(e.hour>=17&&e.hour<22)return\"evening\";return\"night\"}import{DateTime as fe}from\"luxon\";function A(e){let t=fe.now();switch(e){case\"afternoon\":return[t.set({hour:12,minute:0,second:0,millisecond:0}),t.set({hour:17,minute:0,second:0,millisecond:0})];case\"evening\":return[t.set({hour:17,minute:0,second:0,millisecond:0}),t.set({hour:22,minute:0,second:0,millisecond:0})];case\"morning\":return[t.set({hour:5,minute:0,second:0,millisecond:0}),t.set({hour:12,minute:0,second:0,millisecond:0})];case\"night\":return[t.set({hour:22,minute:0,second:0,millisecond:0}),t.set({hour:22,minute:0,second:0,millisecond:0}).plus({hours:7})]}}function j(e){let t=e.year%100;if(t%=19,t>9)t-=19;if(t=t*11%30+e.month+e.day,e.month<3)t+=2;if(e.year<2000)t-=4;else t-=8.3;t=Math.floor(t+0.5)%30;let n=(t<0?t+30:t)/29.530588853;if(n<0.03||n>0.97)return\"new_moon\";if(n<0.22)return\"waxing_crescent\";if(n<0.28)return\"first_quarter\";if(n<0.47)return\"waxing_gibbous\";if(n<0.53)return\"full_moon\";if(n<0.72)return\"waning_gibbous\";if(n<0.78)return\"last_quarter\";return\"waning_crescent\"}function O(e){let t={};do{if(e.name===\"\")break;for(let[r,n]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(r))continue;if(!n.get&&!n.set)continue;t[r]=n}}while(e=Object.getPrototypeOf(e));return t}var ce={af:[\"Afghanistan\",33,65],ax:[\"Åland Islands\",60.116667,19.9],al:[\"Albania\",41,20],dz:[\"Algeria\",28,3],as:[\"American Samoa\",-14.3333,-170],ad:[\"Andorra\",42.5,1.6],ao:[\"Angola\",-12.5,18.5],ai:[\"Anguilla\",18.25,-63.1667],aq:[\"Antarctica\",-90,0],ag:[\"Antigua and Barbuda\",17.05,-61.8],ar:[\"Argentina\",-34,-64],am:[\"Armenia\",40,45],aw:[\"Aruba\",12.5,-69.9667],au:[\"Australia\",-27,133],at:[\"Austria\",47.3333,13.3333],az:[\"Azerbaijan\",40.5,47.5],bs:[\"Bahamas\",24.25,-76],bh:[\"Bahrain\",26,50.55],bd:[\"Bangladesh\",24,90],bb:[\"Barbados\",13.1667,-59.5333],by:[\"Belarus\",53,28],be:[\"Belgium\",50.8333,4],bz:[\"Belize\",17.25,-88.75],bj:[\"Benin\",9.5,2.25],bm:[\"Bermuda\",32.3333,-64.75],bt:[\"Bhutan\",27.5,90.5],bo:[\"Bolivia\",-17,-65],bq:[\"Bonaire, Sint Eustatius and Saba\",12.183333,-68.233333],ba:[\"Bosnia and Herzegovina\",44,18],bw:[\"Botswana\",-22,24],bv:[\"Bouvet Island\",-54.4333,3.4],br:[\"Brazil\",-10,-55],io:[\"British Indian Ocean Territory\",-6,71.5],bn:[\"Brunei\",4.5,114.6667],bg:[\"Bulgaria\",43,25],bf:[\"Burkina Faso\",13,-2],bi:[\"Burundi\",-3.5,30],kh:[\"Cambodia\",13,105],cm:[\"Cameroon\",6,12],ca:[\"Canada\",60,-95],cv:[\"Cape Verde\",16,-24],ky:[\"Cayman Islands\",19.5,-80.5],cf:[\"Central African Republic\",7,21],td:[\"Chad\",15,19],cl:[\"Chile\",-30,-71],cn:[\"China\",35,105],cx:[\"Christmas Island\",-10.5,105.6667],cc:[\"Cocos (Keeling) Islands\",-12.5,96.8333],co:[\"Colombia\",4,-72],km:[\"Comoros\",-12.1667,44.25],cd:[\"Congo, Democratic Republic of the\",0,25],cg:[\"Congo\",-1,15],ck:[\"Cook Islands\",-21.2333,-159.7667],cr:[\"Costa Rica\",10,-84],ci:[\"Côte d'Ivoire\",8,-5],hr:[\"Croatia\",45.1667,15.5],cu:[\"Cuba\",21.5,-80],cw:[\"Curaçao\",12.166667,-68.966667],cy:[\"Cyprus\",35,33],cz:[\"Czech Republic\",49.75,15.5],dk:[\"Denmark\",56,10],dj:[\"Djibouti\",11.5,43],dm:[\"Dominica\",15.4167,-61.3333],do:[\"Dominican Republic\",19,-70.6667],ec:[\"Ecuador\",-2,-77.5],eg:[\"Egypt\",27,30],sv:[\"El Salvador\",13.8333,-88.9167],gq:[\"Equatorial Guinea\",2,10],er:[\"Eritrea\",15,39],ee:[\"Estonia\",59,26],et:[\"Ethiopia\",8,38],fk:[\"Falkland Islands (Malvinas)\",-51.75,-59],fo:[\"Faroe Islands\",62,-7],fj:[\"Fiji\",-18,175],fi:[\"Finland\",64,26],fr:[\"France\",46,2],gf:[\"French Guiana\",4,-53],pf:[\"French Polynesia\",-15,-140],tf:[\"French Southern Territories\",-43,67],ga:[\"Gabon\",-1,11.75],gm:[\"Gambia\",13.4667,-16.5667],ge:[\"Georgia\",42,43.5],de:[\"Germany\",51,9],gh:[\"Ghana\",8,-2],gi:[\"Gibraltar\",36.1833,-5.3667],gr:[\"Greece\",39,22],gl:[\"Greenland\",72,-40],gd:[\"Grenada\",12.1167,-61.6667],gp:[\"Guadeloupe\",16.25,-61.5833],gu:[\"Guam\",13.4667,144.7833],gt:[\"Guatemala\",15.5,-90.25],gg:[\"Guernsey\",49.5,-2.56],gw:[\"Guinea-Bissau\",12,-15],gn:[\"Guinea\",11,-10],gy:[\"Guyana\",5,-59],ht:[\"Haiti\",19,-72.4167],hm:[\"Heard Island and McDonald Islands\",-53.1,72.5167],va:[\"Holy See\",41.9,12.45],hn:[\"Honduras\",15,-86.5],hk:[\"Hong Kong\",22.25,114.1667],hu:[\"Hungary\",47,20],is:[\"Iceland\",65,-18],in:[\"India\",20,77],id:[\"Indonesia\",-5,120],ir:[\"Iran\",32,53],iq:[\"Iraq\",33,44],ie:[\"Ireland\",53,-8],im:[\"Isle of Man\",54.23,-4.55],il:[\"Israel\",31.5,34.75],it:[\"Italy\",42.8333,12.8333],jm:[\"Jamaica\",18.25,-77.5],jp:[\"Japan\",36,138],je:[\"Jersey\",49.21,-2.13],jo:[\"Jordan\",31,36],kz:[\"Kazakhstan\",48,68],ke:[\"Kenya\",1,38],ki:[\"Kiribati\",1.4167,173],kp:[\"Korea, North\",40,127],kr:[\"Korea, South\",37,127.5],xk:[\"Kosovo\",42.583333,21],kw:[\"Kuwait\",29.3375,47.6581],kg:[\"Kyrgyzstan\",41,75],la:[\"Laos\",18,105],lv:[\"Latvia\",57,25],lb:[\"Lebanon\",33.8333,35.8333],ls:[\"Lesotho\",-29.5,28.5],lr:[\"Liberia\",6.5,-9.5],ly:[\"Libya\",25,17],li:[\"Liechtenstein\",47.1667,9.5333],lt:[\"Lithuania\",56,24],lu:[\"Luxembourg\",49.75,6.1667],mo:[\"Macao\",22.1667,113.55],mk:[\"North Macedonia\",41.8333,22],mg:[\"Madagascar\",-20,47],mw:[\"Malawi\",-13.5,34],my:[\"Malaysia\",2.5,112.5],mv:[\"Maldives\",3.25,73],ml:[\"Mali\",17,-4],mt:[\"Malta\",35.8333,14.5833],mh:[\"Marshall Islands\",9,168],mq:[\"Martinique\",14.6667,-61],mr:[\"Mauritania\",20,-12],mu:[\"Mauritius\",-20.2833,57.55],yt:[\"Mayotte\",-12.8333,45.1667],mx:[\"Mexico\",23,-102],fm:[\"Micronesia\",6.9167,158.25],md:[\"Moldova\",47,29],mc:[\"Monaco\",43.7333,7.4],mn:[\"Mongolia\",46,105],me:[\"Montenegro\",42,19],ms:[\"Montserrat\",16.75,-62.2],ma:[\"Morocco\",32,-5],mz:[\"Mozambique\",-18.25,35],mm:[\"Myanmar\",22,98],na:[\"Namibia\",-22,17],nr:[\"Nauru\",-0.5333,166.9167],np:[\"Nepal\",28,84],nl:[\"Netherlands\",52.5,5.75],nc:[\"New Caledonia\",-21.5,165.5],nz:[\"New Zealand\",-41,174],ni:[\"Nicaragua\",13,-85],ne:[\"Niger\",16,8],ng:[\"Nigeria\",10,8],nu:[\"Niue\",-19.0333,-169.8667],nf:[\"Norfolk Island\",-29.0333,167.95],mp:[\"Northern Mariana Islands\",15.2,145.75],no:[\"Norway\",62,10],om:[\"Oman\",21,57],pk:[\"Pakistan\",30,70],pw:[\"Palau\",7.5,134.5],ps:[\"Palestine\",32,35.25],pa:[\"Panama\",9,-80],pg:[\"Papua New Guinea\",-6,147],py:[\"Paraguay\",-23,-58],pe:[\"Peru\",-10,-76],ph:[\"Philippines\",13,122],pn:[\"Pitcairn\",-24.7,-127.4],pl:[\"Poland\",52,20],pt:[\"Portugal\",39.5,-8],pr:[\"Puerto Rico\",18.25,-66.5],qa:[\"Qatar\",25.5,51.25],re:[\"Réunion\",-21.1,55.6],ro:[\"Romania\",46,25],ru:[\"Russia\",60,100],rw:[\"Rwanda\",-2,30],bl:[\"Saint Barthélemy\",17.897728,-62.834244],sh:[\"Saint Helena\",-15.9333,-5.7],kn:[\"Saint Kitts and Nevis\",17.3333,-62.75],lc:[\"Saint Lucia\",13.8833,-61.1333],mf:[\"Saint Martin\",18.075278,-63.06],pm:[\"Saint Pierre and Miquelon\",46.8333,-56.3333],vc:[\"Saint Vincent and the Grenadines\",13.25,-61.2],ws:[\"Samoa\",-13.5833,-172.3333],sm:[\"San Marino\",43.7667,12.4167],st:[\"Sao Tome and Principe\",1,7],sa:[\"Saudi Arabia\",25,45],sn:[\"Senegal\",14,-14],rs:[\"Serbia\",44,21],sc:[\"Seychelles\",-4.5833,55.6667],sl:[\"Sierra Leone\",8.5,-11.5],sg:[\"Singapore\",1.3667,103.8],sx:[\"Sint Maarten\",18.033333,-63.05],sk:[\"Slovakia\",48.6667,19.5],si:[\"Slovenia\",46,15],sb:[\"Solomon Islands\",-8,159],so:[\"Somalia\",10,49],za:[\"South Africa\",-29,24],gs:[\"South Georgia and the South Sandwich Islands\",-54.5,-37],ss:[\"South Sudan\",8,30],es:[\"Spain\",40,-4],lk:[\"Sri Lanka\",7,81],sd:[\"Sudan\",15,30],sr:[\"Suriname\",4,-56],sj:[\"Svalbard and Jan Mayen\",78,20],sz:[\"Swaziland\",-26.5,31.5],se:[\"Sweden\",62,15],ch:[\"Switzerland\",47,8],sy:[\"Syria\",35,38],tw:[\"Taiwan\",23.5,121],tj:[\"Tajikistan\",39,71],tz:[\"Tanzania\",-6,35],th:[\"Thailand\",15,100],tl:[\"Timor-Leste\",-8.55,125.5167],tg:[\"Togo\",8,1.1667],tk:[\"Tokelau\",-9,-172],to:[\"Tonga\",-20,-175],tt:[\"Trinidad and Tobago\",11,-61],tn:[\"Tunisia\",34,9],tr:[\"Turkey\",39,35],tm:[\"Turkmenistan\",40,60],tc:[\"Turks and Caicos Islands\",21.75,-71.5833],tv:[\"Tuvalu\",-8,178],ug:[\"Uganda\",1,32],ua:[\"Ukraine\",49,32],ae:[\"United Arab Emirates\",24,54],gb:[\"United Kingdom\",54,-2],um:[\"United States Minor Outlying Islands\",19.2833,166.6],us:[\"United States\",38,-97],uy:[\"Uruguay\",-33,-56],uz:[\"Uzbekistan\",41,64],vu:[\"Vanuatu\",-16,167],ve:[\"Venezuela\",8,-66],vn:[\"Vietnam\",16,106],vg:[\"Virgin Islands, British\",18.5,-64.5],vi:[\"Virgin Islands, U.S.\",18.3333,-64.8333],wf:[\"Wallis and Futuna\",-13.3,-176.2],eh:[\"Western Sahara\",24.5,-13],ye:[\"Yemen\",15,48],zm:[\"Zambia\",-15,30],zw:[\"Zimbabwe\",-20,30]},de=ce;function U(e){return de[e]??null}function h(e){let t=U(e);if(!t)return null;let[,r]=t;return r>=0}var pe={autumn:[9,10,11],spring:[3,4,5],summer:[6,7,8],winter:[12,1,2]},be={autumn:[3,4,5],spring:[9,10,11],summer:[12,1,2],winter:[6,7,8]};function q(e,t){let r=h(e),n=t.month,a=r?pe:be;for(let o of[\"autumn\",\"spring\",\"summer\",\"winter\"])if(a[o].includes(n))return o;return null}function K(e){switch(e){case\"spring\":return\"fresh\";case\"summer\":return\"energetic\";case\"autumn\":return\"cozy\";case\"winter\":return\"warm\"}}function V(e){if(e.weekday===6||e.weekday===7)return\"off\";if(e.hour>=9&&e.hour<12)return\"work\";if(e.hour>=12&&e.hour<13)return\"break\";if(e.hour>=13&&e.hour<17)return\"work\";return\"off\"}function W(e){if(e.month===3&&e.day>=21||e.month===4&&e.day<=19)return\"aries\";if(e.month===4&&e.day>=20||e.month===5&&e.day<=20)return\"taurus\";if(e.month===5&&e.day>=21||e.month===6&&e.day<=20)return\"gemini\";if(e.month===6&&e.day>=21||e.month===7&&e.day<=22)return\"cancer\";if(e.month===7&&e.day>=23||e.month===8&&e.day<=22)return\"leo\";if(e.month===8&&e.day>=23||e.month===9&&e.day<=22)return\"virgo\";if(e.month===9&&e.day>=23||e.month===10&&e.day<=22)return\"libra\";if(e.month===10&&e.day>=23||e.month===11&&e.day<=21)return\"scorpio\";if(e.month===11&&e.day>=22||e.month===12&&e.day<=21)return\"sagittarius\";if(e.month===12&&e.day>=22||e.month===1&&e.day<=19)return\"capricorn\";if(e.month===1&&e.day>=20||e.month===2&&e.day<=18)return\"aquarius\";return\"pisces\"}function Z(e){let t=parseInt(e.startsWith(\"#\")?e.substring(1):e,16);return[t>>16&255,t>>8&255,t&255]}function c(e,t,r){if(r<0)r+=1;if(r>1)r-=1;if(r<0.16666666666666666)return e+(t-e)*6*r;if(r<0.5)return t;if(r<0.6666666666666666)return e+(t-e)*(0.6666666666666666-r)*6;return e}function y(e,t,r){let n,a,o;if(e/=360,t/=100,r/=100,t===0)n=a=o=r;else{let i=r<0.5?r*(1+t):r+t-r*t,u=2*r-i;n=c(u,i,e+0.3333333333333333),a=c(u,i,e),o=c(u,i,e-0.3333333333333333)}return n=Math.round(n*255),a=Math.round(a*255),o=Math.round(o*255),[n,a,o]}function x(e,t,r){e/=255,t/=255,r/=255;let n=Math.min(e,t,r),a=Math.max(e,t,r),o=a-n,i,u=a===0?0:o/a,s=a;if(a===n)i=0;else{if(a===e)i=(t-r)/o+(t<r?6:0);else if(a===t)i=(r-e)/o+2;else i=(e-t)/o+4;i/=6}return[i,u,s]}function J(e,t,r){return x(...y(e,t,r))}function S(e,t,r){let n=0,a=0,o=0,i=Math.floor(e*6),u=e*6-i,s=r*(1-t),m=r*(1-u*t),l=r*(1-(1-u)*t);switch(i%6){case 0:n=r,a=l,o=s;break;case 1:n=m,a=r,o=s;break;case 2:n=s,a=r,o=l;break;case 3:n=s,a=m,o=r;break;case 4:n=l,a=s,o=r;break;case 5:n=r,a=s,o=m;break}return n=Math.round(n*255),a=Math.round(a*255),o=Math.round(o*255),[n,a,o]}function w(e,t,r){e/=255,t/=255,r/=255;let n=Math.min(e,t,r),a=Math.max(e,t,r),o=a-n,i,u,s;if(o===0)i=0;else if(a===e)i=(t-r)/o%6;else if(a===t)i=(r-e)/o+2;else i=(e-t)/o+4;if(i=Math.round(i*60),i<0)i+=360;return s=(a+n)/2,u=o===0?0:o/(1-Math.abs(2*s-1)),u=+(u*100).toFixed(1),s=+(s*100).toFixed(1),[i,u,s]}function $(e,t,r){return w(...S(e,t,r))}function Q(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function X(e,t){let r=!1;for(let n=0,a=t.length-1;n<t.length;a=n++){let o=t[n][0],i=t[n][1],u=t[a][0],s=t[a][1];if(i>e[1]!=s>e[1]&&e[0]<(u-o)*(e[1]-i)/(s-i)+o)r=!r}return r}function Y(e,t){return t.hasSame(e,\"day\")}function ee(e){let t=new Uint32Array(1);t[0]=e;function r(){let o=t[0]=t[0]+1831565813|0,i=Math.imul(o^o>>>15,1|o);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}function n(o,i){return r()*(i-o)+o}function a(){return ee(r()*4294967296)}return{fork:a,next:r,nextBetween:n}}var ge=ee;function te(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as he,watch as ye}from\"vue\";function T(e,t,r=JSON.stringify,n=JSON.parse){let a=localStorage.getItem(e),o=a?n(a):t,i=he(o);return ye(i,(u)=>{if(u===null||u===void 0)localStorage.removeItem(e);else localStorage.setItem(e,r(u))},{deep:!0,immediate:!0}),i}function re(e,t){return T(e,t,(r)=>r??\"\",(r)=>r===\"\"?null:r)}async function ne(e){let t=document.createElement(\"iframe\");t.style.position=\"fixed\",t.style.top=\"-100dvh\",t.style.left=\"-100dvw\",t.style.width=\"1px\",t.style.height=\"1px\",document.body.appendChild(t);let r=t.contentDocument??t.contentWindow?.document;if(!r)throw document.body.removeChild(t),Error(\"Cannot print, no access to the framed document.\");r.documentElement.innerHTML=e;let n=Array.from(r.getElementsByTagName(\"img\"));await Promise.all(n.map((a)=>new Promise((o)=>{if(a.complete)o(void 0);else a.addEventListener(\"load\",o,{passive:!0}),a.addEventListener(\"error\",o,{passive:!0})}))),t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t)},1000)}function oe(e,t,r){let n=e.toString(16).padStart(2,\"0\"),a=t.toString(16).padStart(2,\"0\"),o=r.toString(16).padStart(2,\"0\");return`#${n}${a}${o}`}function ae(e,t,r){e.prototype[t]=r}function ie(e,t,r){Object.defineProperty(e,t,{value:r})}function ue(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function se(e){return new Promise((t)=>setTimeout(t,e))}var vt=\"✔\",Rt=\"✘\",It=\"—\",Bt=\"–\",Nt=()=>{return};export{se as waitFor,ue as viewTransition,ie as setObjectValue,ae as setObjectMethod,p as roundStep,x as rgbToHSV,w as rgbToHSL,oe as rgbToHEX,ne as printHtml,re as persistentStringRef,T as persistentRef,te as openUrl,ge as mulberry32,Y as isToday,X as isPointInPolygon,h as isNorthernHemisphere,Q as isHtmlElement,c as hueToRGB,S as hsvToRGB,$ as hsvToHSL,y as hslToRGB,J as hslToHSV,Z as hexToRGB,W as getZodiacSign,V as getWorkdayPeriod,K as getSeasonalMood,q as getSeason,O as getPrototypeChain,j as getMoonPhase,A as getDayPeriodRange,_ as getDayPeriod,H as getCircadianPhase,G as generateStepTicks,F as formatTime,E as formatPercentage,L as formatNumber,z as formatMonth,N as formatDateTime,B as formatDateFull,I as formatDate,b as downloadUrl,R as downloadString,g as downloadBlob,v as defineStore,P as debounce,D as countDecimals,C as clampWithStepPrecision,Nt as NOOP,Bt as NDASH,It as MDASH,Rt as CROSS,vt as CHECK};\n\n//# debugId=A9C7C67721EBAF2B64756E2164756E21\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 A=1;A<=7;++A)c.push(x.plus({day:A}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=E(()=>b(n).plus({month:1})),i=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:a,viewDatePrevious:i,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 a=P(e).year,i=[],f=a-a%t+P(o)*t;for(let l=0;l<t;++l)i.push(f+l);return i});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 Se,ref as Ae,unref as j,watchEffect as Ie}from\"vue\";function z(e){let t=0;return()=>{cancelAnimationFrame(t),t=requestAnimationFrame(e)}}import{Fragment as Te}from\"vue\";function B(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 a=we(s,o,r,n);if(!a){if(o===\"up\"||o===\"left\")a=n[s-1];if(o===\"down\"||o===\"right\")a=n[s+1]}return a}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((i,f)=>f===e||i.top+i.height>s.top?Number.MAX_SAFE_INTEGER:i.distance);break;case\"down\":r=o.map((i,f)=>f===e||i.top<s.top+s.height?Number.MAX_SAFE_INTEGER:i.distance);break;case\"left\":r=o.map((i,f)=>f===e||i.left+i.width>s.left?Number.MAX_SAFE_INTEGER:i.distance);break;case\"right\":r=o.map((i,f)=>f===e||i.left<s.left+s.width?Number.MAX_SAFE_INTEGER:i.distance);break}let a=r.indexOf(Math.min(...r));if(r[a]!==Number.MAX_SAFE_INTEGER)return n[a];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 V(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function q(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function W(e,t){if(!e.exposed||!(t in e.exposed))throw 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 G(...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 X{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 X;var Y=!globalThis.document;function Z(e,t,o){let n=Ae([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Se(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!j(t))return;!j(n).some((i)=>i.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function $(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as J,ref as Ne,watch as Ue}from\"vue\";function Q(e,t,o=!1){let n=Ne(J(e)?e.value:e),s=_e((r,a)=>({get(){return r(),n.value},set:Pe((i)=>{n.value=i,a()},t,o)}));if(J(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,a)=>{if(!s)return;s.addEventListener(t,o,n),a(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function ee(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 te(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let a=p(e);if(!a)return;let i=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);i.observe(a),r(()=>i.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),(i)=>{if(r(),!i)return;n=new MutationObserver(t),n.observe(i,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function a(){r(),s()}Xe(a)}import{DateTime as oe}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function ne(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=oe.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let a=r;if(oe.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(a))}),n}import{ref as I,unref as $e}from\"vue\";function re(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 se,unref as ae}from\"vue\";var et=0;function D(e=!1){let t=se(`focus-trap-${++et}`),o=se(!1);return Je(()=>w.add(ae(t),(n)=>o.value=n,e)),Qe(()=>w.remove(ae(t))),o}import{unref as tt,watch as ot}from\"vue\";function S(e,t){ot(e,(o,n,s)=>{if(!p(e)||tt(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function le(e,t={}){if(Y)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);S(e,n),ce(e,(a,i,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 a=p(e);if(r.value=!o,o||!a)return;let i=d(a);if(i.includes(document.activeElement))return;i[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 a=p(e),i=d(a),f=i.findIndex((u)=>u.classList.contains(\"is-active\")),l=i.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(a,i=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===a?0:-1),i&&l[a]?.focus()}function r(a){let i=p(e),f=d(i);if([\"Enter\",\" \"].includes(a.key))return;switch(o){case\"bidirectional\":it(a,i,f,s);break;case\"horizontal\":case\"vertical\":ct(a,i,t,o,f,s);break}}at(e,(a,i,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 a;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))a=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))a=1;else return;let i=R(t,a);if(i)r(s.indexOf(i));else if(o)r(a===1?0:s.length-1);e.preventDefault()}var an=\"#f8fafc\",cn=\"#f1f5f9\",ln=\"#e2e8f0\",fn=\"#cbd5e1\",pn=\"#94a3b8\",un=\"#64748b\",dn=\"#475569\",mn=\"#334155\",xn=\"#1e293b\",bn=\"#0f172a\",hn=\"#020617\",yn=\"#f9fafb\",Tn=\"#f3f4f6\",vn=\"#e5e7eb\",En=\"#d1d5db\",gn=\"#9ca3af\",wn=\"#6b7280\",Ln=\"#4b5563\",Mn=\"#374151\",Rn=\"#1f2937\",Fn=\"#111827\",kn=\"#030712\",Hn=\"#fafafa\",Dn=\"#f4f4f5\",Sn=\"#e4e4e7\",An=\"#d4d4d8\",In=\"#a1a1aa\",On=\"#71717a\",Cn=\"#52525b\",_n=\"#3f3f46\",Nn=\"#27272a\",Un=\"#18181b\",Pn=\"#09090b\",Kn=\"#fafafa\",zn=\"#f5f5f5\",Bn=\"#e5e5e5\",Vn=\"#d4d4d4\",qn=\"#a3a3a3\",Wn=\"#737373\",Gn=\"#525252\",Xn=\"#404040\",Yn=\"#262626\",jn=\"#171717\",Zn=\"#0a0a0a\",$n=\"#fafaf9\",Jn=\"#f5f5f4\",Qn=\"#e7e5e4\",er=\"#d6d3d1\",tr=\"#a8a29e\",or=\"#78716c\",nr=\"#57534e\",rr=\"#44403c\",sr=\"#292524\",ar=\"#1c1917\",ir=\"#0c0a09\",cr=\"#fef2f2\",lr=\"#fee2e2\",fr=\"#fecaca\",pr=\"#fca5a5\",ur=\"#f87171\",dr=\"#ef4444\",mr=\"#dc2626\",xr=\"#b91c1c\",br=\"#991b1b\",hr=\"#7f1d1d\",yr=\"#450a0a\",Tr=\"#fff7ed\",vr=\"#ffedd5\",Er=\"#fed7aa\",gr=\"#fdba74\",wr=\"#fb923c\",Lr=\"#f97316\",Mr=\"#ea580c\",Rr=\"#c2410c\",Fr=\"#9a3412\",kr=\"#7c2d12\",Hr=\"#431407\",Dr=\"#fffbeb\",Sr=\"#fef3c7\",Ar=\"#fde68a\",Ir=\"#fcd34d\",Or=\"#fbbf24\",Cr=\"#f59e0b\",_r=\"#d97706\",Nr=\"#b45309\",Ur=\"#92400e\",Pr=\"#78350f\",Kr=\"#451a03\",zr=\"#fefce8\",Br=\"#fef9c3\",Vr=\"#fef08a\",qr=\"#fde047\",Wr=\"#facc15\",Gr=\"#eab308\",Xr=\"#ca8a04\",Yr=\"#a16207\",jr=\"#854d0e\",Zr=\"#713f12\",$r=\"#422006\",Jr=\"#f7fee7\",Qr=\"#ecfccb\",es=\"#d9f99d\",ts=\"#bef264\",os=\"#a3e635\",ns=\"#84cc16\",rs=\"#65a30d\",ss=\"#4d7c0f\",as=\"#3f6212\",is=\"#365314\",cs=\"#1a2e05\",ls=\"#f0fdf4\",fs=\"#dcfce7\",ps=\"#bbf7d0\",us=\"#86efac\",ds=\"#4ade80\",ms=\"#22c55e\",xs=\"#16a34a\",bs=\"#15803d\",hs=\"#166534\",ys=\"#14532d\",Ts=\"#052e16\",vs=\"#ecfdf5\",Es=\"#d1fae5\",gs=\"#a7f3d0\",ws=\"#6ee7b7\",Ls=\"#34d399\",Ms=\"#10b981\",Rs=\"#059669\",Fs=\"#047857\",ks=\"#065f46\",Hs=\"#064e3b\",Ds=\"#022c22\",Ss=\"#f0fdfa\",As=\"#ccfbf1\",Is=\"#99f6e4\",Os=\"#5eead4\",Cs=\"#2dd4bf\",_s=\"#14b8a6\",Ns=\"#0d9488\",Us=\"#0f766e\",Ps=\"#115e59\",Ks=\"#134e4a\",zs=\"#042f2e\",Bs=\"#ecfeff\",Vs=\"#cffafe\",qs=\"#a5f3fc\",Ws=\"#67e8f9\",Gs=\"#22d3ee\",Xs=\"#06b6d4\",Ys=\"#0891b2\",js=\"#0e7490\",Zs=\"#155e75\",$s=\"#164e63\",Js=\"#083344\",Qs=\"#f0f9ff\",ea=\"#e0f2fe\",ta=\"#bae6fd\",oa=\"#7dd3fc\",na=\"#38bdf8\",ra=\"#0ea5e9\",sa=\"#0284c7\",aa=\"#0369a1\",ia=\"#075985\",ca=\"#0c4a6e\",la=\"#082f49\",fa=\"#eff6ff\",pa=\"#dbeafe\",ua=\"#bfdbfe\",da=\"#93c5fd\",ma=\"#60a5fa\",xa=\"#3b82f6\",ba=\"#2563eb\",ha=\"#1d4ed8\",ya=\"#1e40af\",Ta=\"#1e3a8a\",va=\"#172554\",Ea=\"#eef2ff\",ga=\"#e0e7ff\",wa=\"#c7d2fe\",La=\"#a5b4fc\",Ma=\"#818cf8\",Ra=\"#6366f1\",Fa=\"#4f46e5\",ka=\"#4338ca\",Ha=\"#3730a3\",Da=\"#312e81\",Sa=\"#1e1b4b\",Aa=\"#f5f3ff\",Ia=\"#ede9fe\",Oa=\"#ddd6fe\",Ca=\"#c4b5fd\",_a=\"#a78bfa\",Na=\"#8b5cf6\",Ua=\"#7c3aed\",Pa=\"#6d28d9\",Ka=\"#5b21b6\",za=\"#4c1d95\",Ba=\"#2e1065\",Va=\"#faf5ff\",qa=\"#f3e8ff\",Wa=\"#e9d5ff\",Ga=\"#d8b4fe\",Xa=\"#c084fc\",Ya=\"#a855f7\",ja=\"#9333ea\",Za=\"#7e22ce\",$a=\"#6b21a8\",Ja=\"#581c87\",Qa=\"#3b0764\",ei=\"#fdf4ff\",ti=\"#fae8ff\",oi=\"#f5d0fe\",ni=\"#f0abfc\",ri=\"#e879f9\",si=\"#d946ef\",ai=\"#c026d3\",ii=\"#a21caf\",ci=\"#86198f\",li=\"#701a75\",fi=\"#4a044e\",pi=\"#fdf2f8\",ui=\"#fce7f3\",di=\"#fbcfe8\",mi=\"#f9a8d4\",xi=\"#f472b6\",bi=\"#ec4899\",hi=\"#db2777\",yi=\"#be185d\",Ti=\"#9d174d\",vi=\"#831843\",Ei=\"#500724\",gi=\"#fff1f2\",wi=\"#ffe4e6\",Li=\"#fecdd3\",Mi=\"#fda4af\",Ri=\"#fb7185\",Fi=\"#f43f5e\",ki=\"#e11d48\",Hi=\"#be123c\",Di=\"#9f1239\",Si=\"#881337\",Ai=\"#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)},getSSRProps(){return{}}},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)},getSSRProps(){return{}}},C=new WeakMap;export{Pn as zinc950,Un as zinc900,Nn as zinc800,_n as zinc700,Cn as zinc600,On as zinc500,Hn as zinc50,In as zinc400,An as zinc300,Sn as zinc200,Dn as zinc100,$r as yellow950,Zr as yellow900,jr as yellow800,Yr as yellow700,Xr as yellow600,Gr as yellow500,zr as yellow50,Wr as yellow400,qr as yellow300,Vr as yellow200,Br as yellow100,g as wrapFocus,G as warn,Ba as violet950,za as violet900,Ka as violet800,Pa as violet700,Ua as violet600,Na as violet500,Aa as violet50,_a as violet400,Ca as violet300,Oa as violet200,Ia as violet100,ft as vHeightTransition,lt as vFocusTrap,re as useScrollPosition,ne as useRemembered,H as useMutationObserver,ee as useInterval,te as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,S as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,Q as useDebouncedRef,$ as useComponentId,Z as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,zs as teal950,Ks as teal900,Ps as teal800,Us as teal700,Ns as teal600,_s as teal500,Ss as teal50,Cs as teal400,Os as teal300,Is as teal200,As as teal100,ir as stone950,ar as stone900,sr as stone800,rr as stone700,nr as stone600,or as stone500,$n as stone50,tr as stone400,er as stone300,Qn as stone200,Jn as stone100,hn as slate950,bn as slate900,xn as slate800,mn as slate700,dn as slate600,un as slate500,an as slate50,pn as slate400,fn as slate300,ln as slate200,cn as slate100,la as sky950,ca as sky900,ia as sky800,aa as sky700,sa as sky600,ra as sky500,Qs as sky50,na as sky400,oa as sky300,ta as sky200,ea as sky100,Ai as rose950,Si as rose900,Di as rose800,Hi as rose700,ki as rose600,Fi as rose500,gi as rose50,Ri as rose400,Mi as rose300,Li as rose200,wi as rose100,yr as red950,hr as red900,br as red800,xr as red700,mr as red600,dr as red500,cr as red50,ur as red400,pr as red300,fr as red200,lr as red100,Qa as purple950,Ja as purple900,$a as purple800,Za as purple700,ja as purple600,Ya as purple500,Va as purple50,Xa as purple400,Ga as purple300,Wa as purple200,qa as purple100,Ei as pink950,vi as pink900,Ti as pink800,yi as pink700,hi as pink600,bi as pink500,pi as pink50,xi as pink400,mi as pink300,di as pink200,ui as pink100,Hr as orange950,kr as orange900,Fr as orange800,Rr as orange700,Mr as orange600,Lr as orange500,Tr as orange50,wr as orange400,gr as orange300,Er as orange200,vr as orange100,Zn as neutral950,jn as neutral900,Yn as neutral800,Xn as neutral700,Gn as neutral600,Wn as neutral500,Kn as neutral50,qn as neutral400,Vn as neutral300,Bn as neutral200,zn as neutral100,cs as lime950,is as lime900,as as lime800,ss as lime700,rs as lime600,ns as lime500,Jr as lime50,os as lime400,ts as lime300,es as lime200,Qr as lime100,Y as isSSR,Sa as indigo950,Da as indigo900,Ha as indigo800,ka as indigo700,Fa as indigo600,Ra as indigo500,Ea as indigo50,Ma as indigo400,La as indigo300,wa as indigo200,ga as indigo100,Ts as green950,ys as green900,hs as green800,bs as green700,xs as green600,ms as green500,ls as green50,ds as green400,us as green300,ps as green200,fs as green100,kn as gray950,Fn as gray900,Rn as gray800,Mn as gray700,Ln as gray600,wn as gray500,yn as gray50,gn as gray400,En as gray300,vn as gray200,Tn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,W as getExposedRef,q as getComponentProps,V as getComponentName,M as getBidirectionalFocusElement,fi as fuchsia950,li as fuchsia900,ci as fuchsia800,ii as fuchsia700,ai as fuchsia600,si as fuchsia500,ei as fuchsia50,ri as fuchsia400,ni as fuchsia300,oi as fuchsia200,ti as fuchsia100,B as flattenVNodeTree,Ds as emerald950,Hs as emerald900,ks as emerald800,Fs as emerald700,Rs as emerald600,Ms as emerald500,vs as emerald50,Ls as emerald400,ws as emerald300,gs as emerald200,Es as emerald100,Js as cyan950,$s as cyan900,Zs as cyan800,js as cyan700,Ys as cyan600,Xs as cyan500,Bs as cyan50,Gs as cyan400,Ws as cyan300,qs as cyan200,Vs as cyan100,va as blue950,Ta as blue900,ya as blue800,ha as blue700,ba as blue600,xa as blue500,fa as blue50,ma as blue400,da as blue300,ua as blue200,pa as blue100,z as animationFrameDebounce,Kr as amber950,Pr as amber900,Ur as amber800,Nr as amber700,_r as amber600,Cr as amber500,Dr as amber50,Or as amber400,Ir as amber300,Ar as amber200,Sr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=101630D55D17E66A64756E2164756E21\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 { isSSR, unrefTemplateElement, useEventListener, 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 !isSSR && useEventListener(ref(window), 'resize', () => unref(isOpen) && reposition());\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 window.addEventListener('scroll', onLeave, {capture: true});\n });\n\n onUnmounted(() => {\n const elm = instance.proxy!.$el;\n elm.removeEventListener('mouseenter', onHover);\n elm.removeEventListener('mouseleave', onLeave);\n window.removeEventListener('scroll', 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 + margin > 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(() => {\n requestAnimationFrame(resize);\n requestAnimationFrame(reposition);\n });\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 :tabindex=\"tabindex\"\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 isCondensed && $style.isCondensed,\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 isCondensed?: 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, useFocusTrap } from '@flux-ui/internals';\nimport type { Component, RenderFunction, SetupContext, Slots, VNode } from 'vue';\nimport { Comment, h, onUnmounted, ref, Teleport, watch } from 'vue';\nimport { registerDialog, useFluxStore } from '$flux/data';\nimport $style from '$flux/css/component/Overlay.module.scss';\n\ntype Emit = SetupContext<['close']>['emit'];\ntype Props = {\n readonly isCloseable?: boolean;\n readonly viewKey?: string;\n};\n\nconst TARGET_SELECTOR = `.${$style.overlayProvider.replaceAll(' ', '.')}`;\n\nexport default function (attrs: object, props: Props, emit: Emit, slots: Slots, className: string, transition: Component): RenderFunction {\n let unregister: Function | null = null;\n let zIndex = 0;\n\n const dialogRef = ref<HTMLElement>();\n\n useFocusTrap(dialogRef);\n\n onUnmounted(() => {\n unregister?.();\n });\n\n watch(dialogRef, (dialog, _, onCleanup) => {\n if (!dialog) {\n return;\n }\n\n dialog.addEventListener('keydown', onKeyDown, {passive: true});\n dialog.focus();\n\n onCleanup(() => {\n dialog.removeEventListener('keydown', onKeyDown);\n });\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (evt.key !== 'Escape' || !unregister || !props.isCloseable) {\n return;\n }\n\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 let content: VNode | undefined;\n\n if (isVisible) {\n if (!unregister) {\n [zIndex, unregister] = registerDialog();\n }\n\n content = h('div', {\n key: props.viewKey,\n ref: dialogRef,\n class: [className, zIndex === dialogCount && $style.isCurrent],\n style: {\n zIndex: zIndex + 1000\n },\n tabindex: 0\n }, children);\n } else {\n unregister?.();\n unregister = null;\n }\n\n return h(Teleport, {defer: true, disabled: !content, to: TARGET_SELECTOR}, [\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 <slot name=\"filter\" v-bind=\"{page, perPage, items: limitedItems, total}\"/>\n\n <FluxTableRow>\n <slot\n name=\"header\"\n v-bind=\"{page, perPage, items: limitedItems, 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, items: limitedItems, 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, items: limitedItems, 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=\"(item, index) of limitedItems\"\n :key=\"uniqueKey ? item[uniqueKey] : index\">\n <template v-for=\"(_, name) of slots\">\n <slot\n v-if=\"!IGNORED_SLOTS.includes(name as string)\"\n v-bind=\"{index, item, items: limitedItems, page, perPage, 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[] = ['filter', '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 items,\n perPage\n } = defineProps<{\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 items: T[];\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 item: T;\n readonly items: T[];\n readonly total: number;\n }) => VNode;\n\n filter(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n footer(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n header(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n pagination(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n colgroups(): VNode;\n }>();\n\n const limitedItems = computed(() => items.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 isCondensed && $style.isCondensed,\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 readonly isCondensed?: 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 { isSSR } from '@flux-ui/internals';\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 if (isSSR) {\n return [];\n }\n\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.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 <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 :class=\"$style.overlayProvider\">\n <div :class=\"$style.overlayShade\"/>\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</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFluxStore } from '$flux/data';\n import FluxAlert from './FluxAlert.vue';\n import FluxConfirm from './FluxConfirm.vue';\n import FluxOverlay from './FluxOverlay.vue';\n import FluxPrompt from './FluxPrompt.vue';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {alerts, confirms, prompts} = useFluxStore();\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\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=\"position >= 1 ? $style.progressBarValueComplete : $style.progressBarValueIncomplete\"\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 <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 <FluxOverlayProvider/>\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 FluxOverlayProvider from './FluxOverlayProvider.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 {inertMain} = 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":["icon","iconName","c","tooltip","k","root","state","d","p","bName","bi","fromPos","toPos","si","imask","C","r","D","G","M","Z","S","w","$","Q","ee","ge","Symbol","objectProto","nativeObjectToString","symToStringTag","tag","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsApos","_","E","b","h","y","x","L","me","xe","he","be","P","ye","Te","ve","Me","Re","ke","Fe","Ae","De","Se","j","Ie","Ce","Oe","Ne","J","_e","Ue","Ke","Ve","ze","Be","qe","We","Ge","Ye","Xe","se","Je","ae","Qe","ot","tt","ie","ce","at","warn","_createElementBlock","_normalizeClass","_unref","$style","_normalizeStyle","_openBlock","_Fragment","_renderList","_createBlock","_mergeProps","$attrs","$emit","_renderSlot","_createElementVNode","FluxPressable","FluxSpinner","FluxIcon","FluxButton","groups","isLoading","_createVNode","isClosing","isOpening","isSSR","useEventListener","useFocusTrap","close","pane","unrefTemplateElement","open","toggle","isOpen","_normalizeProps","_guardReactiveProps","FluxPane","_resolveDynamicComponent","tooltipId","_useSlots","FluxStack","FluxSpacer","FluxFlyout","FluxButtonGroup","FluxSecondaryButton","FluxTooltip","FluxDestructiveButton","_withCtx","FluxPaneBody","FluxButtonStack","useFocusZone","useComponentId","tick","mulberry32","polygons","isHtmlElement","_Transition","FluxFadeTransition","purple600","orange600","pink600","flattenVNodeTree","useMutationObserver","_useModel","modelValue","FluxMenuGroup","FluxFormInput","FluxMenuItem","FluxMenuSubHeader","isKeyboardAction","useClickOutside","id","highlightedIndex","isPopupOpen","Anchor","FluxTag","_Teleport","AnchorPopup","FluxMenu","index","generateStepTicks","ticks","FluxTicks","content","getComponentName","props","getComponentProps","formatNumber","FluxSeparator","FilterItem","useCalendar","useCalendarMonthSwitcher","useCalendarYearSwitcher","viewDate","dates","FluxActionBar","_hoisted_1","$styleDatePicker","_hoisted_2","FluxWindowTransition","_toDisplayString","FluxAvatar","isDragging","roundStep","CoordinatePickerThumb","FluxFormFieldAddition","countDecimals","clampWithStepPrecision","SliderBase","SliderTrack","SliderThumb","g","hsvToRGB","value","hsvToHSL","hslToHSV","rgbToHSV","hexToRGB","hslToRGB","hsv","rgbToHEX","rgbToHSL","CoordinatePicker","FluxFormSlider","FluxFormField","FluxColorPicker","FluxPrimaryButton","SelectBase","FluxPaginationButton","limit","FluxPagination","FluxFormSelect","isBordered","isHoverable","isSeparated","isStriped","FluxTableRow","FluxTableCell","_hoisted_3","FluxTable","FluxPaginationBar","isDisabled","isSelected","FluxVerticalWindowTransition","isDraggingOver","FluxAutoHeightTransition","expandable","getExposedRef","useInterval","fader","current","filters","FluxWindow","_createSlots","filter","FluxDatePicker","FilterOptionBase","useDebouncedRef","options","FluxFormColumn","_createTextVNode","useInView","inView","aspectRatio","FluxPaneFooter","FluxDisabled","localValue","FluxFormInputGroup","isDraggingLower","isDraggingUpper","selected","values","ai","FluxFocalPointImage","FluxRemove","FluxDropZone","_TransitionGroup","FluxGalleryItem","FluxOverlayTransition","FluxPaneHeader","FluxOverlay","FluxAlert","FluxConfirm","FluxPrompt","FluxAutoGrid","FluxGridPattern","FluxAnimatedColors","formatPercentage","FluxLegend","FluxProgressBar","actionLabel","FluxAction","snackbars","snackbar","FluxSnackbar","FluxTooltipTransition","FluxOverlayProvider","FluxSnackbarProvider","FluxTooltipProvider","FluxSlideOverTransition","FluxStepperSteps","FluxDynamicView","tabBar","tab","tabs","FluxTabBar","FluxTabBarItem","FluxActions"],"mappings":"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AAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAC1B,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,K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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,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]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.bun/clsx@2.1.1/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/.bun/imask@7.6.1/node_modules/imask/esm/core/utils.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/action-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/holder.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/factory.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/input-history.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/controls/input.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/change-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/base.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/.bun/imask@7.6.1/node_modules/imask/esm/masked/regexp.js","../../../node_modules/.bun/imask@7.6.1/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/.bun/@basmilius+utils@2.13.0+1fb4c65d43e298b9/node_modules/@basmilius/utils/dist/index.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/toString.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_baseSlice.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_castSlice.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicode.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_asciiToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_unicodeToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_stringToArray.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_createCaseFirst.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/upperFirst.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/capitalize.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_arrayReduce.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyOf.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_deburrLetter.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/deburr.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_asciiWords.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicodeWord.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_unicodeWords.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/words.js","../../../node_modules/.bun/lodash-es@4.17.21/node_modules/lodash-es/_createCompounder.js","../../../node_modules/.bun/lodash-es@4.17.21/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/FluxPaneHeader.vue","../src/component/FluxAlert.vue","../src/component/FluxConfirm.vue","../src/component/FluxPrompt.vue","../src/component/FluxOverlayProvider.vue","../src/component/FluxPaneDeck.vue","../src/component/FluxPaneGroup.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/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 as FluxIconName] = 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(): [number, 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(): [number, VoidFunction] {\n return [\n ++state.dialogCount,\n () => --state.dialogCount\n ];\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 p(e,t){return Math.round(e/t)*t}function C(e,t,r,n){return Math.max(t,Math.min(r,+p(e*(r-t)+t,n).toPrecision(4)))}function D(e){return e.toString().split(\".\")[1]?.length??0}function P(e,t,r){let n=[],a=[],o=null;return(...i)=>{return clearTimeout(o),o=setTimeout(()=>{try{let u=e.apply(r,i);n.forEach((s)=>s(u))}catch(u){a.forEach((s)=>s(u))}n=[],a=[]},t),new Promise((u,s)=>{n.push(u),a.push(s)})}}import{defineStore as me,storeToRefs as le}from\"pinia\";function v(e,t){let r=me(e,t);return()=>{let n=r(),a=Object.getOwnPropertyNames(n),o=le(n),i={};for(let u of a){if(u.startsWith(\"$\")||u.startsWith(\"_\"))continue;if(u in o){i[u]=o[u];continue}i[u]=n[u]}return i}}function b(e,t){let r=document.createElement(\"a\");r.download=t,r.href=e,document.body.appendChild(r),r.click(),document.body.removeChild(r)}function g(e,t){let r=URL.createObjectURL(e);b(r,t),URL.revokeObjectURL(r)}function R(e,t,r){let n=new Blob([e],{type:r});g(n,t)}function I(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function B(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function N(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function z(e){return e.toLocaleString({month:\"long\"})}function L(e,t=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:t,minimumFractionDigits:t}).format(e)}function E(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function F(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function G(e,t,r=5,n){let a=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],o=[0.1,0.5,...a],i=t-e,u=n?o:a;for(let f of u){let k=Math.floor(i/f),d=[];if(k>r+1)continue;d.push(e);for(let M=1;M<k;++M)d.push(M*f+e);return d.push(t),d}let s=i.toString().length-1,m=Math.pow(10,s),l=[];for(let f=0;f<i;f+=m)l.push(f+e);return l}function H(e){if(e.hour>=6&&e.hour<10)return\"alert\";if(e.hour>=10&&e.hour<18)return\"focused\";if(e.hour>=18&&e.hour<22)return\"wind_down\";return\"sleep\"}function _(e){if(e.hour>=5&&e.hour<12)return\"morning\";if(e.hour>=12&&e.hour<17)return\"afternoon\";if(e.hour>=17&&e.hour<22)return\"evening\";return\"night\"}import{DateTime as fe}from\"luxon\";function A(e){let t=fe.now();switch(e){case\"afternoon\":return[t.set({hour:12,minute:0,second:0,millisecond:0}),t.set({hour:17,minute:0,second:0,millisecond:0})];case\"evening\":return[t.set({hour:17,minute:0,second:0,millisecond:0}),t.set({hour:22,minute:0,second:0,millisecond:0})];case\"morning\":return[t.set({hour:5,minute:0,second:0,millisecond:0}),t.set({hour:12,minute:0,second:0,millisecond:0})];case\"night\":return[t.set({hour:22,minute:0,second:0,millisecond:0}),t.set({hour:22,minute:0,second:0,millisecond:0}).plus({hours:7})]}}function j(e){let t=e.year%100;if(t%=19,t>9)t-=19;if(t=t*11%30+e.month+e.day,e.month<3)t+=2;if(e.year<2000)t-=4;else t-=8.3;t=Math.floor(t+0.5)%30;let n=(t<0?t+30:t)/29.530588853;if(n<0.03||n>0.97)return\"new_moon\";if(n<0.22)return\"waxing_crescent\";if(n<0.28)return\"first_quarter\";if(n<0.47)return\"waxing_gibbous\";if(n<0.53)return\"full_moon\";if(n<0.72)return\"waning_gibbous\";if(n<0.78)return\"last_quarter\";return\"waning_crescent\"}function O(e){let t={};do{if(e.name===\"\")break;for(let[r,n]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(r))continue;if(!n.get&&!n.set)continue;t[r]=n}}while(e=Object.getPrototypeOf(e));return t}var ce={af:[\"Afghanistan\",33,65],ax:[\"Åland Islands\",60.116667,19.9],al:[\"Albania\",41,20],dz:[\"Algeria\",28,3],as:[\"American Samoa\",-14.3333,-170],ad:[\"Andorra\",42.5,1.6],ao:[\"Angola\",-12.5,18.5],ai:[\"Anguilla\",18.25,-63.1667],aq:[\"Antarctica\",-90,0],ag:[\"Antigua and Barbuda\",17.05,-61.8],ar:[\"Argentina\",-34,-64],am:[\"Armenia\",40,45],aw:[\"Aruba\",12.5,-69.9667],au:[\"Australia\",-27,133],at:[\"Austria\",47.3333,13.3333],az:[\"Azerbaijan\",40.5,47.5],bs:[\"Bahamas\",24.25,-76],bh:[\"Bahrain\",26,50.55],bd:[\"Bangladesh\",24,90],bb:[\"Barbados\",13.1667,-59.5333],by:[\"Belarus\",53,28],be:[\"Belgium\",50.8333,4],bz:[\"Belize\",17.25,-88.75],bj:[\"Benin\",9.5,2.25],bm:[\"Bermuda\",32.3333,-64.75],bt:[\"Bhutan\",27.5,90.5],bo:[\"Bolivia\",-17,-65],bq:[\"Bonaire, Sint Eustatius and Saba\",12.183333,-68.233333],ba:[\"Bosnia and Herzegovina\",44,18],bw:[\"Botswana\",-22,24],bv:[\"Bouvet Island\",-54.4333,3.4],br:[\"Brazil\",-10,-55],io:[\"British Indian Ocean Territory\",-6,71.5],bn:[\"Brunei\",4.5,114.6667],bg:[\"Bulgaria\",43,25],bf:[\"Burkina Faso\",13,-2],bi:[\"Burundi\",-3.5,30],kh:[\"Cambodia\",13,105],cm:[\"Cameroon\",6,12],ca:[\"Canada\",60,-95],cv:[\"Cape Verde\",16,-24],ky:[\"Cayman Islands\",19.5,-80.5],cf:[\"Central African Republic\",7,21],td:[\"Chad\",15,19],cl:[\"Chile\",-30,-71],cn:[\"China\",35,105],cx:[\"Christmas Island\",-10.5,105.6667],cc:[\"Cocos (Keeling) Islands\",-12.5,96.8333],co:[\"Colombia\",4,-72],km:[\"Comoros\",-12.1667,44.25],cd:[\"Congo, Democratic Republic of the\",0,25],cg:[\"Congo\",-1,15],ck:[\"Cook Islands\",-21.2333,-159.7667],cr:[\"Costa Rica\",10,-84],ci:[\"Côte d'Ivoire\",8,-5],hr:[\"Croatia\",45.1667,15.5],cu:[\"Cuba\",21.5,-80],cw:[\"Curaçao\",12.166667,-68.966667],cy:[\"Cyprus\",35,33],cz:[\"Czech Republic\",49.75,15.5],dk:[\"Denmark\",56,10],dj:[\"Djibouti\",11.5,43],dm:[\"Dominica\",15.4167,-61.3333],do:[\"Dominican Republic\",19,-70.6667],ec:[\"Ecuador\",-2,-77.5],eg:[\"Egypt\",27,30],sv:[\"El Salvador\",13.8333,-88.9167],gq:[\"Equatorial Guinea\",2,10],er:[\"Eritrea\",15,39],ee:[\"Estonia\",59,26],et:[\"Ethiopia\",8,38],fk:[\"Falkland Islands (Malvinas)\",-51.75,-59],fo:[\"Faroe Islands\",62,-7],fj:[\"Fiji\",-18,175],fi:[\"Finland\",64,26],fr:[\"France\",46,2],gf:[\"French Guiana\",4,-53],pf:[\"French Polynesia\",-15,-140],tf:[\"French Southern Territories\",-43,67],ga:[\"Gabon\",-1,11.75],gm:[\"Gambia\",13.4667,-16.5667],ge:[\"Georgia\",42,43.5],de:[\"Germany\",51,9],gh:[\"Ghana\",8,-2],gi:[\"Gibraltar\",36.1833,-5.3667],gr:[\"Greece\",39,22],gl:[\"Greenland\",72,-40],gd:[\"Grenada\",12.1167,-61.6667],gp:[\"Guadeloupe\",16.25,-61.5833],gu:[\"Guam\",13.4667,144.7833],gt:[\"Guatemala\",15.5,-90.25],gg:[\"Guernsey\",49.5,-2.56],gw:[\"Guinea-Bissau\",12,-15],gn:[\"Guinea\",11,-10],gy:[\"Guyana\",5,-59],ht:[\"Haiti\",19,-72.4167],hm:[\"Heard Island and McDonald Islands\",-53.1,72.5167],va:[\"Holy See\",41.9,12.45],hn:[\"Honduras\",15,-86.5],hk:[\"Hong Kong\",22.25,114.1667],hu:[\"Hungary\",47,20],is:[\"Iceland\",65,-18],in:[\"India\",20,77],id:[\"Indonesia\",-5,120],ir:[\"Iran\",32,53],iq:[\"Iraq\",33,44],ie:[\"Ireland\",53,-8],im:[\"Isle of Man\",54.23,-4.55],il:[\"Israel\",31.5,34.75],it:[\"Italy\",42.8333,12.8333],jm:[\"Jamaica\",18.25,-77.5],jp:[\"Japan\",36,138],je:[\"Jersey\",49.21,-2.13],jo:[\"Jordan\",31,36],kz:[\"Kazakhstan\",48,68],ke:[\"Kenya\",1,38],ki:[\"Kiribati\",1.4167,173],kp:[\"Korea, North\",40,127],kr:[\"Korea, South\",37,127.5],xk:[\"Kosovo\",42.583333,21],kw:[\"Kuwait\",29.3375,47.6581],kg:[\"Kyrgyzstan\",41,75],la:[\"Laos\",18,105],lv:[\"Latvia\",57,25],lb:[\"Lebanon\",33.8333,35.8333],ls:[\"Lesotho\",-29.5,28.5],lr:[\"Liberia\",6.5,-9.5],ly:[\"Libya\",25,17],li:[\"Liechtenstein\",47.1667,9.5333],lt:[\"Lithuania\",56,24],lu:[\"Luxembourg\",49.75,6.1667],mo:[\"Macao\",22.1667,113.55],mk:[\"North Macedonia\",41.8333,22],mg:[\"Madagascar\",-20,47],mw:[\"Malawi\",-13.5,34],my:[\"Malaysia\",2.5,112.5],mv:[\"Maldives\",3.25,73],ml:[\"Mali\",17,-4],mt:[\"Malta\",35.8333,14.5833],mh:[\"Marshall Islands\",9,168],mq:[\"Martinique\",14.6667,-61],mr:[\"Mauritania\",20,-12],mu:[\"Mauritius\",-20.2833,57.55],yt:[\"Mayotte\",-12.8333,45.1667],mx:[\"Mexico\",23,-102],fm:[\"Micronesia\",6.9167,158.25],md:[\"Moldova\",47,29],mc:[\"Monaco\",43.7333,7.4],mn:[\"Mongolia\",46,105],me:[\"Montenegro\",42,19],ms:[\"Montserrat\",16.75,-62.2],ma:[\"Morocco\",32,-5],mz:[\"Mozambique\",-18.25,35],mm:[\"Myanmar\",22,98],na:[\"Namibia\",-22,17],nr:[\"Nauru\",-0.5333,166.9167],np:[\"Nepal\",28,84],nl:[\"Netherlands\",52.5,5.75],nc:[\"New Caledonia\",-21.5,165.5],nz:[\"New Zealand\",-41,174],ni:[\"Nicaragua\",13,-85],ne:[\"Niger\",16,8],ng:[\"Nigeria\",10,8],nu:[\"Niue\",-19.0333,-169.8667],nf:[\"Norfolk Island\",-29.0333,167.95],mp:[\"Northern Mariana Islands\",15.2,145.75],no:[\"Norway\",62,10],om:[\"Oman\",21,57],pk:[\"Pakistan\",30,70],pw:[\"Palau\",7.5,134.5],ps:[\"Palestine\",32,35.25],pa:[\"Panama\",9,-80],pg:[\"Papua New Guinea\",-6,147],py:[\"Paraguay\",-23,-58],pe:[\"Peru\",-10,-76],ph:[\"Philippines\",13,122],pn:[\"Pitcairn\",-24.7,-127.4],pl:[\"Poland\",52,20],pt:[\"Portugal\",39.5,-8],pr:[\"Puerto Rico\",18.25,-66.5],qa:[\"Qatar\",25.5,51.25],re:[\"Réunion\",-21.1,55.6],ro:[\"Romania\",46,25],ru:[\"Russia\",60,100],rw:[\"Rwanda\",-2,30],bl:[\"Saint Barthélemy\",17.897728,-62.834244],sh:[\"Saint Helena\",-15.9333,-5.7],kn:[\"Saint Kitts and Nevis\",17.3333,-62.75],lc:[\"Saint Lucia\",13.8833,-61.1333],mf:[\"Saint Martin\",18.075278,-63.06],pm:[\"Saint Pierre and Miquelon\",46.8333,-56.3333],vc:[\"Saint Vincent and the Grenadines\",13.25,-61.2],ws:[\"Samoa\",-13.5833,-172.3333],sm:[\"San Marino\",43.7667,12.4167],st:[\"Sao Tome and Principe\",1,7],sa:[\"Saudi Arabia\",25,45],sn:[\"Senegal\",14,-14],rs:[\"Serbia\",44,21],sc:[\"Seychelles\",-4.5833,55.6667],sl:[\"Sierra Leone\",8.5,-11.5],sg:[\"Singapore\",1.3667,103.8],sx:[\"Sint Maarten\",18.033333,-63.05],sk:[\"Slovakia\",48.6667,19.5],si:[\"Slovenia\",46,15],sb:[\"Solomon Islands\",-8,159],so:[\"Somalia\",10,49],za:[\"South Africa\",-29,24],gs:[\"South Georgia and the South Sandwich Islands\",-54.5,-37],ss:[\"South Sudan\",8,30],es:[\"Spain\",40,-4],lk:[\"Sri Lanka\",7,81],sd:[\"Sudan\",15,30],sr:[\"Suriname\",4,-56],sj:[\"Svalbard and Jan Mayen\",78,20],sz:[\"Swaziland\",-26.5,31.5],se:[\"Sweden\",62,15],ch:[\"Switzerland\",47,8],sy:[\"Syria\",35,38],tw:[\"Taiwan\",23.5,121],tj:[\"Tajikistan\",39,71],tz:[\"Tanzania\",-6,35],th:[\"Thailand\",15,100],tl:[\"Timor-Leste\",-8.55,125.5167],tg:[\"Togo\",8,1.1667],tk:[\"Tokelau\",-9,-172],to:[\"Tonga\",-20,-175],tt:[\"Trinidad and Tobago\",11,-61],tn:[\"Tunisia\",34,9],tr:[\"Turkey\",39,35],tm:[\"Turkmenistan\",40,60],tc:[\"Turks and Caicos Islands\",21.75,-71.5833],tv:[\"Tuvalu\",-8,178],ug:[\"Uganda\",1,32],ua:[\"Ukraine\",49,32],ae:[\"United Arab Emirates\",24,54],gb:[\"United Kingdom\",54,-2],um:[\"United States Minor Outlying Islands\",19.2833,166.6],us:[\"United States\",38,-97],uy:[\"Uruguay\",-33,-56],uz:[\"Uzbekistan\",41,64],vu:[\"Vanuatu\",-16,167],ve:[\"Venezuela\",8,-66],vn:[\"Vietnam\",16,106],vg:[\"Virgin Islands, British\",18.5,-64.5],vi:[\"Virgin Islands, U.S.\",18.3333,-64.8333],wf:[\"Wallis and Futuna\",-13.3,-176.2],eh:[\"Western Sahara\",24.5,-13],ye:[\"Yemen\",15,48],zm:[\"Zambia\",-15,30],zw:[\"Zimbabwe\",-20,30]},de=ce;function U(e){return de[e]??null}function h(e){let t=U(e);if(!t)return null;let[,r]=t;return r>=0}var pe={autumn:[9,10,11],spring:[3,4,5],summer:[6,7,8],winter:[12,1,2]},be={autumn:[3,4,5],spring:[9,10,11],summer:[12,1,2],winter:[6,7,8]};function q(e,t){let r=h(e),n=t.month,a=r?pe:be;for(let o of[\"autumn\",\"spring\",\"summer\",\"winter\"])if(a[o].includes(n))return o;return null}function K(e){switch(e){case\"spring\":return\"fresh\";case\"summer\":return\"energetic\";case\"autumn\":return\"cozy\";case\"winter\":return\"warm\"}}function V(e){if(e.weekday===6||e.weekday===7)return\"off\";if(e.hour>=9&&e.hour<12)return\"work\";if(e.hour>=12&&e.hour<13)return\"break\";if(e.hour>=13&&e.hour<17)return\"work\";return\"off\"}function W(e){if(e.month===3&&e.day>=21||e.month===4&&e.day<=19)return\"aries\";if(e.month===4&&e.day>=20||e.month===5&&e.day<=20)return\"taurus\";if(e.month===5&&e.day>=21||e.month===6&&e.day<=20)return\"gemini\";if(e.month===6&&e.day>=21||e.month===7&&e.day<=22)return\"cancer\";if(e.month===7&&e.day>=23||e.month===8&&e.day<=22)return\"leo\";if(e.month===8&&e.day>=23||e.month===9&&e.day<=22)return\"virgo\";if(e.month===9&&e.day>=23||e.month===10&&e.day<=22)return\"libra\";if(e.month===10&&e.day>=23||e.month===11&&e.day<=21)return\"scorpio\";if(e.month===11&&e.day>=22||e.month===12&&e.day<=21)return\"sagittarius\";if(e.month===12&&e.day>=22||e.month===1&&e.day<=19)return\"capricorn\";if(e.month===1&&e.day>=20||e.month===2&&e.day<=18)return\"aquarius\";return\"pisces\"}function Z(e){let t=parseInt(e.startsWith(\"#\")?e.substring(1):e,16);return[t>>16&255,t>>8&255,t&255]}function c(e,t,r){if(r<0)r+=1;if(r>1)r-=1;if(r<0.16666666666666666)return e+(t-e)*6*r;if(r<0.5)return t;if(r<0.6666666666666666)return e+(t-e)*(0.6666666666666666-r)*6;return e}function y(e,t,r){let n,a,o;if(e/=360,t/=100,r/=100,t===0)n=a=o=r;else{let i=r<0.5?r*(1+t):r+t-r*t,u=2*r-i;n=c(u,i,e+0.3333333333333333),a=c(u,i,e),o=c(u,i,e-0.3333333333333333)}return n=Math.round(n*255),a=Math.round(a*255),o=Math.round(o*255),[n,a,o]}function x(e,t,r){e/=255,t/=255,r/=255;let n=Math.min(e,t,r),a=Math.max(e,t,r),o=a-n,i,u=a===0?0:o/a,s=a;if(a===n)i=0;else{if(a===e)i=(t-r)/o+(t<r?6:0);else if(a===t)i=(r-e)/o+2;else i=(e-t)/o+4;i/=6}return[i,u,s]}function J(e,t,r){return x(...y(e,t,r))}function S(e,t,r){let n=0,a=0,o=0,i=Math.floor(e*6),u=e*6-i,s=r*(1-t),m=r*(1-u*t),l=r*(1-(1-u)*t);switch(i%6){case 0:n=r,a=l,o=s;break;case 1:n=m,a=r,o=s;break;case 2:n=s,a=r,o=l;break;case 3:n=s,a=m,o=r;break;case 4:n=l,a=s,o=r;break;case 5:n=r,a=s,o=m;break}return n=Math.round(n*255),a=Math.round(a*255),o=Math.round(o*255),[n,a,o]}function w(e,t,r){e/=255,t/=255,r/=255;let n=Math.min(e,t,r),a=Math.max(e,t,r),o=a-n,i,u,s;if(o===0)i=0;else if(a===e)i=(t-r)/o%6;else if(a===t)i=(r-e)/o+2;else i=(e-t)/o+4;if(i=Math.round(i*60),i<0)i+=360;return s=(a+n)/2,u=o===0?0:o/(1-Math.abs(2*s-1)),u=+(u*100).toFixed(1),s=+(s*100).toFixed(1),[i,u,s]}function $(e,t,r){return w(...S(e,t,r))}function Q(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function X(e,t){let r=!1;for(let n=0,a=t.length-1;n<t.length;a=n++){let o=t[n][0],i=t[n][1],u=t[a][0],s=t[a][1];if(i>e[1]!=s>e[1]&&e[0]<(u-o)*(e[1]-i)/(s-i)+o)r=!r}return r}function Y(e,t){return t.hasSame(e,\"day\")}function ee(e){let t=new Uint32Array(1);t[0]=e;function r(){let o=t[0]=t[0]+1831565813|0,i=Math.imul(o^o>>>15,1|o);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}function n(o,i){return r()*(i-o)+o}function a(){return ee(r()*4294967296)}return{fork:a,next:r,nextBetween:n}}var ge=ee;function te(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as he,watch as ye}from\"vue\";function T(e,t,r=JSON.stringify,n=JSON.parse){let a=localStorage.getItem(e),o=a?n(a):t,i=he(o);return ye(i,(u)=>{if(u===null||u===void 0)localStorage.removeItem(e);else localStorage.setItem(e,r(u))},{deep:!0,immediate:!0}),i}function re(e,t){return T(e,t,(r)=>r??\"\",(r)=>r===\"\"?null:r)}async function ne(e){let t=document.createElement(\"iframe\");t.style.position=\"fixed\",t.style.top=\"-100dvh\",t.style.left=\"-100dvw\",t.style.width=\"1px\",t.style.height=\"1px\",document.body.appendChild(t);let r=t.contentDocument??t.contentWindow?.document;if(!r)throw document.body.removeChild(t),Error(\"Cannot print, no access to the framed document.\");r.documentElement.innerHTML=e;let n=Array.from(r.getElementsByTagName(\"img\"));await Promise.all(n.map((a)=>new Promise((o)=>{if(a.complete)o(void 0);else a.addEventListener(\"load\",o,{passive:!0}),a.addEventListener(\"error\",o,{passive:!0})}))),t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t)},1000)}function oe(e,t,r){let n=e.toString(16).padStart(2,\"0\"),a=t.toString(16).padStart(2,\"0\"),o=r.toString(16).padStart(2,\"0\");return`#${n}${a}${o}`}function ae(e,t,r){e.prototype[t]=r}function ie(e,t,r){Object.defineProperty(e,t,{value:r})}function ue(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function se(e){return new Promise((t)=>setTimeout(t,e))}var vt=\"✔\",Rt=\"✘\",It=\"—\",Bt=\"–\",Nt=()=>{return};export{se as waitFor,ue as viewTransition,ie as setObjectValue,ae as setObjectMethod,p as roundStep,x as rgbToHSV,w as rgbToHSL,oe as rgbToHEX,ne as printHtml,re as persistentStringRef,T as persistentRef,te as openUrl,ge as mulberry32,Y as isToday,X as isPointInPolygon,h as isNorthernHemisphere,Q as isHtmlElement,c as hueToRGB,S as hsvToRGB,$ as hsvToHSL,y as hslToRGB,J as hslToHSV,Z as hexToRGB,W as getZodiacSign,V as getWorkdayPeriod,K as getSeasonalMood,q as getSeason,O as getPrototypeChain,j as getMoonPhase,A as getDayPeriodRange,_ as getDayPeriod,H as getCircadianPhase,G as generateStepTicks,F as formatTime,E as formatPercentage,L as formatNumber,z as formatMonth,N as formatDateTime,B as formatDateFull,I as formatDate,b as downloadUrl,R as downloadString,g as downloadBlob,v as defineStore,P as debounce,D as countDecimals,C as clampWithStepPrecision,Nt as NOOP,Bt as NDASH,It as MDASH,Rt as CROSS,vt as CHECK};\n\n//# debugId=A9C7C67721EBAF2B64756E2164756E21\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 A=1;A<=7;++A)c.push(x.plus({day:A}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=E(()=>b(n).plus({month:1})),i=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:a,viewDatePrevious:i,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 a=P(e).year,i=[],f=a-a%t+P(o)*t;for(let l=0;l<t;++l)i.push(f+l);return i});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 Se,ref as Ae,unref as j,watchEffect as Ie}from\"vue\";function z(e){let t=0;return()=>{cancelAnimationFrame(t),t=requestAnimationFrame(e)}}import{Fragment as Te}from\"vue\";function B(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 a=we(s,o,r,n);if(!a){if(o===\"up\"||o===\"left\")a=n[s-1];if(o===\"down\"||o===\"right\")a=n[s+1]}return a}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((i,f)=>f===e||i.top+i.height>s.top?Number.MAX_SAFE_INTEGER:i.distance);break;case\"down\":r=o.map((i,f)=>f===e||i.top<s.top+s.height?Number.MAX_SAFE_INTEGER:i.distance);break;case\"left\":r=o.map((i,f)=>f===e||i.left+i.width>s.left?Number.MAX_SAFE_INTEGER:i.distance);break;case\"right\":r=o.map((i,f)=>f===e||i.left<s.left+s.width?Number.MAX_SAFE_INTEGER:i.distance);break}let a=r.indexOf(Math.min(...r));if(r[a]!==Number.MAX_SAFE_INTEGER)return n[a];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 V(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function q(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function W(e,t){if(!e.exposed||!(t in e.exposed))throw 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 G(...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 X{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 X;var Y=!globalThis.document;function Z(e,t,o){let n=Ae([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Se(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!j(t))return;!j(n).some((i)=>i.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function $(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as J,ref as Ne,watch as Ue}from\"vue\";function Q(e,t,o=!1){let n=Ne(J(e)?e.value:e),s=_e((r,a)=>({get(){return r(),n.value},set:Pe((i)=>{n.value=i,a()},t,o)}));if(J(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,a)=>{if(!s)return;s.addEventListener(t,o,n),a(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function ee(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 te(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let a=p(e);if(!a)return;let i=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);i.observe(a),r(()=>i.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),(i)=>{if(r(),!i)return;n=new MutationObserver(t),n.observe(i,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function a(){r(),s()}Xe(a)}import{DateTime as oe}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function ne(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=oe.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let a=r;if(oe.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(a))}),n}import{ref as I,unref as $e}from\"vue\";function re(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 se,unref as ae}from\"vue\";var et=0;function D(e=!1){let t=se(`focus-trap-${++et}`),o=se(!1);return Je(()=>w.add(ae(t),(n)=>o.value=n,e)),Qe(()=>w.remove(ae(t))),o}import{unref as tt,watch as ot}from\"vue\";function S(e,t){ot(e,(o,n,s)=>{if(!p(e)||tt(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function le(e,t={}){if(Y)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);S(e,n),ce(e,(a,i,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 a=p(e);if(r.value=!o,o||!a)return;let i=d(a);if(i.includes(document.activeElement))return;i[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 a=p(e),i=d(a),f=i.findIndex((u)=>u.classList.contains(\"is-active\")),l=i.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(a,i=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===a?0:-1),i&&l[a]?.focus()}function r(a){let i=p(e),f=d(i);if([\"Enter\",\" \"].includes(a.key))return;switch(o){case\"bidirectional\":it(a,i,f,s);break;case\"horizontal\":case\"vertical\":ct(a,i,t,o,f,s);break}}at(e,(a,i,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 a;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))a=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))a=1;else return;let i=R(t,a);if(i)r(s.indexOf(i));else if(o)r(a===1?0:s.length-1);e.preventDefault()}var an=\"#f8fafc\",cn=\"#f1f5f9\",ln=\"#e2e8f0\",fn=\"#cbd5e1\",pn=\"#94a3b8\",un=\"#64748b\",dn=\"#475569\",mn=\"#334155\",xn=\"#1e293b\",bn=\"#0f172a\",hn=\"#020617\",yn=\"#f9fafb\",Tn=\"#f3f4f6\",vn=\"#e5e7eb\",En=\"#d1d5db\",gn=\"#9ca3af\",wn=\"#6b7280\",Ln=\"#4b5563\",Mn=\"#374151\",Rn=\"#1f2937\",Fn=\"#111827\",kn=\"#030712\",Hn=\"#fafafa\",Dn=\"#f4f4f5\",Sn=\"#e4e4e7\",An=\"#d4d4d8\",In=\"#a1a1aa\",On=\"#71717a\",Cn=\"#52525b\",_n=\"#3f3f46\",Nn=\"#27272a\",Un=\"#18181b\",Pn=\"#09090b\",Kn=\"#fafafa\",zn=\"#f5f5f5\",Bn=\"#e5e5e5\",Vn=\"#d4d4d4\",qn=\"#a3a3a3\",Wn=\"#737373\",Gn=\"#525252\",Xn=\"#404040\",Yn=\"#262626\",jn=\"#171717\",Zn=\"#0a0a0a\",$n=\"#fafaf9\",Jn=\"#f5f5f4\",Qn=\"#e7e5e4\",er=\"#d6d3d1\",tr=\"#a8a29e\",or=\"#78716c\",nr=\"#57534e\",rr=\"#44403c\",sr=\"#292524\",ar=\"#1c1917\",ir=\"#0c0a09\",cr=\"#fef2f2\",lr=\"#fee2e2\",fr=\"#fecaca\",pr=\"#fca5a5\",ur=\"#f87171\",dr=\"#ef4444\",mr=\"#dc2626\",xr=\"#b91c1c\",br=\"#991b1b\",hr=\"#7f1d1d\",yr=\"#450a0a\",Tr=\"#fff7ed\",vr=\"#ffedd5\",Er=\"#fed7aa\",gr=\"#fdba74\",wr=\"#fb923c\",Lr=\"#f97316\",Mr=\"#ea580c\",Rr=\"#c2410c\",Fr=\"#9a3412\",kr=\"#7c2d12\",Hr=\"#431407\",Dr=\"#fffbeb\",Sr=\"#fef3c7\",Ar=\"#fde68a\",Ir=\"#fcd34d\",Or=\"#fbbf24\",Cr=\"#f59e0b\",_r=\"#d97706\",Nr=\"#b45309\",Ur=\"#92400e\",Pr=\"#78350f\",Kr=\"#451a03\",zr=\"#fefce8\",Br=\"#fef9c3\",Vr=\"#fef08a\",qr=\"#fde047\",Wr=\"#facc15\",Gr=\"#eab308\",Xr=\"#ca8a04\",Yr=\"#a16207\",jr=\"#854d0e\",Zr=\"#713f12\",$r=\"#422006\",Jr=\"#f7fee7\",Qr=\"#ecfccb\",es=\"#d9f99d\",ts=\"#bef264\",os=\"#a3e635\",ns=\"#84cc16\",rs=\"#65a30d\",ss=\"#4d7c0f\",as=\"#3f6212\",is=\"#365314\",cs=\"#1a2e05\",ls=\"#f0fdf4\",fs=\"#dcfce7\",ps=\"#bbf7d0\",us=\"#86efac\",ds=\"#4ade80\",ms=\"#22c55e\",xs=\"#16a34a\",bs=\"#15803d\",hs=\"#166534\",ys=\"#14532d\",Ts=\"#052e16\",vs=\"#ecfdf5\",Es=\"#d1fae5\",gs=\"#a7f3d0\",ws=\"#6ee7b7\",Ls=\"#34d399\",Ms=\"#10b981\",Rs=\"#059669\",Fs=\"#047857\",ks=\"#065f46\",Hs=\"#064e3b\",Ds=\"#022c22\",Ss=\"#f0fdfa\",As=\"#ccfbf1\",Is=\"#99f6e4\",Os=\"#5eead4\",Cs=\"#2dd4bf\",_s=\"#14b8a6\",Ns=\"#0d9488\",Us=\"#0f766e\",Ps=\"#115e59\",Ks=\"#134e4a\",zs=\"#042f2e\",Bs=\"#ecfeff\",Vs=\"#cffafe\",qs=\"#a5f3fc\",Ws=\"#67e8f9\",Gs=\"#22d3ee\",Xs=\"#06b6d4\",Ys=\"#0891b2\",js=\"#0e7490\",Zs=\"#155e75\",$s=\"#164e63\",Js=\"#083344\",Qs=\"#f0f9ff\",ea=\"#e0f2fe\",ta=\"#bae6fd\",oa=\"#7dd3fc\",na=\"#38bdf8\",ra=\"#0ea5e9\",sa=\"#0284c7\",aa=\"#0369a1\",ia=\"#075985\",ca=\"#0c4a6e\",la=\"#082f49\",fa=\"#eff6ff\",pa=\"#dbeafe\",ua=\"#bfdbfe\",da=\"#93c5fd\",ma=\"#60a5fa\",xa=\"#3b82f6\",ba=\"#2563eb\",ha=\"#1d4ed8\",ya=\"#1e40af\",Ta=\"#1e3a8a\",va=\"#172554\",Ea=\"#eef2ff\",ga=\"#e0e7ff\",wa=\"#c7d2fe\",La=\"#a5b4fc\",Ma=\"#818cf8\",Ra=\"#6366f1\",Fa=\"#4f46e5\",ka=\"#4338ca\",Ha=\"#3730a3\",Da=\"#312e81\",Sa=\"#1e1b4b\",Aa=\"#f5f3ff\",Ia=\"#ede9fe\",Oa=\"#ddd6fe\",Ca=\"#c4b5fd\",_a=\"#a78bfa\",Na=\"#8b5cf6\",Ua=\"#7c3aed\",Pa=\"#6d28d9\",Ka=\"#5b21b6\",za=\"#4c1d95\",Ba=\"#2e1065\",Va=\"#faf5ff\",qa=\"#f3e8ff\",Wa=\"#e9d5ff\",Ga=\"#d8b4fe\",Xa=\"#c084fc\",Ya=\"#a855f7\",ja=\"#9333ea\",Za=\"#7e22ce\",$a=\"#6b21a8\",Ja=\"#581c87\",Qa=\"#3b0764\",ei=\"#fdf4ff\",ti=\"#fae8ff\",oi=\"#f5d0fe\",ni=\"#f0abfc\",ri=\"#e879f9\",si=\"#d946ef\",ai=\"#c026d3\",ii=\"#a21caf\",ci=\"#86198f\",li=\"#701a75\",fi=\"#4a044e\",pi=\"#fdf2f8\",ui=\"#fce7f3\",di=\"#fbcfe8\",mi=\"#f9a8d4\",xi=\"#f472b6\",bi=\"#ec4899\",hi=\"#db2777\",yi=\"#be185d\",Ti=\"#9d174d\",vi=\"#831843\",Ei=\"#500724\",gi=\"#fff1f2\",wi=\"#ffe4e6\",Li=\"#fecdd3\",Mi=\"#fda4af\",Ri=\"#fb7185\",Fi=\"#f43f5e\",ki=\"#e11d48\",Hi=\"#be123c\",Di=\"#9f1239\",Si=\"#881337\",Ai=\"#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)},getSSRProps(){return{}}},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)},getSSRProps(){return{}}},C=new WeakMap;export{Pn as zinc950,Un as zinc900,Nn as zinc800,_n as zinc700,Cn as zinc600,On as zinc500,Hn as zinc50,In as zinc400,An as zinc300,Sn as zinc200,Dn as zinc100,$r as yellow950,Zr as yellow900,jr as yellow800,Yr as yellow700,Xr as yellow600,Gr as yellow500,zr as yellow50,Wr as yellow400,qr as yellow300,Vr as yellow200,Br as yellow100,g as wrapFocus,G as warn,Ba as violet950,za as violet900,Ka as violet800,Pa as violet700,Ua as violet600,Na as violet500,Aa as violet50,_a as violet400,Ca as violet300,Oa as violet200,Ia as violet100,ft as vHeightTransition,lt as vFocusTrap,re as useScrollPosition,ne as useRemembered,H as useMutationObserver,ee as useInterval,te as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,S as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,Q as useDebouncedRef,$ as useComponentId,Z as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,zs as teal950,Ks as teal900,Ps as teal800,Us as teal700,Ns as teal600,_s as teal500,Ss as teal50,Cs as teal400,Os as teal300,Is as teal200,As as teal100,ir as stone950,ar as stone900,sr as stone800,rr as stone700,nr as stone600,or as stone500,$n as stone50,tr as stone400,er as stone300,Qn as stone200,Jn as stone100,hn as slate950,bn as slate900,xn as slate800,mn as slate700,dn as slate600,un as slate500,an as slate50,pn as slate400,fn as slate300,ln as slate200,cn as slate100,la as sky950,ca as sky900,ia as sky800,aa as sky700,sa as sky600,ra as sky500,Qs as sky50,na as sky400,oa as sky300,ta as sky200,ea as sky100,Ai as rose950,Si as rose900,Di as rose800,Hi as rose700,ki as rose600,Fi as rose500,gi as rose50,Ri as rose400,Mi as rose300,Li as rose200,wi as rose100,yr as red950,hr as red900,br as red800,xr as red700,mr as red600,dr as red500,cr as red50,ur as red400,pr as red300,fr as red200,lr as red100,Qa as purple950,Ja as purple900,$a as purple800,Za as purple700,ja as purple600,Ya as purple500,Va as purple50,Xa as purple400,Ga as purple300,Wa as purple200,qa as purple100,Ei as pink950,vi as pink900,Ti as pink800,yi as pink700,hi as pink600,bi as pink500,pi as pink50,xi as pink400,mi as pink300,di as pink200,ui as pink100,Hr as orange950,kr as orange900,Fr as orange800,Rr as orange700,Mr as orange600,Lr as orange500,Tr as orange50,wr as orange400,gr as orange300,Er as orange200,vr as orange100,Zn as neutral950,jn as neutral900,Yn as neutral800,Xn as neutral700,Gn as neutral600,Wn as neutral500,Kn as neutral50,qn as neutral400,Vn as neutral300,Bn as neutral200,zn as neutral100,cs as lime950,is as lime900,as as lime800,ss as lime700,rs as lime600,ns as lime500,Jr as lime50,os as lime400,ts as lime300,es as lime200,Qr as lime100,Y as isSSR,Sa as indigo950,Da as indigo900,Ha as indigo800,ka as indigo700,Fa as indigo600,Ra as indigo500,Ea as indigo50,Ma as indigo400,La as indigo300,wa as indigo200,ga as indigo100,Ts as green950,ys as green900,hs as green800,bs as green700,xs as green600,ms as green500,ls as green50,ds as green400,us as green300,ps as green200,fs as green100,kn as gray950,Fn as gray900,Rn as gray800,Mn as gray700,Ln as gray600,wn as gray500,yn as gray50,gn as gray400,En as gray300,vn as gray200,Tn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,W as getExposedRef,q as getComponentProps,V as getComponentName,M as getBidirectionalFocusElement,fi as fuchsia950,li as fuchsia900,ci as fuchsia800,ii as fuchsia700,ai as fuchsia600,si as fuchsia500,ei as fuchsia50,ri as fuchsia400,ni as fuchsia300,oi as fuchsia200,ti as fuchsia100,B as flattenVNodeTree,Ds as emerald950,Hs as emerald900,ks as emerald800,Fs as emerald700,Rs as emerald600,Ms as emerald500,vs as emerald50,Ls as emerald400,ws as emerald300,gs as emerald200,Es as emerald100,Js as cyan950,$s as cyan900,Zs as cyan800,js as cyan700,Ys as cyan600,Xs as cyan500,Bs as cyan50,Gs as cyan400,Ws as cyan300,qs as cyan200,Vs as cyan100,va as blue950,Ta as blue900,ya as blue800,ha as blue700,ba as blue600,xa as blue500,fa as blue50,ma as blue400,da as blue300,ua as blue200,pa as blue100,z as animationFrameDebounce,Kr as amber950,Pr as amber900,Ur as amber800,Nr as amber700,_r as amber600,Cr as amber500,Dr as amber50,Or as amber400,Ir as amber300,Ar as amber200,Sr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=101630D55D17E66A64756E2164756E21\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 { isSSR, unrefTemplateElement, useEventListener, 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 !isSSR && useEventListener(ref(window), 'resize', () => unref(isOpen) && reposition());\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 window.addEventListener('scroll', onLeave, {capture: true});\n });\n\n onUnmounted(() => {\n const elm = instance.proxy!.$el;\n elm.removeEventListener('mouseenter', onHover);\n elm.removeEventListener('mouseleave', onLeave);\n window.removeEventListener('scroll', 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 + margin > 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(() => {\n requestAnimationFrame(resize);\n requestAnimationFrame(reposition);\n });\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 :tabindex=\"tabindex\"\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 isCondensed && $style.isCondensed,\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 isCondensed?: 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, useFocusTrap } from '@flux-ui/internals';\nimport type { Component, RenderFunction, SetupContext, Slots, VNode } from 'vue';\nimport { Comment, h, onUnmounted, ref, Teleport, watch } from 'vue';\nimport { registerDialog, useFluxStore } from '$flux/data';\nimport $style from '$flux/css/component/Overlay.module.scss';\n\ntype Emit = SetupContext<['close']>['emit'];\ntype Props = {\n readonly isCloseable?: boolean;\n readonly viewKey?: string;\n};\n\nconst TARGET_SELECTOR = `.${$style.overlayProvider.replaceAll(' ', '.')}`;\n\nexport default function (attrs: object, props: Props, emit: Emit, slots: Slots, className: string, transition: Component): RenderFunction {\n let unregister: Function | null = null;\n let zIndex = 0;\n\n const dialogRef = ref<HTMLElement>();\n\n useFocusTrap(dialogRef);\n\n onUnmounted(() => {\n unregister?.();\n });\n\n watch(dialogRef, (dialog, _, onCleanup) => {\n if (!dialog) {\n return;\n }\n\n dialog.addEventListener('keydown', onKeyDown, {passive: true});\n dialog.focus();\n\n onCleanup(() => {\n dialog.removeEventListener('keydown', onKeyDown);\n });\n });\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (evt.key !== 'Escape' || !unregister || !props.isCloseable) {\n return;\n }\n\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 let content: VNode | undefined;\n\n if (isVisible) {\n if (!unregister) {\n [zIndex, unregister] = registerDialog();\n }\n\n content = h('div', {\n key: props.viewKey,\n ref: dialogRef,\n class: [className, zIndex === dialogCount && $style.isCurrent],\n style: {\n zIndex: zIndex + 1000\n },\n tabindex: 0\n }, children);\n } else {\n unregister?.();\n unregister = null;\n }\n\n return h(Teleport, {defer: true, disabled: !content, to: TARGET_SELECTOR}, [\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 <slot name=\"filter\" v-bind=\"{page, perPage, items: limitedItems, total}\"/>\n\n <FluxTableRow>\n <slot\n name=\"header\"\n v-bind=\"{page, perPage, items: limitedItems, 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, items: limitedItems, 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, items: limitedItems, 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=\"(item, index) of limitedItems\"\n :key=\"uniqueKey ? item[uniqueKey] : index\">\n <template v-for=\"(_, name) of slots\">\n <slot\n v-if=\"!IGNORED_SLOTS.includes(name as string)\"\n v-bind=\"{index, item, items: limitedItems, page, perPage, 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[] = ['filter', '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 items,\n perPage\n } = defineProps<{\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 items: T[];\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 item: T;\n readonly items: T[];\n readonly total: number;\n }) => VNode;\n\n filter(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n footer(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n header(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n pagination(props: {\n readonly page: number;\n readonly perPage: number;\n readonly items: T[];\n readonly total: number;\n }): VNode;\n\n colgroups(): VNode;\n }>();\n\n const limitedItems = computed(() => items.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 isCondensed && $style.isCondensed,\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 readonly isCondensed?: 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 { isSSR } from '@flux-ui/internals';\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 if (isSSR) {\n return [];\n }\n\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.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 <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 :class=\"$style.overlayProvider\">\n <div :class=\"$style.overlayShade\"/>\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</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFluxStore } from '$flux/data';\n import FluxAlert from './FluxAlert.vue';\n import FluxConfirm from './FluxConfirm.vue';\n import FluxOverlay from './FluxOverlay.vue';\n import FluxPrompt from './FluxPrompt.vue';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {alerts, confirms, prompts} = useFluxStore();\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\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=\"position >= 1 ? $style.progressBarValueComplete : $style.progressBarValueIncomplete\"\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 <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 <FluxOverlayProvider/>\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 FluxOverlayProvider from './FluxOverlayProvider.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 {inertMain} = 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\n v-if=\"icon\"\n :class=\"$style.statisticIcon\">\n <FluxIcon\n :name=\"icon\"\n :size=\"24\"/>\n </div>\n\n <div v-else-if=\"imageSrc\">\n <img\n :class=\"$style.statisticImage\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"/>\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 imageSrc?: string;\n readonly imageAlt?: string;\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":["icon","iconName","c","tooltip","k","root","state","d","p","bName","bi","fromPos","toPos","si","imask","C","r","D","G","M","Z","S","w","$","Q","ee","ge","Symbol","objectProto","nativeObjectToString","symToStringTag","tag","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsApos","_","E","b","h","y","x","L","me","xe","he","be","P","ye","Te","ve","Me","Re","ke","Fe","Ae","De","Se","j","Ie","Ce","Oe","Ne","J","_e","Ue","Ke","Ve","ze","Be","qe","We","Ge","Ye","Xe","se","Je","ae","Qe","ot","tt","ie","ce","at","warn","_createElementBlock","_normalizeClass","_unref","$style","_normalizeStyle","_openBlock","_Fragment","_renderList","_createBlock","_mergeProps","$attrs","$emit","_renderSlot","_createElementVNode","FluxPressable","FluxSpinner","FluxIcon","FluxButton","groups","isLoading","_createVNode","isClosing","isOpening","isSSR","useEventListener","useFocusTrap","close","pane","unrefTemplateElement","open","toggle","isOpen","_normalizeProps","_guardReactiveProps","FluxPane","_resolveDynamicComponent","tooltipId","_useSlots","FluxStack","FluxSpacer","FluxFlyout","FluxButtonGroup","FluxSecondaryButton","FluxTooltip","FluxDestructiveButton","_withCtx","FluxPaneBody","FluxButtonStack","useFocusZone","useComponentId","tick","mulberry32","polygons","isHtmlElement","_Transition","FluxFadeTransition","purple600","orange600","pink600","flattenVNodeTree","useMutationObserver","_useModel","modelValue","FluxMenuGroup","FluxFormInput","FluxMenuItem","FluxMenuSubHeader","isKeyboardAction","useClickOutside","id","highlightedIndex","isPopupOpen","Anchor","FluxTag","_Teleport","AnchorPopup","FluxMenu","index","generateStepTicks","ticks","FluxTicks","content","getComponentName","props","getComponentProps","formatNumber","FluxSeparator","FilterItem","useCalendar","useCalendarMonthSwitcher","useCalendarYearSwitcher","viewDate","dates","FluxActionBar","_hoisted_1","$styleDatePicker","_hoisted_2","FluxWindowTransition","_toDisplayString","FluxAvatar","isDragging","roundStep","CoordinatePickerThumb","FluxFormFieldAddition","countDecimals","clampWithStepPrecision","SliderBase","SliderTrack","SliderThumb","g","hsvToRGB","value","hsvToHSL","hslToHSV","rgbToHSV","hexToRGB","hslToRGB","hsv","rgbToHEX","rgbToHSL","CoordinatePicker","FluxFormSlider","FluxFormField","FluxColorPicker","FluxPrimaryButton","SelectBase","FluxPaginationButton","limit","FluxPagination","FluxFormSelect","isBordered","isHoverable","isSeparated","isStriped","FluxTableRow","FluxTableCell","_hoisted_3","FluxTable","FluxPaginationBar","isDisabled","isSelected","FluxVerticalWindowTransition","isDraggingOver","FluxAutoHeightTransition","expandable","getExposedRef","useInterval","fader","current","filters","FluxWindow","_createSlots","filter","FluxDatePicker","FilterOptionBase","useDebouncedRef","options","FluxFormColumn","_createTextVNode","useInView","inView","aspectRatio","FluxPaneFooter","FluxDisabled","localValue","FluxFormInputGroup","isDraggingLower","isDraggingUpper","selected","values","ai","FluxFocalPointImage","FluxRemove","FluxDropZone","_TransitionGroup","FluxGalleryItem","FluxOverlayTransition","FluxPaneHeader","FluxOverlay","FluxAlert","FluxConfirm","FluxPrompt","FluxAutoGrid","FluxGridPattern","FluxAnimatedColors","formatPercentage","FluxLegend","FluxProgressBar","actionLabel","FluxAction","snackbars","snackbar","FluxSnackbar","FluxTooltipTransition","FluxOverlayProvider","FluxSnackbarProvider","FluxTooltipProvider","FluxSlideOverTransition","FluxStepperSteps","FluxDynamicView","tabBar","tab","tabs","FluxTabBar","FluxTabBarItem","FluxActions"],"mappings":"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AAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAC1B,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACvE,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACxD,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EACzC,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EAAK,KAAU;AAAA,EACtF,KAAU;AAAA,EAAM,K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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,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]}