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

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.
Files changed (36) hide show
  1. package/dist/component/FluxActions.vue.d.ts.map +1 -1
  2. package/dist/component/FluxDataTable.vue.d.ts +23 -11
  3. package/dist/component/FluxDataTable.vue.d.ts.map +1 -1
  4. package/dist/component/FluxFilter.vue.d.ts.map +1 -1
  5. package/dist/component/FluxFlyout.vue.d.ts.map +1 -1
  6. package/dist/component/FluxFormDateInput.vue.d.ts.map +1 -1
  7. package/dist/component/FluxFormDateRangeInput.vue.d.ts.map +1 -1
  8. package/dist/component/FluxFormDateTimeInput.vue.d.ts.map +1 -1
  9. package/dist/component/FluxFormInput.vue.d.ts +1 -0
  10. package/dist/component/FluxFormInput.vue.d.ts.map +1 -1
  11. package/dist/component/FluxFormInputGroup.vue.d.ts +1 -0
  12. package/dist/component/FluxFormInputGroup.vue.d.ts.map +1 -1
  13. package/dist/component/FluxFormTimeZonePicker.vue.d.ts.map +1 -1
  14. package/dist/component/FluxPrompt.vue.d.ts +2 -0
  15. package/dist/component/FluxPrompt.vue.d.ts.map +1 -1
  16. package/dist/component/FluxTabBarItem.vue.d.ts.map +1 -1
  17. package/dist/component/FluxTooltip.vue.d.ts.map +1 -1
  18. package/dist/component/primitive/AnchorPopup.vue.d.ts.map +1 -1
  19. package/dist/component/primitive/SelectBase.vue.d.ts +2 -0
  20. package/dist/component/primitive/SelectBase.vue.d.ts.map +1 -1
  21. package/dist/index.css +5808 -1
  22. package/dist/index.js +11209 -7932
  23. package/dist/index.js.map +1 -1
  24. package/package.json +14 -14
  25. package/src/component/FluxDataTable.vue +24 -15
  26. package/src/component/FluxFlyout.vue +2 -1
  27. package/src/component/FluxFormInput.vue +2 -0
  28. package/src/component/FluxFormInputGroup.vue +2 -0
  29. package/src/component/FluxFormTimeZonePicker.vue +5 -0
  30. package/src/component/FluxProgressBar.vue +1 -1
  31. package/src/component/FluxTooltip.vue +2 -0
  32. package/src/component/primitive/AnchorPopup.vue +5 -3
  33. package/src/css/component/Form.module.scss +9 -4
  34. package/src/css/component/Progress.module.scss +12 -1
  35. package/src/css/component/Table.module.scss +34 -1
  36. package/src/data/iconRegistry.ts +1 -1
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.9.0/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","../../../node_modules/.bun/@basmilius+utils@2.9.0+ca84541ac88a3075/node_modules/@basmilius/utils/dist/index.js","../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] = 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 M(e,t,r,o){return Math.max(t,Math.min(r,+p(e*(r-t)+t,o).toPrecision(4)))}function R(e){return e.toString().split(\".\")[1]?.length??0}function P(e,t,r){let o=[],u=[],n=null;return(...i)=>{return clearTimeout(n),n=setTimeout(()=>{try{let a=e.apply(r,i);o.forEach((m)=>m(a))}catch(a){u.forEach((m)=>m(a))}o=[],u=[]},t),new Promise((a,m)=>{o.push(a),u.push(m)})}}import{defineStore as Y,storeToRefs as ee}from\"pinia\";function v(e,t){let r=Y(e,t);return()=>{let o=r(),u=Object.getOwnPropertyNames(o),n=ee(o),i={};for(let a of u){if(a.startsWith(\"$\")||a.startsWith(\"_\"))continue;if(a in n){i[a]=n[a];continue}i[a]=o[a]}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 x(e,t){let r=URL.createObjectURL(e);b(r,t),URL.revokeObjectURL(r)}function F(e,t,r){let o=new Blob([e],{type:r});x(o,t)}function L(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function E(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function k(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function O(e){return e.toLocaleString({month:\"long\"})}function C(e,t=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:t,minimumFractionDigits:t}).format(e)}function H(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function B(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function I(e,t,r=5,o){let u=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],n=[0.1,0.5,...u],i=t-e,a=o?n:u;for(let l of a){let D=Math.floor(i/l),d=[];if(D>r+1)continue;d.push(e);for(let w=1;w<D;++w)d.push(w*l+e);return d.push(t),d}let m=i.toString().length-1,s=Math.pow(10,m),f=[];for(let l=0;l<i;l+=s)f.push(l+e);return f}function j(e){let t={};do{if(e.name===\"\")break;for(let[r,o]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(r))continue;if(!o.get&&!o.set)continue;t[r]=o}}while(e=Object.getPrototypeOf(e));return t}function N(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 g(e,t,r){let o,u,n;if(e/=360,t/=100,r/=100,t===0)o=u=n=r;else{let i=r<0.5?r*(1+t):r+t-r*t,a=2*r-i;o=c(a,i,e+0.3333333333333333),u=c(a,i,e),n=c(a,i,e-0.3333333333333333)}return o=Math.round(o*255),u=Math.round(u*255),n=Math.round(n*255),[o,u,n]}function h(e,t,r){e/=255,t/=255,r/=255;let o=Math.min(e,t,r),u=Math.max(e,t,r),n=u-o,i,a=u===0?0:n/u,m=u;if(u===o)i=0;else{if(u===e)i=(t-r)/n+(t<r?6:0);else if(u===t)i=(r-e)/n+2;else i=(e-t)/n+4;i/=6}return[i,a,m]}function U(e,t,r){return h(...g(e,t,r))}function y(e,t,r){let o=0,u=0,n=0,i=Math.floor(e*6),a=e*6-i,m=r*(1-t),s=r*(1-a*t),f=r*(1-(1-a)*t);switch(i%6){case 0:o=r,u=f,n=m;break;case 1:o=s,u=r,n=m;break;case 2:o=m,u=r,n=f;break;case 3:o=m,u=s,n=r;break;case 4:o=f,u=m,n=r;break;case 5:o=r,u=m,n=s;break}return o=Math.round(o*255),u=Math.round(u*255),n=Math.round(n*255),[o,u,n]}function T(e,t,r){e/=255,t/=255,r/=255;let o=Math.min(e,t,r),u=Math.max(e,t,r),n=u-o,i,a,m;if(n===0)i=0;else if(u===e)i=(t-r)/n%6;else if(u===t)i=(r-e)/n+2;else i=(e-t)/n+4;if(i=Math.round(i*60),i<0)i+=360;return m=(u+o)/2,a=n===0?0:n/(1-Math.abs(2*m-1)),a=+(a*100).toFixed(1),m=+(m*100).toFixed(1),[i,a,m]}function G(e,t,r){return T(...y(e,t,r))}function V(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function _(e,t){let r=!1;for(let o=0,u=t.length-1;o<t.length;u=o++){let n=t[o][0],i=t[o][1],a=t[u][0],m=t[u][1];if(i>e[1]!=m>e[1]&&e[0]<(a-n)*(e[1]-i)/(m-i)+n)r=!r}return r}function z(e,t){return t.hasSame(e,\"day\")}function W(e){let t=new Uint32Array(1);t[0]=e;function r(){let n=t[0]=t[0]+1831565813|0,i=Math.imul(n^n>>>15,1|n);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}function o(n,i){return r()*(i-n)+n}function u(){return W(r()*4294967296)}return{fork:u,next:r,nextBetween:o}}var te=W;function A(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as re,watch as ne}from\"vue\";function S(e,t,r=JSON.stringify,o=JSON.parse){let u=localStorage.getItem(e),n=u?o(u):t,i=re(n);return ne(i,(a)=>{if(a===null||a===void 0)localStorage.removeItem(e);else localStorage.setItem(e,r(a))},{deep:!0,immediate:!0}),i}function $(e,t){return S(e,t,(r)=>r??\"\",(r)=>r===\"\"?null:r)}async function J(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),new Error(\"Cannot print, no access to the framed document.\");r.documentElement.innerHTML=e;let o=Array.from(r.getElementsByTagName(\"img\"));await Promise.all(o.map((u)=>new Promise((n)=>{if(u.complete)n(void 0);else u.addEventListener(\"load\",n,{passive:!0}),u.addEventListener(\"error\",n,{passive:!0})}))),t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t)},1000)}function K(e,t,r){let o=e.toString(16).padStart(2,\"0\"),u=t.toString(16).padStart(2,\"0\"),n=r.toString(16).padStart(2,\"0\");return`#${o}${u}${n}`}function Z(e,t,r){e.prototype[t]=r}function X(e,t,r){Object.defineProperty(e,t,{value:r})}function q(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function Q(e){return new Promise((t)=>setTimeout(t,e))}var et=\"✔\",tt=\"✘\",rt=\"—\",nt=\"–\",ot=()=>{return};export{Q as waitFor,q as viewTransition,X as setObjectValue,Z as setObjectMethod,p as roundStep,h as rgbToHSV,T as rgbToHSL,K as rgbToHEX,J as printHtml,$ as persistentStringRef,S as persistentRef,A as openUrl,te as mulberry32,z as isToday,_ as isPointInPolygon,V as isHtmlElement,c as hueToRGB,y as hsvToRGB,G as hsvToHSL,g as hslToRGB,U as hslToHSV,N as hexToRGB,j as getPrototypeChain,I as generateStepTicks,B as formatTime,H as formatPercentage,C as formatNumber,O as formatMonth,k as formatDateTime,E as formatDateFull,L as formatDate,b as downloadUrl,F as downloadString,x as downloadBlob,v as defineStore,P as debounce,R as countDecimals,M as clampWithStepPrecision,ot as NOOP,nt as NDASH,rt as MDASH,tt as CROSS,et as CHECK};\n\n//# debugId=3BCA2EF91CDA4E5364756E2164756E21\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 v,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=v(()=>{let c=[],m=b(n).month,h=b(n).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let S=1;S<=7;++S)c.push(x.plus({day:S}))}return c}),r=v(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=v(()=>b(n).plus({month:1})),i=v(()=>b(n).minus({month:1})),f=v(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=v(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function E(){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:E,previousMonth:L}}import{computed as de,unref as me}from\"vue\";function U(e,t){return{months:de(()=>{let n=[],s=me(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 xe,ref as be,unref as P,watch as he}from\"vue\";function K(e,t=10){let o=be(0),n=xe(()=>{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 he(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as He,onUnmounted as De,ref as Ae,unref as Y,watchEffect as Se}from\"vue\";import{Fragment as ye}from\"vue\";function z(e){let t=[];for(let o of e){if(o.type===ye&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as Te}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(Te).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=we(n);ve(r,s,o);let a=ge(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 ve(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 ge(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 we(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function B(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Le}from\"lodash-es\";function V(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Le(t),o]))}function q(e,t){if(!e.exposed||!(t in e.exposed))throw new Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Me}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Me(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 Re}from\"@basmilius/utils\";import{unref as Fe}from\"vue\";function p(e){let t=Fe(e);if(Re(t))return t;return t?.$el}function W(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=ke(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 ke(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class G{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,o=!0){let n={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(n),o)this.toggle(n,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let n=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),n&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new G;var X=!globalThis.document;function j(e,t,o){let n=Ae([]);He(()=>{document.addEventListener(\"pointerdown\",s)}),De(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!Y(t))return;!Y(n).some((i)=>i.contains(r.target))&&o(r)}Se(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),n.value=r})}import{computed as Ie,getCurrentInstance as Oe}from\"vue\";function Z(){let e=Oe();return Ie(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as Ce,isRef as $,ref as _e,watch as Ne}from\"vue\";function J(e,t,o=!1){let n=_e($(e)?e.value:e),s=Ce((r,a)=>({get(){return r(),n.value},set:Ue((i)=>{n.value=i,a()},t,o)}));if($(e))Ne(e,(r)=>s.value=r);return s}function Ue(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Pe}from\"vue\";function k(e,t,o,n={passive:!0}){Pe(e,(s,r,a)=>{if(!s)return;s.addEventListener(t,o,n),a(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as Ke,onUnmounted as ze,ref as Be,unref as Ve}from\"vue\";function Q(e,t){let o=Be();Ke(()=>{s()}),ze(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),Ve(e))}function s(){n(),t()}}import{ref as qe,watch as We}from\"vue\";function ee(e,t={}){let o=qe(t.initial??!1);return We(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 Ge,watch as Xe}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Xe(()=>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()}Ge(a)}import{DateTime as te}from\"luxon\";import{ref as Ye,watch as je}from\"vue\";function oe(e,t){let o=`flux/${e}`,n=Ye(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=te.fromISO(r[1]);return r}return null}return je(n,(r)=>{let a=r;if(te.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(a))}),n}import{ref as I,unref as Ze}from\"vue\";function ne(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=Ze(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 ae,watch as ie}from\"vue\";import{onMounted as $e,onUnmounted as Je,ref as re,unref as se}from\"vue\";var Qe=0;function D(e=!1){let t=re(`focus-trap-${++Qe}`),o=re(!1);return $e(()=>w.add(se(t),(n)=>o.value=n,e)),Je(()=>w.remove(se(t))),o}import{unref as et,watch as tt}from\"vue\";function A(e,t){tt(e,(o,n,s)=>{if(!p(e)||et(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function ce(e,t={}){if(X)return;let{disable:o=ae(!1),disableReturn:n=ae(!1),attachTo:s=null}=t,r=D(!o);A(e,n),ie(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 E(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\",E,{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\",E),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ie(()=>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 ot,onUnmounted as nt,ref as rt}from\"vue\";function le(e){let t=rt(null);ot(()=>t.value=w.subscribe(e)),nt(()=>t.value?.())}import{watch as st}from\"vue\";function fe(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,E)=>u.tabIndex=E===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\":at(a,i,f,s);break;case\"horizontal\":case\"vertical\":it(a,i,t,o,f,s);break}}st(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 at(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 it(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 nn=\"#f8fafc\",rn=\"#f1f5f9\",sn=\"#e2e8f0\",an=\"#cbd5e1\",cn=\"#94a3b8\",ln=\"#64748b\",fn=\"#475569\",pn=\"#334155\",un=\"#1e293b\",dn=\"#0f172a\",mn=\"#020617\",xn=\"#f9fafb\",bn=\"#f3f4f6\",hn=\"#e5e7eb\",yn=\"#d1d5db\",Tn=\"#9ca3af\",En=\"#6b7280\",vn=\"#4b5563\",gn=\"#374151\",wn=\"#1f2937\",Ln=\"#111827\",Mn=\"#030712\",Rn=\"#fafafa\",Fn=\"#f4f4f5\",kn=\"#e4e4e7\",Hn=\"#d4d4d8\",Dn=\"#a1a1aa\",An=\"#71717a\",Sn=\"#52525b\",In=\"#3f3f46\",On=\"#27272a\",Cn=\"#18181b\",_n=\"#09090b\",Nn=\"#fafafa\",Un=\"#f5f5f5\",Pn=\"#e5e5e5\",Kn=\"#d4d4d4\",zn=\"#a3a3a3\",Bn=\"#737373\",Vn=\"#525252\",qn=\"#404040\",Wn=\"#262626\",Gn=\"#171717\",Xn=\"#0a0a0a\",Yn=\"#fafaf9\",jn=\"#f5f5f4\",Zn=\"#e7e5e4\",$n=\"#d6d3d1\",Jn=\"#a8a29e\",Qn=\"#78716c\",er=\"#57534e\",tr=\"#44403c\",or=\"#292524\",nr=\"#1c1917\",rr=\"#0c0a09\",sr=\"#fef2f2\",ar=\"#fee2e2\",ir=\"#fecaca\",cr=\"#fca5a5\",lr=\"#f87171\",fr=\"#ef4444\",pr=\"#dc2626\",ur=\"#b91c1c\",dr=\"#991b1b\",mr=\"#7f1d1d\",xr=\"#450a0a\",br=\"#fff7ed\",hr=\"#ffedd5\",yr=\"#fed7aa\",Tr=\"#fdba74\",Er=\"#fb923c\",vr=\"#f97316\",gr=\"#ea580c\",wr=\"#c2410c\",Lr=\"#9a3412\",Mr=\"#7c2d12\",Rr=\"#431407\",Fr=\"#fffbeb\",kr=\"#fef3c7\",Hr=\"#fde68a\",Dr=\"#fcd34d\",Ar=\"#fbbf24\",Sr=\"#f59e0b\",Ir=\"#d97706\",Or=\"#b45309\",Cr=\"#92400e\",_r=\"#78350f\",Nr=\"#451a03\",Ur=\"#fefce8\",Pr=\"#fef9c3\",Kr=\"#fef08a\",zr=\"#fde047\",Br=\"#facc15\",Vr=\"#eab308\",qr=\"#ca8a04\",Wr=\"#a16207\",Gr=\"#854d0e\",Xr=\"#713f12\",Yr=\"#422006\",jr=\"#f7fee7\",Zr=\"#ecfccb\",$r=\"#d9f99d\",Jr=\"#bef264\",Qr=\"#a3e635\",es=\"#84cc16\",ts=\"#65a30d\",os=\"#4d7c0f\",ns=\"#3f6212\",rs=\"#365314\",ss=\"#1a2e05\",as=\"#f0fdf4\",is=\"#dcfce7\",cs=\"#bbf7d0\",ls=\"#86efac\",fs=\"#4ade80\",ps=\"#22c55e\",us=\"#16a34a\",ds=\"#15803d\",ms=\"#166534\",xs=\"#14532d\",bs=\"#052e16\",hs=\"#ecfdf5\",ys=\"#d1fae5\",Ts=\"#a7f3d0\",Es=\"#6ee7b7\",vs=\"#34d399\",gs=\"#10b981\",ws=\"#059669\",Ls=\"#047857\",Ms=\"#065f46\",Rs=\"#064e3b\",Fs=\"#022c22\",ks=\"#f0fdfa\",Hs=\"#ccfbf1\",Ds=\"#99f6e4\",As=\"#5eead4\",Ss=\"#2dd4bf\",Is=\"#14b8a6\",Os=\"#0d9488\",Cs=\"#0f766e\",_s=\"#115e59\",Ns=\"#134e4a\",Us=\"#042f2e\",Ps=\"#ecfeff\",Ks=\"#cffafe\",zs=\"#a5f3fc\",Bs=\"#67e8f9\",Vs=\"#22d3ee\",qs=\"#06b6d4\",Ws=\"#0891b2\",Gs=\"#0e7490\",Xs=\"#155e75\",Ys=\"#164e63\",js=\"#083344\",Zs=\"#f0f9ff\",$s=\"#e0f2fe\",Js=\"#bae6fd\",Qs=\"#7dd3fc\",ea=\"#38bdf8\",ta=\"#0ea5e9\",oa=\"#0284c7\",na=\"#0369a1\",ra=\"#075985\",sa=\"#0c4a6e\",aa=\"#082f49\",ia=\"#eff6ff\",ca=\"#dbeafe\",la=\"#bfdbfe\",fa=\"#93c5fd\",pa=\"#60a5fa\",ua=\"#3b82f6\",da=\"#2563eb\",ma=\"#1d4ed8\",xa=\"#1e40af\",ba=\"#1e3a8a\",ha=\"#172554\",ya=\"#eef2ff\",Ta=\"#e0e7ff\",Ea=\"#c7d2fe\",va=\"#a5b4fc\",ga=\"#818cf8\",wa=\"#6366f1\",La=\"#4f46e5\",Ma=\"#4338ca\",Ra=\"#3730a3\",Fa=\"#312e81\",ka=\"#1e1b4b\",Ha=\"#f5f3ff\",Da=\"#ede9fe\",Aa=\"#ddd6fe\",Sa=\"#c4b5fd\",Ia=\"#a78bfa\",Oa=\"#8b5cf6\",Ca=\"#7c3aed\",_a=\"#6d28d9\",Na=\"#5b21b6\",Ua=\"#4c1d95\",Pa=\"#2e1065\",Ka=\"#faf5ff\",za=\"#f3e8ff\",Ba=\"#e9d5ff\",Va=\"#d8b4fe\",qa=\"#c084fc\",Wa=\"#a855f7\",Ga=\"#9333ea\",Xa=\"#7e22ce\",Ya=\"#6b21a8\",ja=\"#581c87\",Za=\"#3b0764\",$a=\"#fdf4ff\",Ja=\"#fae8ff\",Qa=\"#f5d0fe\",ei=\"#f0abfc\",ti=\"#e879f9\",oi=\"#d946ef\",ni=\"#c026d3\",ri=\"#a21caf\",si=\"#86198f\",ai=\"#701a75\",ii=\"#4a044e\",ci=\"#fdf2f8\",li=\"#fce7f3\",fi=\"#fbcfe8\",pi=\"#f9a8d4\",ui=\"#f472b6\",di=\"#ec4899\",mi=\"#db2777\",xi=\"#be185d\",bi=\"#9d174d\",hi=\"#831843\",yi=\"#500724\",Ti=\"#fff1f2\",Ei=\"#ffe4e6\",vi=\"#fecdd3\",gi=\"#fda4af\",wi=\"#fb7185\",Li=\"#f43f5e\",Mi=\"#e11d48\",Ri=\"#be123c\",Fi=\"#9f1239\",ki=\"#881337\",Hi=\"#4c0519\";class pe{#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 ct={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new pe(e);t.register(),O.set(e,t)}},O=new WeakMap;class ue{#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 lt={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new ue(e);t.register(),C.set(e,t)}},C=new WeakMap;export{_n as zinc950,Cn as zinc900,On as zinc800,In as zinc700,Sn as zinc600,An as zinc500,Rn as zinc50,Dn as zinc400,Hn as zinc300,kn as zinc200,Fn as zinc100,Yr as yellow950,Xr as yellow900,Gr as yellow800,Wr as yellow700,qr as yellow600,Vr as yellow500,Ur as yellow50,Br as yellow400,zr as yellow300,Kr as yellow200,Pr as yellow100,g as wrapFocus,W as warn,Pa as violet950,Ua as violet900,Na as violet800,_a as violet700,Ca as violet600,Oa as violet500,Ha as violet50,Ia as violet400,Sa as violet300,Aa as violet200,Da as violet100,lt as vHeightTransition,ct as vFocusTrap,ne as useScrollPosition,oe as useRemembered,H as useMutationObserver,Q as useInterval,ee as useInView,fe as useFocusZone,le as useFocusTrapSubscription,A as useFocusTrapReturn,D as useFocusTrapLock,ce as useFocusTrap,k as useEventListener,J as useDebouncedRef,Z as useComponentId,j as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Us as teal950,Ns as teal900,_s as teal800,Cs as teal700,Os as teal600,Is as teal500,ks as teal50,Ss as teal400,As as teal300,Ds as teal200,Hs as teal100,rr as stone950,nr as stone900,or as stone800,tr as stone700,er as stone600,Qn as stone500,Yn as stone50,Jn as stone400,$n as stone300,Zn as stone200,jn as stone100,mn as slate950,dn as slate900,un as slate800,pn as slate700,fn as slate600,ln as slate500,nn as slate50,cn as slate400,an as slate300,sn as slate200,rn as slate100,aa as sky950,sa as sky900,ra as sky800,na as sky700,oa as sky600,ta as sky500,Zs as sky50,ea as sky400,Qs as sky300,Js as sky200,$s as sky100,Hi as rose950,ki as rose900,Fi as rose800,Ri as rose700,Mi as rose600,Li as rose500,Ti as rose50,wi as rose400,gi as rose300,vi as rose200,Ei as rose100,xr as red950,mr as red900,dr as red800,ur as red700,pr as red600,fr as red500,sr as red50,lr as red400,cr as red300,ir as red200,ar as red100,Za as purple950,ja as purple900,Ya as purple800,Xa as purple700,Ga as purple600,Wa as purple500,Ka as purple50,qa as purple400,Va as purple300,Ba as purple200,za as purple100,yi as pink950,hi as pink900,bi as pink800,xi as pink700,mi as pink600,di as pink500,ci as pink50,ui as pink400,pi as pink300,fi as pink200,li as pink100,Rr as orange950,Mr as orange900,Lr as orange800,wr as orange700,gr as orange600,vr as orange500,br as orange50,Er as orange400,Tr as orange300,yr as orange200,hr as orange100,Xn as neutral950,Gn as neutral900,Wn as neutral800,qn as neutral700,Vn as neutral600,Bn as neutral500,Nn as neutral50,zn as neutral400,Kn as neutral300,Pn as neutral200,Un as neutral100,ss as lime950,rs as lime900,ns as lime800,os as lime700,ts as lime600,es as lime500,jr as lime50,Qr as lime400,Jr as lime300,$r as lime200,Zr as lime100,X as isSSR,ka as indigo950,Fa as indigo900,Ra as indigo800,Ma as indigo700,La as indigo600,wa as indigo500,ya as indigo50,ga as indigo400,va as indigo300,Ea as indigo200,Ta as indigo100,bs as green950,xs as green900,ms as green800,ds as green700,us as green600,ps as green500,as as green50,fs as green400,ls as green300,cs as green200,is as green100,Mn as gray950,Ln as gray900,wn as gray800,gn as gray700,vn as gray600,En as gray500,xn as gray50,Tn as gray400,yn as gray300,hn as gray200,bn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,q as getExposedRef,V as getComponentProps,B as getComponentName,M as getBidirectionalFocusElement,ii as fuchsia950,ai as fuchsia900,si as fuchsia800,ri as fuchsia700,ni as fuchsia600,oi as fuchsia500,$a as fuchsia50,ti as fuchsia400,ei as fuchsia300,Qa as fuchsia200,Ja as fuchsia100,z as flattenVNodeTree,Fs as emerald950,Rs as emerald900,Ms as emerald800,Ls as emerald700,ws as emerald600,gs as emerald500,hs as emerald50,vs as emerald400,Es as emerald300,Ts as emerald200,ys as emerald100,js as cyan950,Ys as cyan900,Xs as cyan800,Gs as cyan700,Ws as cyan600,qs as cyan500,Ps as cyan50,Vs as cyan400,Bs as cyan300,zs as cyan200,Ks as cyan100,ha as blue950,ba as blue900,xa as blue800,ma as blue700,da as blue600,ua as blue500,ia as blue50,pa as blue400,fa as blue300,la as blue200,ca as blue100,Nr as amber950,_r as amber900,Cr as amber800,Or as amber700,Ir as amber600,Sr as amber500,Fr as amber50,Ar as amber400,Dr as amber300,Hr as amber200,kr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=8E50B4279ACA2D7D64756E2164756E21\n//# sourceMappingURL=index.js.map\n","<template>\n <svg\n v-if=\"definition\"\n :viewBox=\"`0 0 ${definition.width} ${definition.height}`\"\n :class=\"$style.fontAwesomeIcon\"\n :style=\"{\n fontSize: size && `${size}px`,\n scale: definition.scale > 1 ? definition.scale : undefined\n }\"\n focusable=\"false\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n <path\n v-for=\"path in definition.paths\"\n :d=\"path\"\n fill=\"currentColor\"/>\n </svg>\n\n <i\n v-else-if=\"name\"\n :class=\"$style.materialSymbolIcon\"\n :style=\"{\n fontSize: size && `${size}px`\n }\"\n role=\"img\"\n aria-hidden=\"true\"\n @click=\"onClick\">\n {{ name }}\n </i>\n\n <i\n v-else\n :class=\"$style.icon\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { warn } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed } from 'vue';\n import { iconRegistry } from '$flux/data';\n import $style from '$flux/css/component/Icon.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n name\n } = defineProps<{\n readonly size?: number | string;\n readonly name?: FluxIconName;\n }>();\n\n const definition = computed(() => {\n if (!name) {\n return null;\n }\n\n const icon = iconRegistry[name];\n\n if (!icon) {\n warn(`Unknown icon: ${name}`);\n\n return null;\n }\n\n return {\n width: icon[0],\n height: icon[1],\n paths: (Array.isArray(icon[4]) ? icon[4] : [icon[4]]) as string[],\n scale: Math.max(1, icon[0] / 512)\n };\n });\n\n const onClick = (evt: MouseEvent) => emit('click', evt);\n</script>\n","<template>\n <router-link\n v-if=\"componentType === 'route'\"\n v-bind=\"$attrs\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </router-link>\n\n <a\n v-else-if=\"componentType === 'link'\"\n v-bind=\"$attrs\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </a>\n\n <button\n v-else-if=\"componentType === 'button'\"\n v-bind=\"$attrs\"\n @click=\"onClick($event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </button>\n\n <div\n v-else\n v-bind=\"$attrs\"\n @click=\"onClick\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxPressableType, FluxTo } from '@flux-ui/types';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n mouseenter: [MouseEvent];\n mouseleave: [MouseEvent];\n }>();\n\n defineProps<{\n readonly componentType?: FluxPressableType;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onClick(evt: MouseEvent, navigate?: (evt: MouseEvent) => void): void {\n emit('click', evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n\n navigate?.(evt);\n }\n</script>\n","<template>\n <svg\n :class=\"$style.spinner\"\n viewBox=\"0 0 24 24\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <circle\n :class=\"$style.spinnerTrack\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"/>\n\n <circle\n :class=\"$style.spinnerEffect\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n\n <circle\n :class=\"$style.spinnerValue\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n fill=\"transparent\"\n stroke-width=\"4\"\n stroke-dasharray=\"21 45\"\n stroke-dashoffset=\"30\"\n stroke-linecap=\"round\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Spinner.module.scss';\n\n defineProps<{\n readonly size?: number;\n }>();\n</script>\n","<template>\n <FluxPressable\n :component-type=\"type\"\n :class=\"clsx(\n cssClass,\n isFilled && $style.isFilled,\n size === 'small' && $style.isSmall,\n size === 'medium' && $style.isMedium,\n size === 'large' && $style.isLarge,\n size === 'xl' && $style.isXl\n )\"\n :type=\"isSubmit ? 'submit' : 'button'\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"onClick\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\">\n <slot name=\"before\"/>\n\n <slot name=\"iconLeading\">\n <FluxSpinner\n v-if=\"isLoading && (iconLeading || !iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconLeading\"\n :class=\"cssClassIcon\"\n :name=\"iconLeading\"/>\n </slot>\n\n <slot name=\"label\">\n <span\n v-if=\"label\"\n :class=\"cssClassLabel\">\n {{ label }}\n </span>\n </slot>\n\n <slot name=\"iconTrailing\">\n <FluxSpinner\n v-if=\"isLoading && (!iconLeading && iconTrailing)\"\n :size=\"20\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"cssClassIcon\"\n :name=\"iconTrailing\"/>\n </slot>\n\n <slot name=\"after\"/>\n </FluxPressable>\n</template>\n\n<script lang=\"ts\">\n export const SLOTS = ['default', 'after', 'before', 'iconLeading', 'iconTrailing', 'label'] as const;\n</script>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/base/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n disabled: componentDisabled,\n isLoading,\n size = 'medium',\n tabindex = 0,\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly cssClass: string;\n readonly cssClassIcon: string;\n readonly cssClassLabel: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onClick(evt: MouseEvent): void {\n if (unref(disabled) || isLoading) {\n evt.preventDefault();\n evt.stopPropagation();\n return;\n }\n\n emit('click', evt);\n }\n\n function onMouseEnter(evt: MouseEvent): void {\n emit('mouseenter', evt);\n }\n\n function onMouseLeave(evt: MouseEvent): void {\n emit('mouseleave', evt);\n }\n</script>\n","<template>\n <FluxButton\n :=\"{disabled, isLoading, label, href, rel, target, to, type}\"\n :css-class=\"$style.action\"\n :css-class-icon=\"$style.actionIcon\"\n :css-class-label=\"$style.actionLabel\"\n :class=\"isDestructive && $style.isDestructive\"\n :icon-leading=\"icon\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxIconName } from '@flux-ui/types';\n import FluxButton from './FluxButton.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading' | 'iconTrailing' | 'isFilled' | 'size'> & {\n readonly icon?: FluxIconName;\n readonly isDestructive?: boolean;\n }>();\n</script>\n","import type { FluxFormSelectEntry, FluxFormSelectOption, FluxFormSelectOptions, FluxFormSelectValue } from '@flux-ui/types';\nimport type { Ref } from 'vue';\nimport { computed, unref } from 'vue';\nimport { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n\nexport default function (modelValue: Ref<FluxFormSelectValue>, isMultiple: boolean, options: Ref<FluxFormSelectEntry[]>, searchQuery?: Ref<string>) {\n const values = computed(() => {\n const model = unref(modelValue);\n return Array.isArray(model) ? model : [model];\n });\n\n const groups = computed(() => {\n const groups: FluxFormSelectOptions[] = [];\n const search = unref(searchQuery)?.trim().toLowerCase();\n\n const available = unref(options)\n .filter(o => !('value' in o) || (!search || o.label.toLowerCase().includes(search)))\n .filter(o => !('value' in o) || !isMultiple || !unref(selected).find(s => s.value === o.value));\n\n if (available.length === 0) {\n return [];\n }\n\n if (!available.find(isFluxFormSelectGroup)) {\n return [[null, available]] as FluxFormSelectOptions[];\n }\n\n for (let i = 0; i < available.length;) {\n const item = available[i];\n\n if (isFluxFormSelectOption(item)) {\n ++i;\n groups.push([null, [item]]);\n continue;\n }\n\n const subItems: FluxFormSelectOption[] = [];\n\n for (++i; i <= available.length; ++i) {\n const subItem = available[i];\n\n if (isFluxFormSelectGroup(subItem) || i === available.length) {\n if (subItems.length > 0) {\n groups.push([item, subItems]);\n }\n\n break;\n }\n\n subItems.push(subItem);\n }\n }\n\n return groups;\n });\n\n const selected = computed(() => unref(values)\n .map(v => unref(options).find(o => isFluxFormSelectOption(o) && o.value === v))\n .filter(isFluxFormSelectOption));\n\n return {\n groups,\n selected,\n values\n };\n}\n","import { computed, shallowRef, unref } from 'vue';\n\nexport default function () {\n const tasks = shallowRef(0);\n\n const isLoading = computed(() => unref(tasks) > 0);\n\n function loaded<T extends Function>(fn: T): T {\n return (async (...args: any[]) => {\n tasks.value++;\n\n return await fn(...args)\n .finally(() => tasks.value--);\n }) as unknown as T;\n }\n\n return {\n isLoading,\n loaded\n };\n}\n","import { getCurrentInstance } from 'vue';\nimport type { FluxTranslate, FluxTranslation } from '$flux/data';\nimport { english } from '$flux/data';\n\nconst fallback: FluxTranslate = (key, params) => {\n if (!(key in english)) {\n return key;\n }\n\n let translation: string = english[key as FluxTranslation];\n\n for (let paramName in params) {\n translation = translation.replaceAll(`{${paramName}}`, params[paramName].toString());\n }\n\n return translation;\n};\n\nexport default () => {\n const instance = getCurrentInstance()?.proxy;\n\n if (!instance || !isVueI18n(instance)) {\n return fallback;\n }\n\n return instance.$t;\n};\n\ntype VueI18n = {\n $t: FluxTranslate;\n}\n\nfunction isVueI18n(obj: object | null): obj is VueI18n {\n return !!obj && '$t' in obj;\n}\n","<template>\n <div :class=\"$style.buttonGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Button.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.destructiveButton\"\n :css-class-icon=\"$style.destructiveButtonIcon\"\n :css-class-label=\"$style.destructiveButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"CLASS_MAP[variant]\">\n <slot/>\n\n <slot\n v-if=\"isLoading\"\n name=\"loader\">\n <div :class=\"$style.paneLoader\">\n <FluxSpinner/>\n </div>\n </slot>\n\n <div\n v-if=\"tag\"\n :class=\"$style.paneTag\">\n {{ tag }}\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Pane.module.scss';\n\n const CLASS_MAP = {\n default: $style.paneDefault,\n flat: $style.paneFlat,\n well: $style.paneWell\n } as const;\n\n const {\n variant = 'default'\n } = defineProps<{\n readonly isLoading?: boolean;\n readonly tag?: string;\n readonly variant?: 'default' | 'flat' | 'well';\n }>();\n\n defineSlots<{\n default(): any;\n loader(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"mount\"\n :class=\"$style.flyout\"\n :style=\"{\n '--opener-width': `${openerWidth}px`,\n '--pane-mx': `${paneMarginX}px`,\n '--pane-my': `${paneMarginY}px`,\n '--pane-x': `${paneX - 12}px`,\n '--pane-y': `${paneY - 12}px`\n }\">\n <slot\n name=\"opener\"\n v-bind=\"{close, open, toggle}\"/>\n\n <dialog\n ref=\"dialog\"\n :class=\"$style.flyoutDialog\"\n @click=\"onDialogBackdropClick\"\n @keydown.prevent.esc=\"close\">\n <FluxPane\n v-if=\"isOpen\"\n ref=\"pane\"\n :class=\"clsx(\n $style.flyoutPane,\n isAutoWidth && $style.isAutoWidth,\n isClosing && $style.isClosing,\n isOpening && $style.isOpening\n )\"\n :style=\"{\n width: `${width}px`\n }\">\n <slot v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </FluxPane>\n </dialog>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useFocusTrap } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { provide, ref, unref, useTemplateRef, watch } from 'vue';\n import { FluxFlyoutInjectionKey } from '$flux/data';\n import FluxPane from './FluxPane.vue';\n import $style from '$flux/css/component/Flyout.module.scss';\n\n const {\n direction = 'vertical',\n margin = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly isAutoWidth?: boolean;\n readonly margin?: number;\n readonly width?: number | string;\n }>();\n\n defineSlots<{\n default(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n opener(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const dialogRef = useTemplateRef('dialog');\n const mountRef = useTemplateRef('mount');\n const paneRef = useTemplateRef('pane');\n\n const isClosing = ref(false);\n const isOpening = ref(false);\n const isOpen = ref(false);\n const openerWidth = ref(0);\n const openerHeight = ref(0);\n const paneX = ref(0);\n const paneY = ref(0);\n const paneMarginX = ref(0);\n const paneMarginY = ref(0);\n\n useFocusTrap(paneRef);\n\n function close(): void {\n const pane = unrefTemplateElement(paneRef);\n\n if (!pane) {\n return;\n }\n\n pane.addEventListener('animationend', () => {\n isClosing.value = false;\n isOpen.value = false;\n }, {once: true});\n\n isClosing.value = true;\n }\n\n function open(): void {\n const mount = unref(mountRef)!;\n const {width, height} = mount.children[0].getBoundingClientRect();\n\n isOpen.value = true;\n openerWidth.value = width;\n openerHeight.value = height;\n\n requestAnimationFrame(() => {\n const pane = unrefTemplateElement(paneRef)!;\n\n pane.addEventListener('animationend', () => {\n isOpening.value = false;\n }, {once: true});\n\n isOpening.value = true;\n });\n\n requestAnimationFrame(reposition);\n }\n\n function reposition(): void {\n const mount = unref(mountRef)!;\n const pane = unrefTemplateElement(paneRef)!;\n const {top, left, width, height} = mount.children[0].getBoundingClientRect();\n const {width: paneWidth, height: paneHeight} = pane.getBoundingClientRect();\n\n let x, y, mx = 0, my = 0;\n\n if (direction === 'horizontal') {\n x = left + width;\n y = top + height / 2 - paneHeight / 2;\n mx = margin;\n\n if (x + paneWidth > innerWidth - 30) {\n x = left - paneWidth;\n mx = -mx;\n }\n } else {\n x = left + width / 2 - paneWidth / 2;\n y = top + height;\n my = margin;\n\n if (y + paneHeight > innerHeight - 30) {\n y = top - paneHeight;\n my = -my;\n }\n }\n\n paneX.value = Math.max(30, Math.min(innerWidth - paneWidth - 30, x));\n paneY.value = Math.max(30, Math.min(innerHeight - paneHeight - 30, y));\n paneMarginX.value = mx;\n paneMarginY.value = my;\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n function onDialogBackdropClick(evt: Event): void {\n const target = evt.target as HTMLElement;\n\n if (target.tagName !== 'DIALOG') {\n return;\n }\n\n close();\n }\n\n watch(isOpen, (isOpen, _, onCleanup) => {\n const dialog = unref(dialogRef)!;\n\n if (isOpen && !dialog.open) {\n dialog.showModal();\n\n window.addEventListener('scroll', reposition, {passive: true});\n onCleanup(() => window.removeEventListener('scroll', reposition));\n } else if (!isOpen && dialog.open) {\n dialog.close();\n }\n });\n\n provide(FluxFlyoutInjectionKey, {\n isClosing,\n isOpen,\n isOpening\n });\n\n defineExpose({\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isFilled, isLoading, isSubmit, label, size, href, rel, target, to}\"\n :css-class=\"$style.secondaryButton\"\n :css-class-icon=\"$style.secondaryButtonIcon\"\n :css-class-label=\"$style.secondaryButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n defineProps<FluxButtonProps>();\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <div :class=\"$style.spacer\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n</script>\n","<template>\n <Component\n :is=\"tag ?? 'div'\"\n :class=\"clsx(\n direction === 'horizontal' && $style.stackHorizontal,\n direction === 'vertical' && $style.stackVertical,\n isCentered && $style.isCentered,\n isFill && $style.isFill,\n isWrapping && $style.isWrapping\n )\"\n :style=\"{\n '--gap': gap && `${gap}px`\n }\">\n <slot/>\n </Component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n direction = 'vertical',\n gap = 30\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isCentered?: boolean;\n readonly isFill?: boolean;\n readonly isWrapping?: boolean;\n readonly tag?: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { defineComponent, getCurrentInstance, onMounted, onUnmounted, PropType, ref, SlotsType, VNode } from 'vue';\n import { addTooltip, removeTooltip } from '$flux/data';\n\n export default defineComponent({\n props: {\n content: String as PropType<string | undefined>,\n direction: String as PropType<'horizontal' | 'vertical'>\n },\n slots: Object as SlotsType<{\n content: () => VNode[],\n default: () => VNode[],\n }>,\n setup(props, {slots}) {\n const instance = getCurrentInstance()!;\n\n const tooltipId = ref<number | null>(null);\n\n onMounted(() => {\n const elm = instance.proxy!.$el;\n elm.addEventListener('mouseenter', onHover, {passive: true});\n elm.addEventListener('mouseleave', onLeave, {passive: true});\n });\n\n onUnmounted(() => {\n const elm = instance.proxy!.$el;\n elm.removeEventListener('mouseenter', onHover);\n elm.removeEventListener('mouseleave', onLeave);\n onLeave();\n });\n\n function onHover(): void {\n onLeave();\n\n if ((props.content?.trim().length ?? 0) === 0 && !slots.content) {\n return;\n }\n\n tooltipId.value = addTooltip({\n content: props.content,\n contentSlot: slots.content,\n direction: props.direction || 'vertical',\n origin: instance.proxy?.$el\n });\n }\n\n function onLeave(): void {\n if (tooltipId.value) {\n removeTooltip(tooltipId.value);\n }\n }\n\n return () => (slots.default?.() ?? [])[0] ?? null;\n }\n });\n</script>\n","<template>\n <FluxStack\n :class=\"$style.actionBar\"\n direction=\"horizontal\"\n :gap=\"9\">\n <slot name=\"primary\"/>\n <slot name=\"actionsStart\"/>\n\n <FluxSpacer/>\n\n <slot name=\"actionsBeforeSearch\"/>\n <slot name=\"search\"/>\n <slot name=\"actionsAfterSearch\"/>\n\n <FluxFlyout v-if=\"slots.filter\">\n <template #opener=\"{close, open, toggle}\">\n <slot\n v-bind=\"{close, open, toggle}\"\n name=\"filterOpener\">\n <FluxButtonGroup>\n <FluxSecondaryButton\n icon-leading=\"filter\"\n :label=\"translate('flux.filter')\"\n @click=\"open\"/>\n\n <FluxTooltip\n v-if=\"isResettable\"\n :content=\"translate('flux.filterReset')\">\n <FluxDestructiveButton\n icon-leading=\"xmark\"\n @click=\"$emit('reset')\"/>\n </FluxTooltip>\n </FluxButtonGroup>\n </slot>\n </template>\n\n <template #default=\"{close, paneX, paneY, openerWidth, openerHeight}\">\n <slot\n name=\"filter\"\n v-bind=\"{close, paneX, paneY, openerWidth, openerHeight}\"/>\n </template>\n </FluxFlyout>\n\n <slot name=\"actionsEnd\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useTranslate } from '$flux/composable/private';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxDestructiveButton from './FluxDestructiveButton.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import FluxStack from './FluxStack.vue';\n import FluxTooltip from './FluxTooltip.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineEmits<{\n reset: [];\n }>();\n\n defineProps<{\n readonly isResettable?: boolean;\n }>();\n\n const slots = defineSlots<{\n primary?(): any;\n actionsEnd?(): any;\n actionsStart?(): any;\n actionsAfterSearch?(): any;\n actionsBeforeSearch?(): any;\n search?(): any;\n\n filter?(props: {\n close(): void;\n\n readonly paneX: number;\n readonly paneY: number;\n readonly openerWidth: number;\n readonly openerHeight: number;\n }): any;\n\n filterOpener?(props: {\n close(): void;\n open(): void;\n toggle(): void;\n }): any;\n }>();\n\n const translate = useTranslate();\n</script>\n","<template>\n <FluxStack\n :direction=\"direction\"\n :gap=\"gap\"\n :is-fill=\"isFill\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection } from '@flux-ui/types';\n import FluxStack from './FluxStack.vue';\n\n const {\n direction = 'horizontal',\n gap = 9\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly gap?: number;\n readonly isFill?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.paneBody\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane\n :class=\"$style.actionPane\"\n :variant=\"paneVariant\">\n <slot name=\"base\"/>\n\n <div :class=\"$style.actionPaneGrid\">\n <FluxPaneBody :class=\"$style.actionPaneBody\">\n <slot/>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-if=\"slots.buttons\"\n :class=\"$style.actionPaneBody\">\n <FluxButtonStack direction=\"vertical\">\n <slot name=\"buttons\"/>\n </FluxButtonStack>\n </FluxPaneBody>\n </div>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxButtonStack from './FluxButtonStack.vue';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import $style from '$flux/css/component/Action.module.scss';\n\n defineProps<{\n readonly paneVariant?: 'default' | 'flat' | 'well';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n buttons?(): any;\n base?(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n ref=\"element\"\n direction=\"horizontal\"\n :gap=\"1\"\n tag=\"nav\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'horizontal'\n });\n</script>\n","function p(e,t){return Math.round(e/t)*t}function M(e,t,r,o){return Math.max(t,Math.min(r,+p(e*(r-t)+t,o).toPrecision(4)))}function R(e){return e.toString().split(\".\")[1]?.length??0}function P(e,t,r){let o=[],u=[],n=null;return(...i)=>{return clearTimeout(n),n=setTimeout(()=>{try{let a=e.apply(r,i);o.forEach((m)=>m(a))}catch(a){u.forEach((m)=>m(a))}o=[],u=[]},t),new Promise((a,m)=>{o.push(a),u.push(m)})}}import{defineStore as Y,storeToRefs as ee}from\"pinia\";function v(e,t){let r=Y(e,t);return()=>{let o=r(),u=Object.getOwnPropertyNames(o),n=ee(o),i={};for(let a of u){if(a.startsWith(\"$\")||a.startsWith(\"_\"))continue;if(a in n){i[a]=n[a];continue}i[a]=o[a]}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 x(e,t){let r=URL.createObjectURL(e);b(r,t),URL.revokeObjectURL(r)}function F(e,t,r){let o=new Blob([e],{type:r});x(o,t)}function L(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\"})}function E(e){return e.toLocaleString({weekday:\"long\",day:\"numeric\",month:\"long\"})}function k(e){return e.toLocaleString({year:\"numeric\",month:\"long\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})}function O(e){return e.toLocaleString({month:\"long\"})}function C(e,t=0){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:t,minimumFractionDigits:t}).format(e)}function H(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:\"percent\"}).format(e)}function B(e){return e.toLocaleString({hour:\"2-digit\",minute:\"2-digit\"})}function I(e,t,r=5,o){let u=[1,5,10,25,50,100,250,500,1000,2500,5000,1e4],n=[0.1,0.5,...u],i=t-e,a=o?n:u;for(let l of a){let D=Math.floor(i/l),d=[];if(D>r+1)continue;d.push(e);for(let w=1;w<D;++w)d.push(w*l+e);return d.push(t),d}let m=i.toString().length-1,s=Math.pow(10,m),f=[];for(let l=0;l<i;l+=s)f.push(l+e);return f}function j(e){let t={};do{if(e.name===\"\")break;for(let[r,o]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype))){if([\"constructor\",\"clone\",\"toJSON\"].includes(r))continue;if(!o.get&&!o.set)continue;t[r]=o}}while(e=Object.getPrototypeOf(e));return t}function N(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 g(e,t,r){let o,u,n;if(e/=360,t/=100,r/=100,t===0)o=u=n=r;else{let i=r<0.5?r*(1+t):r+t-r*t,a=2*r-i;o=c(a,i,e+0.3333333333333333),u=c(a,i,e),n=c(a,i,e-0.3333333333333333)}return o=Math.round(o*255),u=Math.round(u*255),n=Math.round(n*255),[o,u,n]}function h(e,t,r){e/=255,t/=255,r/=255;let o=Math.min(e,t,r),u=Math.max(e,t,r),n=u-o,i,a=u===0?0:n/u,m=u;if(u===o)i=0;else{if(u===e)i=(t-r)/n+(t<r?6:0);else if(u===t)i=(r-e)/n+2;else i=(e-t)/n+4;i/=6}return[i,a,m]}function U(e,t,r){return h(...g(e,t,r))}function y(e,t,r){let o=0,u=0,n=0,i=Math.floor(e*6),a=e*6-i,m=r*(1-t),s=r*(1-a*t),f=r*(1-(1-a)*t);switch(i%6){case 0:o=r,u=f,n=m;break;case 1:o=s,u=r,n=m;break;case 2:o=m,u=r,n=f;break;case 3:o=m,u=s,n=r;break;case 4:o=f,u=m,n=r;break;case 5:o=r,u=m,n=s;break}return o=Math.round(o*255),u=Math.round(u*255),n=Math.round(n*255),[o,u,n]}function T(e,t,r){e/=255,t/=255,r/=255;let o=Math.min(e,t,r),u=Math.max(e,t,r),n=u-o,i,a,m;if(n===0)i=0;else if(u===e)i=(t-r)/n%6;else if(u===t)i=(r-e)/n+2;else i=(e-t)/n+4;if(i=Math.round(i*60),i<0)i+=360;return m=(u+o)/2,a=n===0?0:n/(1-Math.abs(2*m-1)),a=+(a*100).toFixed(1),m=+(m*100).toFixed(1),[i,a,m]}function G(e,t,r){return T(...y(e,t,r))}function V(e){if(!globalThis.document)return!1;return e instanceof HTMLElement}function _(e,t){let r=!1;for(let o=0,u=t.length-1;o<t.length;u=o++){let n=t[o][0],i=t[o][1],a=t[u][0],m=t[u][1];if(i>e[1]!=m>e[1]&&e[0]<(a-n)*(e[1]-i)/(m-i)+n)r=!r}return r}function z(e,t){return t.hasSame(e,\"day\")}function W(e){let t=new Uint32Array(1);t[0]=e;function r(){let n=t[0]=t[0]+1831565813|0,i=Math.imul(n^n>>>15,1|n);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}function o(n,i){return r()*(i-n)+n}function u(){return W(r()*4294967296)}return{fork:u,next:r,nextBetween:o}}var te=W;function A(e){if(window.location!==window.parent.location)window.open(e,\"_top\");else window.location.href=e}import{ref as re,watch as ne}from\"vue\";function S(e,t,r=JSON.stringify,o=JSON.parse){let u=localStorage.getItem(e),n=u?o(u):t,i=re(n);return ne(i,(a)=>{if(a===null||a===void 0)localStorage.removeItem(e);else localStorage.setItem(e,r(a))},{deep:!0,immediate:!0}),i}function $(e,t){return S(e,t,(r)=>r??\"\",(r)=>r===\"\"?null:r)}async function J(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),new Error(\"Cannot print, no access to the framed document.\");r.documentElement.innerHTML=e;let o=Array.from(r.getElementsByTagName(\"img\"));await Promise.all(o.map((u)=>new Promise((n)=>{if(u.complete)n(void 0);else u.addEventListener(\"load\",n,{passive:!0}),u.addEventListener(\"error\",n,{passive:!0})}))),t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t)},1000)}function K(e,t,r){let o=e.toString(16).padStart(2,\"0\"),u=t.toString(16).padStart(2,\"0\"),n=r.toString(16).padStart(2,\"0\");return`#${o}${u}${n}`}function Z(e,t,r){e.prototype[t]=r}function X(e,t,r){Object.defineProperty(e,t,{value:r})}function q(e){if(\"startViewTransition\"in document)document.startViewTransition(e);else e()}async function Q(e){return new Promise((t)=>setTimeout(t,e))}var et=\"✔\",tt=\"✘\",rt=\"—\",nt=\"–\",ot=()=>{return};export{Q as waitFor,q as viewTransition,X as setObjectValue,Z as setObjectMethod,p as roundStep,h as rgbToHSV,T as rgbToHSL,K as rgbToHEX,J as printHtml,$ as persistentStringRef,S as persistentRef,A as openUrl,te as mulberry32,z as isToday,_ as isPointInPolygon,V as isHtmlElement,c as hueToRGB,y as hsvToRGB,G as hsvToHSL,g as hslToRGB,U as hslToHSV,N as hexToRGB,j as getPrototypeChain,I as generateStepTicks,B as formatTime,H as formatPercentage,C as formatNumber,O as formatMonth,k as formatDateTime,E as formatDateFull,L as formatDate,b as downloadUrl,F as downloadString,x as downloadBlob,v as defineStore,P as debounce,R as countDecimals,M as clampWithStepPrecision,ot as NOOP,nt as NDASH,rt as MDASH,tt as CROSS,et as CHECK};\n\n//# debugId=3BCA2EF91CDA4E5364756E2164756E21\n//# sourceMappingURL=index.js.map\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.animatedColors\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useComponentId } from '@flux-ui/internals';\n import { computed, onBeforeUnmount, onMounted, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n type Polygon = [number, number, string, PolygonPoint[]];\n type PolygonPoint = [number, number, number];\n\n const {\n colors,\n incrementor = 1,\n opacity = .5,\n seed\n } = defineProps<{\n readonly colors?: string[];\n readonly incrementor?: number;\n readonly opacity?: number;\n readonly seed?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n const componentId = useComponentId();\n\n const contextRef = ref<CanvasRenderingContext2D>();\n const animationFrame = ref(0);\n const tick = ref(0);\n\n const polygons = computed(() => {\n if (!colors || colors.length === 0) {\n return [];\n }\n\n const mulberry = mulberry32(seed ?? unref(componentId));\n const polygons: Polygon[] = [];\n\n for (const color of colors) {\n const localMulberry = mulberry.fork();\n\n const x = colors.length === 1 ? .5 : localMulberry.next();\n const y = colors.length === 1 ? .5 : localMulberry.next();\n const count = Math.round(localMulberry.nextBetween(6, 9));\n const points: PolygonPoint[] = [];\n\n for (let p = 0; p < count; ++p) {\n points.push([\n localMulberry.next(),\n localMulberry.next(),\n localMulberry.next()\n ]);\n }\n\n polygons.push([x, y, color, points]);\n }\n\n return polygons;\n });\n\n onMounted(() => schedule());\n onBeforeUnmount(() => cancel());\n\n function cancel(): void {\n cancelAnimationFrame(animationFrame.value);\n }\n\n function schedule(): void {\n animationFrame.value = requestAnimationFrame(update);\n tick.value += incrementor;\n }\n\n function update(): void {\n const context = unref(contextRef);\n const shapes = unref(polygons);\n\n if (!context || shapes.length === 0) {\n return;\n }\n\n const width = context.canvas.offsetWidth;\n const height = context.canvas.offsetHeight;\n context.canvas.width = width;\n context.canvas.height = height;\n\n const widthBasedOpacity = Math.min(1, Math.max(.15, 360 / width));\n\n context.globalAlpha = opacity * widthBasedOpacity;\n context.globalCompositeOperation = 'screen';\n context.clearRect(0, 0, width, height);\n\n for (const [tx, ty, color, shape] of shapes) {\n context.save();\n context.translate(tx * width, ty * height);\n context.beginPath();\n context.fillStyle = color;\n\n for (let i = 0; i < shape.length; ++i) {\n let [x, y, m] = shape[i];\n\n x = Math.cos(x * Math.PI * 2 + tick.value / (m * 200 + 300)) * (width * .8);\n y = Math.sin(y * Math.PI * 2 + tick.value / (m * 100 + 300)) * (height * .8);\n\n if (i === 0) {\n context.moveTo(x, y);\n } else {\n context.lineTo(x, y);\n }\n }\n\n context.closePath();\n context.fill();\n context.restore();\n }\n\n schedule();\n }\n\n watch(canvasRef, canvas => {\n if (!canvas) {\n contextRef.value = undefined;\n return;\n }\n\n contextRef.value = canvas.getContext('2d', {\n alpha: true,\n colorSpace: 'display-p3'\n })!;\n }, {immediate: true});\n\n watch(polygons, () => {\n cancel();\n schedule();\n });\n</script>\n","<template>\n <div\n :class=\"$style.aspectRatio\"\n :style=\"{aspectRatio}\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n defineProps<{\n aspectRatio: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.autoGrid\"\n :style=\"{\n gap: `${gap}px`,\n '--min-column-width': minColumnWidth\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Layout.module.scss';\n\n const {\n gap = 30\n } = defineProps<{\n readonly gap?: number;\n readonly minColumnWidth: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.height = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.width = width;\n elm.style.height = 'auto';\n elm.style.visibility = 'hidden';\n\n const {height} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('width');\n elm.style.removeProperty('visibility');\n elm.style.height = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = height));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.height = height;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.height = '0'));\n }\n</script>\n","<template>\n <Transition\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @leave=\"leave\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n\n function afterEnter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n elm.style.width = 'auto';\n }\n\n function enter(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {height} = getComputedStyle(elm);\n elm.style.position = 'absolute';\n elm.style.height = height;\n elm.style.width = 'auto';\n elm.style.visibility = 'hidden';\n\n const {width} = getComputedStyle(elm);\n elm.style.removeProperty('position');\n elm.style.removeProperty('height');\n elm.style.removeProperty('visibility');\n elm.style.width = '0';\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = width));\n }\n\n function leave(elm: Element): void {\n if (!isHtmlElement(elm)) {\n return;\n }\n\n const {width} = getComputedStyle(elm);\n elm.style.width = width;\n\n // note: force repaint.\n getComputedStyle(elm);\n\n requestAnimationFrame(() => requestAnimationFrame(() => elm.style.width = '0'));\n }\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.breakthroughTransitionBackEnterActive : $style.breakthroughTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.breakthroughTransitionBackEnterFrom : $style.breakthroughTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.breakthroughTransitionBackLeaveActive : $style.breakthroughTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.breakthroughTransitionBackLeaveTo : $style.breakthroughTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.fadeTransitionEnterActive\"\n :enter-from-class=\"$style.fadeTransitionEnterFrom\"\n :enter-to-class=\"$style.fadeTransitionEnterTo\"\n :leave-active-class=\"$style.fadeTransitionLeaveActive\"\n :leave-from-class=\"$style.fadeTransitionLeaveFrom\"\n :leave-to-class=\"$style.fadeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.overlayTransitionEnterActive\"\n :enter-from-class=\"$style.overlayTransitionEnterFrom\"\n :leave-active-class=\"$style.overlayTransitionLeaveActive\"\n :leave-to-class=\"$style.overlayTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.routeTransitionBackEnterActive : $style.routeTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.routeTransitionBackEnterFrom : $style.routeTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.routeTransitionBackLeaveActive : $style.routeTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.routeTransitionBackLeaveTo : $style.routeTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.slideOverTransitionEnterActive\"\n :enter-from-class=\"$style.slideOverTransitionEnterFrom\"\n :leave-active-class=\"$style.slideOverTransitionLeaveActive\"\n :leave-to-class=\"$style.slideOverTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Overlay.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"$style.tooltipTransitionEnterActive\"\n :enter-from-class=\"$style.tooltipTransitionEnterFrom\"\n :leave-active-class=\"$style.tooltipTransitionLeaveActive\"\n :leave-to-class=\"$style.tooltipTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.verticalWindowTransitionBackEnterActive : $style.verticalWindowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.verticalWindowTransitionBackEnterFrom : $style.verticalWindowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.verticalWindowTransitionBackLeaveActive : $style.verticalWindowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.verticalWindowTransitionBackLeaveTo : $style.verticalWindowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <Transition\n :mode=\"mode\"\n :enter-active-class=\"isBack ? $style.windowTransitionBackEnterActive : $style.windowTransitionEnterActive\"\n :enter-from-class=\"isBack ? $style.windowTransitionBackEnterFrom : $style.windowTransitionEnterFrom\"\n :leave-active-class=\"isBack ? $style.windowTransitionBackLeaveActive : $style.windowTransitionLeaveActive\"\n :leave-to-class=\"isBack ? $style.windowTransitionBackLeaveTo : $style.windowTransitionLeaveTo\">\n <slot/>\n </Transition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Transition.module.scss';\n\n const {\n mode = 'out-in'\n } = defineProps<{\n readonly isBack?: boolean;\n readonly mode?: 'in-out' | 'out-in';\n }>();\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n !status && $style.avatar,\n !!status && $style.statusAvatar,\n type !== 'none' && $style.avatarClickable\n )\"\n :style=\"{\n '--color': color,\n fontSize: size && `${size}px`\n }\"\n :component-type=\"type\"\n role=\"img\"\n :aria-label=\"alt\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <img\n v-if=\"src\"\n :class=\"$style.avatarImage\"\n :alt=\"alt\"\n :src=\"src\"/>\n\n <div\n v-else\n :class=\"fallback === 'colorized' ? $style.avatarFallbackColorized : $style.avatarFallbackNeutral\">\n <span v-if=\"fallbackInitials\">\n {{ fallbackInitials }}\n </span>\n\n <FluxIcon\n v-else-if=\"fallbackIcon\"\n :name=\"fallbackIcon\"/>\n </div>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.avatarLoading\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n\n <div\n v-if=\"status\"\n :class=\"STATUS_CLASS_MAP[status]\"/>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { amber600, blue600, cyan600, emerald600, fuchsia600, green600, indigo600, lime600, orange600, pink600, purple600, red600, rose600, sky600, teal600, violet600, yellow600 } from '@flux-ui/internals';\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Avatar.module.scss';\n\n const STATUS_CLASS_MAP = {\n gray: $style.avatarStatusGray,\n primary: $style.avatarStatusPrimary,\n danger: $style.avatarStatusDanger,\n info: $style.avatarStatusInfo,\n success: $style.avatarStatusSuccess,\n warning: $style.avatarStatusWarning\n } as const;\n\n defineEmits<FluxButtonEmits>();\n\n const {\n fallback = 'colorized',\n fallbackColors = [lime600, green600, emerald600, teal600, cyan600, sky600, blue600, indigo600, violet600, purple600, fuchsia600, pink600, rose600, red600, orange600, amber600, yellow600],\n fallbackIcon = 'user',\n fallbackInitials,\n type = 'none'\n } = defineProps<{\n readonly alt?: string;\n readonly fallback?: 'colorized' | 'neutral';\n readonly fallbackColors?: string[];\n readonly fallbackIcon?: FluxIconName;\n readonly fallbackInitials?: string;\n readonly isLoading?: boolean;\n readonly size?: number;\n readonly src?: string;\n readonly status?: FluxColor;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n const color = computed(() => fallbackColors[unref(colorSeed) % fallbackColors.length]);\n const colorSeed = computed(() => {\n let seed = 6;\n\n if (fallbackInitials) {\n for (let i = 0; i < fallbackInitials.length; ++i) {\n seed ^= fallbackInitials.charCodeAt(i);\n }\n } else if (fallbackIcon) {\n for (let i = 0; i < fallbackIcon.length; ++i) {\n seed ^= fallbackIcon.charCodeAt(i);\n }\n }\n\n return seed;\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.badgeGray,\n color === 'primary' && $style.badgePrimary,\n color === 'danger' && $style.badgeDanger,\n color === 'info' && $style.badgeInfo,\n color === 'success' && $style.badgeSuccess,\n color === 'warning' && $style.badgeWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.badgeDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.badgeIcon\"\n :size=\"16\"\n :name=\"icon\"/>\n\n <span :class=\"$style.badgeLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"type === 'none' && isDeletable\"\n :class=\"$style.badgeClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n type = 'none'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <FluxStack\n direction=\"horizontal\"\n :gap=\"6\"\n is-wrapping>\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import { flattenVNodeTree, orange600, pink600, purple600 } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { cloneVNode, defineComponent, Fragment, h, PropType } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n export default defineComponent({\n inheritAttrs: false,\n props: {\n colors: {default: [purple600, 'transparent', orange600, 'transparent', pink600, 'transparent', purple600], type: Array as PropType<string[]>},\n duration: {default: 9, type: Number},\n offset: {default: 1, type: Number},\n radius: {default: undefined, type: [String, Number] as PropType<string | number>},\n width: {default: 2, type: Number}\n },\n setup(props, {attrs, slots}) {\n return () => h(\n Fragment,\n flattenVNodeTree(slots.default?.() ?? []).map(vnode => cloneVNode(vnode, {\n ...attrs,\n class: clsx(\n attrs.class as string,\n $style.borderShine\n ),\n style: {\n '--shine-colors': props.colors.join(', '),\n '--shine-duration': props.duration,\n '--shine-offset': props.offset,\n '--shine-radius': props.radius,\n '--shine-width': props.width\n }\n }))\n );\n }\n });\n</script>\n","<template>\n <div\n :class=\"clsx(\n !color && $style.iconBoxedDefault,\n color === 'gray' && $style.iconBoxedGray,\n color === 'primary' && $style.iconBoxedPrimary,\n color === 'danger' && $style.iconBoxedDanger,\n color === 'info' && $style.iconBoxedInfo,\n color === 'success' && $style.iconBoxedSuccess,\n color === 'warning' && $style.iconBoxedWarning,\n )\"\n :style=\"{\n fontSize: size && `${size}px`\n }\">\n <FluxIcon :name=\"name\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Icon.module.scss';\n\n defineEmits<{\n click: [MouseEvent];\n }>();\n\n defineProps<{\n readonly color?: FluxColor;\n readonly name: FluxIconName;\n readonly size?: number;\n }>();\n</script>\n","<template>\n <component :is=\"tagName\">\n <slot/>\n </component>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n defineProps<{\n readonly tagName: keyof HTMLElementTagNameMap;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n ref=\"popup\"\n :style=\"{\n '--x': `${state.x}px`,\n '--y': `${state.y}px`,\n '--width': state.width ? `${state.width}px` : undefined\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { isHtmlElement } from '@basmilius/utils';\n import { useMutationObserver } from '@flux-ui/internals';\n import type { FluxDirection } from '@flux-ui/types';\n import { ComponentPublicInstance, onMounted, onUnmounted, reactive, ref, unref, useTemplateRef, watchEffect } from 'vue';\n\n const {\n anchor,\n direction = 'vertical',\n margin = 12,\n position,\n useAnchorWidth\n } = defineProps<{\n readonly anchor?: ComponentPublicInstance | HTMLElement | null;\n readonly direction?: FluxDirection;\n readonly margin?: number;\n readonly position?:\n | 'top' | 'top-left' | 'top-right'\n | 'left' | 'left-top' | 'left-bottom'\n | 'right' | 'right-top' | 'right-bottom'\n | 'bottom' | 'bottom-left' | 'bottom-right';\n readonly useAnchorWidth?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const anchorRef = ref<HTMLElement>();\n const popupRef = useTemplateRef('popup');\n\n const state = reactive({\n x: 0,\n y: 0,\n width: null as number | null\n });\n\n onMounted(() => {\n window.addEventListener('resize', onResize, {passive: true});\n window.addEventListener('scroll', onScroll, {capture: true, passive: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', onResize);\n window.removeEventListener('scroll', onScroll);\n });\n\n useMutationObserver(popupRef, () => {\n reposition();\n }, {childList: true, subtree: true});\n\n function reposition(): void {\n const anchor = unref(anchorRef);\n const popup = unref(popupRef);\n\n if (!anchor || !popup) {\n return;\n }\n\n const {x, y, height, width} = anchor.getBoundingClientRect();\n const {height: popupHeight, width: popupWidth} = popup.getBoundingClientRect();\n\n let px: number,\n py: number;\n\n switch (position) {\n case 'top':\n px = x + width / 2 - popupWidth / 2;\n py = y - popupHeight - margin;\n break;\n\n case 'top-left':\n px = x;\n py = y - popupHeight - margin;\n break;\n\n case 'top-right':\n px = x - popupWidth + width;\n py = y - popupHeight - margin;\n break;\n\n case 'left':\n px = x - popupWidth - margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'left-top':\n px = x - popupWidth - margin;\n py = y;\n break;\n\n case 'left-bottom':\n px = x - popupWidth - margin;\n py = y + height - popupHeight;\n break;\n\n case 'right':\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n break;\n\n case 'right-top':\n px = x + width + margin;\n py = y;\n break;\n\n case 'right-bottom':\n px = x + width + margin;\n py = y + height - popupHeight;\n break;\n\n case 'bottom':\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n break;\n\n case 'bottom-left':\n px = x;\n py = y + height + margin;\n break;\n\n case 'bottom-right':\n px = x - popupWidth + width;\n py = y + height + margin;\n break;\n\n default:\n if (direction === 'horizontal') {\n px = x + width + margin;\n py = y + height / 2 - popupHeight / 2;\n\n if (px + popupWidth > innerWidth) {\n px = x - popupWidth - margin;\n }\n } else {\n px = x + width / 2 - popupWidth / 2;\n py = y + height + margin;\n\n if (py + popupHeight > innerHeight) {\n py = y - popupHeight - margin;\n }\n }\n break;\n }\n\n state.x = px;\n state.y = py;\n }\n\n function resize(): void {\n const anchor = unref(anchorRef);\n\n if (!anchor) {\n return;\n }\n\n const {width} = anchor.getBoundingClientRect();\n state.width = useAnchorWidth ? width : null;\n }\n\n function onResize(): void {\n resize();\n reposition();\n }\n\n function onScroll(): void {\n reposition();\n }\n\n watchEffect(() => {\n if (!anchor || (!isHtmlElement(anchor) && !anchor.$el)) {\n return;\n }\n\n anchorRef.value = isHtmlElement(anchor) ? anchor : anchor.$el;\n\n requestAnimationFrame(resize);\n requestAnimationFrame(reposition);\n });\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading, iconTrailing, isLoading, label, href, rel, target, to}\"\n :css-class=\"$style.menuItem\"\n :css-class-icon=\"$style.menuItemIcon\"\n :css-class-label=\"$style.menuItemLabel\"\n is-filled\n :role=\"isSelectable ? 'menuitemradio' : 'menuitem'\"\n :class=\"{\n [$style.menuItemActive]: isActive,\n [$style.menuItemDestructive]: isDestructive,\n [$style.menuItemHighlighted]: isHighlighted,\n [$style.menuItemIndented]: isIndented,\n [$style.menuItemSelected]: isSelectable && isSelected\n }\"\n :aria-checked=\"isSelectable ? isSelected : undefined\"\n :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 isSecondary && $style.isSecondary\n )\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n ref=\"input\"\n :class=\"clsx(\n $style.formInputNative,\n (!!iconTrailing || type === 'password') && $style.formInputNativeHasIconTrailing,\n !!iconLeading && $style.formInputNativeHasIconLeading\n )\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\"\n :disabled=\"disabled\"\n :max=\"max\"\n :maxlength=\"maxLength\"\n :min=\"min\"\n :placeholder=\"placeholder\"\n :readonly=\"isReadonly\"\n :step=\"step\"\n :type=\"nativeType\"\n :value=\"localValue\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\">\n\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.formInputIconLeading\"\n :name=\"iconLeading\"\n :size=\"18\"/>\n\n <FluxIcon\n v-if=\"type === 'password'\"\n :class=\"$style.formInputIconPasswordToggle\"\n :name=\"nativeType === 'password' ? 'eye' : 'eye-slash'\"\n :size=\"18\"\n @click=\"passwordTypeToggle()\"/>\n\n <FluxIcon\n v-else-if=\"iconTrailing\"\n :class=\"$style.formInputIconTrailing\"\n :name=\"iconTrailing\"\n :size=\"18\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import type { FluxAutoCompleteType, FluxIconName, FluxInputMask, FluxInputType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { inputMask } from '$flux/data';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n showPicker: [];\n }>();\n\n const modelValue = defineModel<object | string | number | null>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n pattern,\n type = 'text'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly isSecondary?: boolean;\n readonly max?: string | number;\n readonly maxLength?: number;\n readonly min?: string | number;\n readonly pattern?: FluxInputMask;\n readonly placeholder?: string;\n readonly step?: number;\n readonly type?: FluxInputType;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef<HTMLInputElement>('input');\n const {id} = useFormFieldInjection();\n\n const localValue = ref<string | null>(null);\n const nativeType = ref(type);\n\n function blur(): void {\n unrefTemplateElement(inputRef)?.blur();\n }\n\n function focus(): void {\n unrefTemplateElement(inputRef)?.focus();\n }\n\n function passwordTypeToggle(): void {\n if (type !== 'password') {\n return;\n }\n\n nativeType.value = unref(nativeType) === 'password' ? 'text' : 'password';\n }\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n function onInput(evt: Event): void {\n const value = (evt.target as HTMLInputElement).value;\n\n switch (type) {\n case 'date':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n const dateTime = DateTime.fromISO(value);\n\n if (!dateTime.isValid) {\n return;\n }\n\n modelValue.value = dateTime;\n break;\n\n case 'number':\n modelValue.value = Number(value);\n break;\n\n default:\n modelValue.value = value;\n break;\n }\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (!['date', 'datetime-local', 'month', 'week'].includes(type)) {\n return;\n }\n\n if (evt.key === ' ') {\n emit('showPicker');\n evt.preventDefault();\n }\n }\n\n watch([modelValue, () => type], ([modelValue, type]) => {\n if (!modelValue && modelValue !== 0) {\n localValue.value = null;\n return;\n }\n\n if (DateTime.isDateTime(modelValue)) {\n const iso = modelValue.toISO()!;\n\n switch (type) {\n case 'date':\n localValue.value = iso.substring(0, 10);\n break;\n\n case 'datetime-local':\n localValue.value = iso.substring(0, 16);\n break;\n\n case 'time':\n localValue.value = iso.substring(11, 16);\n break;\n\n default:\n localValue.value = iso;\n break;\n }\n\n return;\n }\n\n localValue.value = modelValue.toString();\n }, {immediate: true});\n\n watch([inputRef, () => pattern, localValue], ([input, pattern, value], __, onCleanup) => {\n if (!input || !pattern) {\n return;\n }\n\n const mask = inputMask[pattern](input);\n\n if (value) {\n mask.value = value;\n modelValue.value = mask.value;\n }\n\n onCleanup(() => mask.destroy());\n }, {immediate: true});\n\n watch(() => type, type => nativeType.value = type);\n\n defineExpose({\n blur,\n focus\n });\n</script>\n","<template>\n <div\n :class=\"isHorizontal ? $style.menuGroupHorizontal : $style.menuGroupVertical\"\n role=\"group\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isHorizontal?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.menuSubHeader\"\n role=\"presentation\">\n <FluxIcon\n v-if=\"iconLeading\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconLeading\"/>\n\n <span :class=\"$style.menuSubHeaderLabel\">\n {{ label }}\n </span>\n\n <FluxIcon\n v-if=\"iconTrailing\"\n :class=\"$style.menuSubHeaderIcon\"\n :name=\"iconTrailing\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly iconLeading?: FluxIconName;\n readonly iconTrailing?: FluxIconName;\n readonly label: string;\n }>();\n</script>\n","<template>\n <FluxMenuGroup>\n <div\n v-if=\"isSearchable\"\n :class=\"$style.filterSearch\">\n <FluxFormInput\n v-model=\"modelSearch\"\n auto-complete=\"off\"\n is-secondary\n icon-leading=\"magnifying-glass\"\n :placeholder=\"searchPlaceholder\"\n type=\"search\"/>\n </div>\n\n <FluxMenuItem\n v-if=\"isLoading && options.length === 0\"\n disabled\n is-loading/>\n\n <template\n v-else\n v-for=\"option of options\">\n <FluxMenuSubHeader\n v-if=\"isFluxFilterOptionHeader(option)\"\n :label=\"option.title\"/>\n\n <FluxMenuItem\n v-else-if=\"isFluxFilterOptionItem(option)\"\n is-selectable\n :is-selected=\"selected.includes(option.value)\"\n :label=\"option.label\"\n @click=\"select(option)\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionItem, FluxFilterOptionRow, FluxFilterValueSingle } from '@flux-ui/types';\n import { isFluxFilterOptionHeader, isFluxFilterOptionItem } from '$flux/data';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n select: [FluxFilterValueSingle];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineProps<{\n readonly isLoading?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFilterOptionRow[];\n readonly selected: FluxFilterValueSingle[];\n readonly searchPlaceholder?: string;\n }>();\n\n function select(option: FluxFilterOptionItem): void {\n emit('select', option.value);\n }\n</script>\n","<template>\n <nav\n ref=\"element\"\n :class=\"isLarge ? $style.menuLarge : $style.menuNormal\"\n role=\"menu\"\n aria-orientation=\"vertical\">\n <slot/>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useFocusZone } from '@flux-ui/internals';\n import { useTemplateRef } from 'vue';\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly isLarge?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const elementRef = useTemplateRef('element');\n\n useFocusZone(elementRef, {\n direction: 'vertical'\n });\n</script>\n","<template>\n <FluxPressable\n :class=\"clsx(\n color === 'gray' && $style.tagGray,\n color === 'primary' && $style.tagPrimary,\n color === 'danger' && $style.tagDanger,\n color === 'info' && $style.tagInfo,\n color === 'success' && $style.tagSuccess,\n color === 'warning' && $style.tagWarning\n )\"\n :component-type=\"type\"\n :tabindex=\"tabindex\"\n :href=\"href\"\n :rel=\"rel\"\n :target=\"target\"\n :to=\"to\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.tagIcon\"\n :size=\"16\"/>\n\n <span\n v-else-if=\"dot\"\n :class=\"$style.tagDot\"/>\n\n <FluxIcon\n v-else-if=\"icon\"\n :class=\"$style.tagIcon\"\n :name=\"icon\"\n :size=\"16\"/>\n\n <span :class=\"$style.tagLabel\">\n {{ label }}\n </span>\n\n <button\n v-if=\"!isClickable && isDeletable\"\n :class=\"$style.tagClose\"\n type=\"button\"\n @click=\"onDeleteClick()\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </FluxPressable>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxColor, FluxIconName, FluxPressableType, FluxTo } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxPressable from './FluxPressable.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Badge.module.scss';\n\n const emit = defineEmits<FluxButtonEmits & {\n delete: [];\n }>();\n\n const {\n color = 'gray',\n isClickable\n } = defineProps<{\n readonly color?: FluxColor;\n readonly dot?: boolean;\n readonly icon?: FluxIconName;\n readonly isClickable?: boolean;\n readonly isDeletable?: boolean;\n readonly isLoading?: boolean;\n readonly label: string;\n readonly type?: FluxPressableType;\n readonly tabindex?: string | number;\n readonly href?: string;\n readonly rel?: string;\n readonly target?: string;\n readonly to?: FluxTo;\n }>();\n\n function onDeleteClick(): void {\n emit('delete');\n }\n</script>\n","<template>\n <Anchor\n ref=\"anchor\"\n :=\"$attrs\"\n :class=\"clsx(\n $style.formSelect,\n disabled && $style.isDisabled,\n isPopupOpen && $style.isFocused,\n isSearchable && $style.isSearchable\n )\"\n :id=\"id\"\n :aria-disabled=\"disabled ? true : undefined\"\n tabindex=\"0\"\n tag-name=\"div\"\n @click=\"toggle()\"\n @keydown=\"onKeyDown\"\n @keyup=\"onKeyUp\">\n <template v-if=\"!isMultiple && selected[0]\">\n <FluxMenuItem\n :class=\"$style.formSelectSelected\"\n :command=\"selected[0].command\"\n :command-icon=\"selected[0].commandIcon\"\n :icon-leading=\"selected[0].icon\"\n :label=\"selected[0].label\"\n tabindex=\"-1\"/>\n </template>\n\n <template v-else-if=\"isMultiple && selected[0]\">\n <FluxTag\n v-for=\"option of selected\"\n :key=\"option.value ?? 'null option'\"\n :label=\"option.label\"\n is-deletable\n @delete=\"deselect(option.value)\"/>\n </template>\n\n <template v-else-if=\"placeholder\">\n <span :class=\"$style.formSelectPlaceholder\">\n {{ placeholder }}\n </span>\n </template>\n\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.formSelectIcon\"\n :size=\"16\"/>\n\n <FluxIcon\n v-else\n :class=\"$style.formSelectIcon\"\n name=\"angle-down\"/>\n </Anchor>\n\n <Teleport to=\"body\">\n <FluxFadeTransition>\n <AnchorPopup\n v-if=\"isPopupOpen && !disabled\"\n ref=\"anchorPopup\"\n :class=\"clsx(\n $style.formSelectPopup,\n isKeyboardAction && $style.isKeyboardAction,\n isSearchable && $style.isSearchable\n )\"\n :anchor=\"anchorRef\"\n direction=\"vertical\"\n use-anchor-width>\n <FluxFormInput\n v-if=\"isSearchable\"\n v-model=\"modelSearch\"\n ref=\"searchInputElement\"\n auto-complete=\"off\"\n :class=\"$style.formSelectInput\"\n type=\"search\"\n icon-trailing=\"magnifying-glass\"\n :placeholder=\"translate('flux.search')\"\n @keydown=\"onKeyDown\"/>\n\n <FluxMenu v-if=\"!isLoading && options.length === 0\">\n <FluxMenuSubHeader :label=\"translate('flux.noItems')\"/>\n </FluxMenu>\n\n <FluxMenu v-else>\n <template\n v-for=\"([item, subItems], index) of options\"\n :key=\"`group-${index}`\">\n <FluxMenuGroup>\n <FluxMenuSubHeader\n v-if=\"isFluxFormSelectGroup(item)\"\n :icon-leading=\"item.icon\"\n :label=\"item.label\"/>\n\n <template v-for=\"(subItem, index) of subItems\">\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(subItem)\"\n ref=\"optionElements\"\n :key=\"index\"\n :command=\"subItem.command\"\n :command-icon=\"subItem.commandIcon\"\n :icon-leading=\"subItem.icon\"\n :is-active=\"!!selected.find(so => so.value === subItem.value)\"\n :is-highlighted=\"highlightedId === subItem.value\"\n :label=\"subItem.label\"\n type=\"button\"\n @click=\"select(subItem.value)\"/>\n </template>\n </FluxMenuGroup>\n\n <FluxMenuItem\n v-if=\"isFluxFormSelectOption(item)\"\n ref=\"optionElements\"\n :key=\"`item-${index}`\"\n :command=\"item.command\"\n :command-icon=\"item.commandIcon\"\n :icon-leading=\"item.icon\"\n :is-active=\"!!selected.find(so => so.value === item.value)\"\n :is-highlighted=\"highlightedId === item.value\"\n :label=\"item.label\"\n type=\"button\"\n @click=\"select(item.value)\"/>\n </template>\n </FluxMenu>\n </AnchorPopup>\n </FluxFadeTransition>\n </Teleport>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useClickOutside } from '@flux-ui/internals';\n import type { FluxFormSelectOption, FluxFormSelectOptions } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { ComponentPublicInstance, computed, nextTick, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import { isFluxFormSelectGroup, isFluxFormSelectOption } from '$flux/data';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxFormInput from '$flux/component/FluxFormInput.vue';\n import FluxIcon from '$flux/component/FluxIcon.vue';\n import FluxMenu from '$flux/component/FluxMenu.vue';\n import FluxMenuGroup from '$flux/component/FluxMenuGroup.vue';\n import FluxMenuItem from '$flux/component/FluxMenuItem.vue';\n import FluxMenuSubHeader from '$flux/component/FluxMenuSubHeader.vue';\n import FluxSpinner from '$flux/component/FluxSpinner.vue';\n import FluxTag from '$flux/component/FluxTag.vue';\n import Anchor from './Anchor.vue';\n import AnchorPopup from './AnchorPopup.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const INITIAL_HIGHLIGHTED_INDEX = -1;\n\n const emit = defineEmits<{\n keyDown: [KeyboardEvent];\n deselect: [string | number | null];\n select: [string | number | null];\n search: [string];\n close: [];\n open: [];\n }>();\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled: componentDisabled,\n isMultiple,\n options,\n selected\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n readonly isSearchable?: boolean;\n readonly options: FluxFormSelectOptions[];\n readonly placeholder?: string;\n readonly selected: FluxFormSelectOption[];\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n const translate = useTranslate();\n\n const anchorRef = useTemplateRef<ComponentPublicInstance>('anchor');\n const anchorPopupRef = useTemplateRef('anchorPopup');\n const optionElementRefs = useTemplateRef<typeof FluxMenuItem[]>('optionElements');\n const searchInputElementRef = useTemplateRef<ComponentPublicInstance<typeof FluxFormInput>>('searchInputElement');\n\n const highlightedIndex = ref(INITIAL_HIGHLIGHTED_INDEX);\n const isKeyboardAction = ref(false);\n const isPopupOpen = ref(false);\n\n const focusElement = computed(() => unrefTemplateElement(searchInputElementRef) ?? unrefTemplateElement(anchorRef));\n const highlightedId = computed(() => unref(rawOptions)[unref(highlightedIndex)]?.value);\n const rawOptions = computed(() => options.map(group => group[1]).flat());\n\n useClickOutside([anchorRef, anchorPopupRef], isPopupOpen, () => isPopupOpen.value = false);\n useClickOutside(anchorRef, isPopupOpen, () => unref(focusElement)?.focus());\n\n function deselect(id: string | number | null): void {\n emit('deselect', id);\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function select(id: string | number | null): void {\n emit('select', id);\n\n !isMultiple && (isPopupOpen.value = false);\n\n highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX;\n modelSearch.value = '';\n\n nextTick(() => unref(focusElement)?.focus());\n }\n\n function toggle(): void {\n if (unref(disabled)) {\n return;\n }\n\n isPopupOpen.value = !unref(isPopupOpen);\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n emit('keyDown', evt);\n\n if (!unref(isPopupOpen)) {\n if (evt.key === 'Enter') {\n isPopupOpen.value = true;\n }\n\n return;\n }\n\n isKeyboardAction.value = true;\n\n if (unref(highlightedIndex) === INITIAL_HIGHLIGHTED_INDEX && ['ArrowDown', 'ArrowUp'].includes(evt.key)) {\n const options = unref(optionElementRefs);\n const selectedIndex = options?.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n\n highlightedIndex.value = selectedIndex ?? INITIAL_HIGHLIGHTED_INDEX;\n }\n\n switch (evt.key) {\n case 'ArrowUp':\n highlightedIndex.value = Math.max(0, unref(highlightedIndex) - 1);\n break;\n\n case 'ArrowDown':\n highlightedIndex.value = Math.min(unref(rawOptions).length - 1, unref(highlightedIndex) + 1);\n break;\n\n case 'Backspace':\n const search = unref(modelSearch);\n\n if (search.length > 0 || selected.length === 0) {\n return;\n }\n\n deselect(selected[selected.length - 1].value);\n break;\n\n case 'Enter':\n const id = unref(highlightedId);\n id && select(id);\n break;\n\n case 'Escape':\n isPopupOpen.value = false;\n break;\n\n case 'Tab':\n isPopupOpen.value = false;\n return;\n\n default:\n if (evt.key.match(/[a-z]/)) {\n highlightedIndex.value = unref(rawOptions).findIndex(o => o.label.toLowerCase().startsWith(evt.key));\n } else {\n highlightedIndex.value = -1;\n }\n return;\n }\n\n evt.preventDefault();\n }\n\n function onKeyUp(): void {\n isKeyboardAction.value = false;\n }\n\n watch(highlightedIndex, highlightedIndex => {\n const options = unref(optionElementRefs)!;\n options[highlightedIndex]?.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n watch(isPopupOpen, isPopupOpen => {\n if (!isPopupOpen) {\n emit('close');\n return;\n }\n\n nextTick(() => {\n const searchInput = unref(searchInputElementRef);\n searchInput?.focus();\n });\n\n nextTick(() => {\n const options = unref(optionElementRefs);\n\n if (!options || isMultiple) {\n return;\n }\n\n const selectedIndex = options.findIndex(o => 'isActive' in o.$props && o.$props.isActive);\n const option = options[selectedIndex];\n\n if (!option) {\n return;\n }\n\n option.$el.scrollIntoView({\n block: 'center'\n });\n });\n\n emit('open');\n });\n\n watch(modelSearch, searchQuery => emit('search', searchQuery));\n\n watch([() => options, isPopupOpen], () => highlightedIndex.value = INITIAL_HIGHLIGHTED_INDEX);\n</script>\n","<template>\n <div :class=\"$style.ticks\">\n <template\n v-for=\"tick of ticks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickLarge\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\">\n <span>{{ tick }}</span>\n </div>\n </template>\n\n <template\n v-for=\"tick of smallTicks\"\n :key=\"tick\">\n <div\n :class=\"$style.tickSmall\"\n :style=\"{\n '--position': (tick - lower) / (upper - lower)\n }\"/>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { generateStepTicks } from '@basmilius/utils';\n import { computed } from 'vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const {\n lower,\n upper\n } = defineProps<{\n readonly lower: number;\n readonly upper: number;\n }>();\n\n const smallTicks = computed(() => generateStepTicks(lower, upper, 50, true).filter(s => !ticks.value.includes(s)));\n const ticks = computed(() => generateStepTicks(lower, upper, 5));\n</script>\n","<template>\n <div\n ref=\"root\"\n :class=\"clsx(\n $style.slider,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n role=\"slider\"\n :aria-disabled=\"disabled ? true : undefined\"\n @pointerdown=\"onPointerDown\">\n <FluxTicks\n v-if=\"isTicksVisible\"\n :lower=\"min\"\n :upper=\"max\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { onMounted, onUnmounted, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxTicks from '$flux/component/FluxTicks.vue';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n dragging: [boolean];\n update: [number];\n }>();\n\n const {\n disabled: componentDisabled,\n isDragging\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly isTicksVisible?: boolean;\n readonly max: number;\n readonly min: number;\n readonly step: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const rootRef = useTemplateRef('root');\n\n onMounted(() => {\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp, {passive: true});\n });\n\n onUnmounted(() => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n });\n\n function onPointerDown(evt: PointerEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n emit('dragging', true);\n requestAnimationFrame(() => onPointerMove(evt));\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const root = unrefTemplateElement(rootRef);\n\n if (!isDragging || !root) {\n return;\n }\n\n let {left, width} = root.getBoundingClientRect();\n left += 6; // margin.\n width -= 12; // margin times two.\n\n emit('update', Math.max(0, Math.min(1, (evt.pageX - left) / width)));\n evt.preventDefault();\n }\n\n function onPointerUp(): void {\n emit('dragging', false);\n }\n\n watch(() => isDragging, () => emit('dragging', isDragging));\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.sliderThumb,\n disabled && $style.isDisabled,\n isDragging && $style.isDragging\n )\"\n :style=\"{\n left: `${position * 100}%`\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n type=\"button\"\n @keydown=\"onKeyDown\"\n @pointerdown=\"$emit('grab', $event)\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import { toRef, unref } from 'vue';\n import { useDisabled } from '$flux/composable';\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n const emit = defineEmits<{\n decrement: [];\n grab: [PointerEvent];\n increment: [];\n }>();\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly isDragging?: boolean;\n readonly position: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n function onKeyDown(evt: KeyboardEvent): void {\n if (unref(disabled)) {\n return;\n }\n\n switch (evt.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n emit('decrement');\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n emit('increment');\n break;\n\n default:\n return;\n }\n\n evt.preventDefault();\n }\n</script>\n","<template>\n <div :class=\"$style.sliderTrack\">\n <div\n :class=\"$style.sliderTrackValue\"\n :style=\"{\n left: `${percentageLower * 100}%`,\n width: `${(percentageUpper - percentageLower) * 100}%`\n }\"/>\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/primitive/Slider.module.scss';\n\n defineProps<{\n readonly percentageLower: number;\n readonly percentageUpper: number;\n }>();\n</script>\n","import { flattenVNodeTree, 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 <FluxTableRow>\n <slot\n name=\"header\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"'footer' in slots\"\n #footer>\n <FluxTableRow>\n <slot\n name=\"footer\"\n v-bind=\"{page, perPage, rows, total}\"/>\n </FluxTableRow>\n </template>\n\n <template\n v-if=\"total > limits[0]\"\n #pagination>\n <slot\n name=\"pagination\"\n v-bind=\"{page, perPage, rows, total}\">\n <FluxPaginationBar\n :limits=\"limits\"\n :page=\"page\"\n :per-page=\"perPage\"\n :total=\"total\"\n @limit=\"emit('limit', $event)\"\n @navigate=\"emit('navigate', $event)\"/>\n </slot>\n </template>\n\n <FluxTableRow\n v-for=\"(row, index) of rows\"\n :key=\"uniqueKey ? row[uniqueKey] : index\">\n <template v-for=\"(_, name) of slots\">\n <slot\n v-if=\"!IGNORED_SLOTS.includes(name as string)\"\n v-bind=\"{index, page, perPage, row, rows, total}\"\n :name=\"name\"/>\n </template>\n </FluxTableRow>\n </FluxTable>\n</template>\n\n<script\n lang=\"ts\"\n setup\n generic=\"T extends Record<string, any>\">\n import type { VNode } from 'vue';\n import { computed } from 'vue';\n import FluxPaginationBar from './FluxPaginationBar.vue';\n import FluxTable from './FluxTable.vue';\n import FluxTableRow from './FluxTableRow.vue';\n\n const IGNORED_SLOTS: string[] = ['header', 'footer', 'colgroups', 'pagination'];\n\n const emit = defineEmits<{\n limit: [number];\n navigate: [number];\n }>();\n\n const {\n isBordered = true,\n isHoverable = false,\n isLoading = false,\n isSeparated = true,\n isStriped = false,\n dataSet,\n perPage\n } = defineProps<{\n readonly dataSet: T[];\n readonly fillColumns?: number;\n readonly isBordered?: boolean;\n readonly isHoverable?: boolean;\n readonly isLoading?: boolean;\n readonly isSeparated?: boolean;\n readonly isStriped?: boolean;\n readonly limits: number[];\n readonly page: number;\n readonly perPage: number;\n readonly total: number;\n readonly uniqueKey?: string;\n }>();\n\n const slots = defineSlots<{\n [key: string]: (props: {\n readonly index: number;\n readonly page: number;\n readonly perPage: number;\n readonly row: T;\n readonly rows: T[];\n readonly total: number;\n }) => VNode;\n\n footer(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n header(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n pagination(props: {\n readonly page: number;\n readonly perPage: number;\n readonly rows: T[];\n readonly total: number;\n }): VNode;\n\n colgroups(): VNode;\n }>();\n\n const rows = computed(() => dataSet.slice(0, perPage));\n</script>\n","<template>\n <div :class=\"$style.datePicker\">\n <div :class=\"$style.datePickerHeader\">\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDatePrevious, 'month')\"\n icon-leading=\"angle-left\"\n :aria-label=\"translate('flux.previous')\"\n @click=\"previousMonth\"/>\n </FluxFadeTransition>\n\n <div\n :class=\"$style.datePickerHeaderView\"\n :id=\"id\"\n aria-live=\"polite\"\n role=\"presentation\">\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('month')\">\n {{ viewMonth }}\n </button>\n\n <button\n :class=\"$style.datePickerHeaderViewButton\"\n type=\"button\"\n @click=\"setView('year')\">\n {{ viewYear }}\n </button>\n </div>\n\n <FluxFadeTransition>\n <FluxSecondaryButton\n v-if=\"viewMode === 'date'\"\n :disabled=\"!isWithinBoundary(viewDateNext, 'month')\"\n icon-leading=\"angle-right\"\n :aria-label=\"translate('flux.next')\"\n @click=\"nextMonth\"/>\n </FluxFadeTransition>\n </div>\n\n <FluxVerticalWindowTransition :is-back=\"viewMode === 'date'\">\n <div\n v-if=\"viewMode === 'date'\"\n key=\"date\"\n :class=\"$style.datePickerDates\"\n :aria-labelledby=\"id\">\n <FluxWindowTransition :is-back=\"isTransitioningToPast\">\n <div\n :key=\"viewDate.month\"\n :class=\"$style.datePickerDatesGrid\">\n <template\n v-for=\"day of days\"\n :key=\"day\">\n <span :class=\"$style.datePickerDay\">{{ day }}</span>\n </template>\n\n <template\n v-for=\"date of dates\"\n :key=\"date\">\n <button\n :class=\"clsx(\n $style.datePickerDate,\n isDisabled(date) && $style.isDisabled,\n isWithinRange(date, 'end') && $style.isRangeEnd,\n isWithinRange(date) && $style.isRangeEntry,\n isWithinRange(date, 'start') && $style.isRangeStart,\n isWithinSelection(date, 'end') && $style.isSelectionEnd,\n isWithinSelection(date) && $style.isSelectionEntry,\n isWithinSelection(date, 'start') && $style.isSelectionStart,\n isSelected(date) && $style.isSelected\n )\"\n tabindex=\"-1\"\n type=\"button\"\n @click=\"setDate(date)\"\n @mouseover=\"onDateMouseOver(date)\"\n @mouseout=\"onDateMouseOut\">\n {{ date.toLocaleString({day: 'numeric'}) }}\n </button>\n </template>\n </div>\n </FluxWindowTransition>\n </div>\n\n <div\n v-else-if=\"viewMode === 'month'\"\n key=\"month\"\n :class=\"$style.datePickerMonths\">\n <template\n v-for=\"month of months\"\n :key=\"month\">\n <FluxSecondaryButton\n :disabled=\"!isWithinBoundary(month.date, 'month')\"\n :label=\"month.label\"\n tabindex=\"-1\"\n @click=\"setViewMonth(month.date)\"/>\n </template>\n </div>\n\n <div\n v-else-if=\"viewMode === 'year'\"\n key=\"year\"\n :class=\"$style.datePickerYears\">\n <FluxSecondaryButton\n icon-leading=\"angle-left\"\n tabindex=\"-1\"\n @click=\"previousYears\"/>\n\n <template\n v-for=\"year of years\"\n :key=\"year\">\n <FluxSecondaryButton\n :label=\"year.toString()\"\n tabindex=\"-1\"\n @click=\"setViewYear(year)\"/>\n </template>\n\n <FluxSecondaryButton\n icon-leading=\"angle-right\"\n tabindex=\"-1\"\n @click=\"nextYears\"/>\n </div>\n </FluxVerticalWindowTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useCalendar, useCalendarMonthSwitcher, useCalendarYearSwitcher } from '@flux-ui/internals';\n import { clsx } from 'clsx';\n import { DateTime } from 'luxon';\n import { computed, ref, unref, useId, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition, FluxVerticalWindowTransition, FluxWindowTransition } from '$flux/transition';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/DatePicker.module.scss';\n\n const modelValue = defineModel<DateTime | DateTime[] | null>({\n default: null,\n required: true\n });\n\n const {\n max,\n min,\n rangeMode\n } = defineProps<{\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const id = useId();\n const translate = useTranslate();\n\n const {\n isTransitioningToPast,\n viewDate,\n viewDateNext,\n viewDatePrevious,\n viewMonth,\n viewYear,\n dates,\n days,\n setViewDate,\n nextMonth,\n previousMonth\n } = useCalendar(getInitialDate());\n\n const {\n months\n } = useCalendarMonthSwitcher(viewDate, 'short');\n\n const {\n years,\n next: nextYears,\n previous: previousYears\n } = useCalendarYearSwitcher(viewDate);\n\n const selection = ref<[DateTime | null, DateTime | null]>([null, null]);\n const viewMode = ref<'date' | 'month' | 'year'>('date');\n\n const maxDate = computed(() => (max ?? DateTime.now().endOf('year').plus({year: 100})).startOf('day'));\n const minDate = computed(() => (min ?? DateTime.now().startOf('year').minus({year: 100})).startOf('day'));\n const normalizedSelection = computed(() => {\n const [start, end] = unref(selection);\n\n if (!start || !end) {\n return [start, end];\n }\n\n if (start > end) {\n return [end, start];\n } else {\n return [start, end];\n }\n });\n\n watch(modelValue, () => {\n setViewDate(getInitialDate());\n });\n\n function getInitialDate(): DateTime {\n const value = unref(modelValue);\n let date: DateTime;\n\n if (!value) {\n date = DateTime.now();\n } else if (Array.isArray(value)) {\n date = value[1];\n } else {\n date = value as DateTime;\n }\n\n return date.startOf('day');\n }\n\n function isDisabled(date: DateTime): boolean {\n if (unref(viewDate).month !== date.month) {\n return true;\n }\n\n return !isWithinBoundary(date);\n }\n\n function isSelected(date: DateTime): boolean {\n if (rangeMode) {\n return false;\n }\n\n const value = unref(modelValue) as (DateTime | DateTime[]);\n\n if (!value || Array.isArray(value)) {\n return false;\n }\n\n return value.hasSame(date, 'day');\n }\n\n function isWithinBoundary(date: DateTime, unit?: 'month'): boolean {\n if (unit === 'month') {\n return unref(maxDate).endOf('month') >= date && unref(minDate).startOf('month') <= date;\n }\n\n return unref(maxDate) >= date && unref(minDate) <= date;\n }\n\n function isWithinRange(date: DateTime, edge?: 'start' | 'end'): boolean {\n if (!rangeMode) {\n return false;\n }\n\n const value = unref(modelValue);\n\n if (!value || !Array.isArray(value)) {\n return false;\n }\n\n if (edge) {\n const index = edge === 'start' ? 0 : 1;\n\n return value[index].hasSame(date, 'day');\n }\n\n return date >= value[0].startOf('day') && date <= value[1].startOf('day');\n }\n\n function isWithinSelection(date: DateTime, edge?: 'start' | 'end'): boolean {\n const [selectionStart, selectionEnd] = unref(normalizedSelection);\n\n if (!selectionStart || !selectionEnd) {\n return false;\n }\n\n if (edge) {\n return (edge === 'start' ? selectionStart : selectionEnd)?.hasSame(date, 'day');\n }\n\n return date >= selectionStart && date <= selectionEnd;\n }\n\n function setDate(date: DateTime): void {\n switch (rangeMode) {\n case 'range':\n const [start] = unref(selection);\n\n if (!start) {\n selection.value = [date, date];\n } else {\n if (date >= start) {\n modelValue.value = [start, date];\n } else {\n modelValue.value = [date, start];\n }\n\n selection.value = [null, null];\n }\n break;\n\n case 'month':\n modelValue.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n modelValue.value = [date.startOf('week'), date.endOf('week')];\n break;\n\n default:\n modelValue.value = date;\n break;\n }\n }\n\n function setView(view: 'date' | 'month' | 'year'): void {\n viewMode.value = unref(viewMode) === view ? 'date' : view;\n }\n\n function setViewMonth(month: DateTime): void {\n setView('date');\n setViewDate(month);\n }\n\n function setViewYear(year: number): void {\n setView('date');\n setViewDate(unref(viewDate).set({year}));\n }\n\n function onDateMouseOver(date: DateTime): void {\n if (!rangeMode) {\n return;\n }\n\n switch (rangeMode) {\n case 'range':\n selection.value = [selection.value[0], date];\n break;\n\n case 'month':\n selection.value = [date.startOf('month'), date.endOf('month')];\n break;\n\n case 'week':\n selection.value = [date.startOf('week'), date.endOf('week')];\n break;\n }\n }\n\n function onDateMouseOut(): void {\n if (!rangeMode || rangeMode === 'range') {\n return;\n }\n\n selection.value = [null, null];\n }\n</script>\n","<template>\n <slot/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { provide, toRef } from 'vue';\n import { FluxDisabledInjectionKey } from '$flux/data';\n\n defineOptions({\n inheritAttrs: false\n });\n\n const {\n disabled = true\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n provide(FluxDisabledInjectionKey, toRef(() => disabled));\n</script>\n","<template>\n <div\n :class=\"clsx(\n contentPlacement === 'start' && $style.dividerContentStart,\n contentPlacement === 'center' && $style.dividerContentCenter,\n contentPlacement === 'end' && $style.dividerContentEnd\n )\"\n role=\"separator\"\n aria-orientation=\"horizontal\">\n <div\n v-if=\"slots.default\"\n :class=\"$style.dividerContent\">\n <slot/>\n </div>\n\n <hr\n v-else\n :class=\"$style.dividerLine\">\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Divider.module.scss';\n\n const {\n contentPlacement = 'center'\n } = defineProps<{\n readonly contentPlacement?: 'start' | 'center' | 'end';\n }>();\n\n const slots = defineSlots<{\n default?(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.dotPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternContentUnits=\"userSpaceOnUse\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <circle\n :r=\"cr\"\n :cx=\"width / 2 - cx\"\n :cy=\"height / 2 - cy\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref, useId, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 16,\n height = 16,\n cr = 1,\n cx = 1,\n cy = 1\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly cr?: number;\n readonly cx?: number;\n readonly cy?: number;\n }>();\n\n const svgRef = useTemplateRef<HTMLElement>('svg');\n const id = useId();\n\n const svgWidth = ref(0);\n const svgHeight = ref(0);\n\n watch(svgRef, (svg, _, onCleanup) => {\n if (!svg) {\n return;\n }\n\n const onResize = () => {\n svgWidth.value = svg.clientWidth;\n svgHeight.value = svg.clientHeight;\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n onResize();\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div\n :class=\"[\n $style.dropZone,\n isDragging && $style.isDragging,\n isDraggingOver && $style.isDraggingOver\n ]\"\n :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"$style.dropZoneContent\"\n @dragleave.capture=\"onDragLeave\"\n @dragover.capture=\"onDragEnter\"\n @drop=\"onDrop\">\n <svg\n ref=\"content\"\n :class=\"$style.dropZoneBorder\"\n role=\"presentation\">\n <rect\n height=\"100%\"\n width=\"100%\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n :pathLength=\"pathLength\"/>\n </svg>\n\n <slot v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n\n <FluxFadeTransition>\n <div\n v-if=\"isLoading\"\n :class=\"$style.dropZoneLoader\">\n <FluxSpinner/>\n </div>\n </FluxFadeTransition>\n </div>\n\n <div\n v-if=\"slots.actions\"\n :class=\"$style.dropZoneActions\">\n <slot\n name=\"actions\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n\n <slot\n name=\"extra\"\n v-bind=\"{isDragging, isDraggingOver, showPicker}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { roundStep } from '@basmilius/utils';\n import { onMounted, onUnmounted, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/DropZone.module.scss';\n\n const emit = defineEmits<{\n select: [File];\n selectMultiple: [FileList];\n }>();\n\n const {\n accept,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n readonly accept?: string;\n readonly disabled?: boolean;\n readonly isLoading?: boolean;\n readonly isMultiple?: boolean;\n }>();\n\n const slots = defineSlots<{\n default?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n actions?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n\n extra?(props: {\n readonly isDragging: boolean;\n readonly isDraggingOver: boolean;\n\n showPicker(): void;\n }): any;\n }>();\n\n const contentRef = useTemplateRef('content');\n const disabled = useDisabled(toRef(() => componentDisabled));\n\n const isDragging = ref(false);\n const isDraggingOver = ref(false);\n const pathLength = ref(0);\n\n onMounted(() => {\n window.addEventListener('dragleave', onWindowDragEnd, {capture: true});\n window.addEventListener('dragover', onWindowDragStart, {capture: true});\n window.addEventListener('drop', onWindowDrop, {capture: true});\n });\n\n onUnmounted(() => {\n window.removeEventListener('dragleave', onWindowDragEnd);\n window.removeEventListener('dragover', onWindowDragStart);\n window.removeEventListener('drop', onWindowDrop);\n });\n\n function onDragEnter(evt: DragEvent): void {\n isDraggingOver.value = true;\n evt.preventDefault();\n }\n\n function onDragLeave(): void {\n isDraggingOver.value = false;\n }\n\n function onDrop(evt: DragEvent): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n\n if (!evt.dataTransfer) {\n return;\n }\n\n const files = evt.dataTransfer.files;\n\n if (files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n function onWindowDragEnd(): void {\n isDragging.value = false;\n }\n\n function onWindowDragStart(): void {\n isDragging.value = true;\n }\n\n function onWindowDrop(): void {\n isDragging.value = false;\n isDraggingOver.value = false;\n }\n\n function onFileSelected(evt: Event): void {\n const files = (evt.target as HTMLInputElement).files;\n\n if (!files || files.length === 0) {\n return;\n }\n\n if (isMultiple) {\n emit('selectMultiple', files);\n } else {\n emit('select', files[0]);\n }\n }\n\n function showPicker(): void {\n if (unref(disabled)) {\n return;\n }\n\n let input: HTMLInputElement | undefined = document.createElement('input');\n input.accept = accept ?? '*';\n input.multiple = isMultiple ?? false;\n input.type = 'file';\n\n input.addEventListener('change', onFileSelected, {once: true});\n input.showPicker();\n }\n\n watch(contentRef, content => {\n if (!content) {\n return;\n }\n\n const {width, height} = content.getBoundingClientRect();\n pathLength.value = roundStep(width * 2 + height * 2, 6);\n }, {immediate: true});\n</script>\n\n","<template>\n <VNodeRenderer\n v-if=\"vnode\"\n :vnode=\"vnode\"/>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import { VNode } from 'vue';\n import { VNodeRenderer } from './primitive';\n\n defineProps<{\n readonly vnode?: VNode;\n }>();\n</script>\n","<template>\n <div\n :class=\"isOpen ? $style.expandableOpened : $style.expandable\"\n :id=\"headerId\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"isOpen\">\n <slot\n v-bind=\"{label, isOpen, close, open, toggle}\"\n name=\"header\">\n <button\n :class=\"$style.expandableHeader\"\n type=\"button\"\n @click=\"toggle\">\n <FluxFadeTransition>\n <FluxIcon\n v-if=\"icon\"\n :key=\"icon\"\n :name=\"icon\"/>\n </FluxFadeTransition>\n\n <span>{{ label }}</span>\n\n <FluxFadeTransition>\n <FluxIcon\n :key=\"expandIcon\"\n :name=\"expandIcon\"\n :size=\"16\"/>\n </FluxFadeTransition>\n </button>\n </slot>\n\n <FluxAutoHeightTransition>\n <div\n v-if=\"isOpen\"\n :class=\"$style.expandableBody\"\n :id=\"contentId\"\n :aria-labelledby=\"headerId\">\n <slot\n v-bind=\"{label, close}\"\n name=\"body\">\n <div :class=\"$style.expandableContent\">\n <slot v-bind=\"{label, close}\"/>\n </div>\n </slot>\n </div>\n </FluxAutoHeightTransition>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useComponentId } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, getCurrentInstance, onBeforeMount, onUnmounted, ref, unref, useId, watch } from 'vue';\n import { useExpandableGroupInjection } from '$flux/composable';\n import { FluxAutoHeightTransition, FluxFadeTransition } from '$flux/transition';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const emit = defineEmits<{\n toggle: [boolean];\n }>();\n\n const {\n isOpened\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isOpened?: boolean;\n readonly label?: string;\n }>();\n\n const componentId = useComponentId();\n const contentId = useId();\n const headerId = useId();\n const instance = getCurrentInstance()!;\n const isOpen = ref(false);\n\n const {closeAll, register, unregister} = useExpandableGroupInjection();\n\n const expandIcon = computed<FluxIconName>(() => unref(isOpen) ? 'minus' : 'plus');\n\n onBeforeMount(() => register?.(unref(componentId), instance));\n onUnmounted(() => unregister?.(unref(componentId)));\n\n function close(): void {\n isOpen.value = false;\n emit('toggle', isOpen.value);\n }\n\n function open(): void {\n closeAll?.();\n isOpen.value = true;\n emit('toggle', isOpen.value);\n }\n\n function toggle(): void {\n if (isOpen.value) {\n close();\n } else {\n open();\n }\n }\n\n watch(() => isOpened, () => {\n if (isOpened) {\n open();\n } else {\n close();\n }\n }, {immediate: true});\n\n defineExpose({\n isOpen,\n close,\n open,\n toggle\n });\n</script>\n","<template>\n <div :class=\"$style.expandableGroup\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { getExposedRef } from '@flux-ui/internals';\n import { ComponentInternalInstance, provide } from 'vue';\n import { FluxExpandableGroupInjectionKey } from '$flux/data';\n import $style from '$flux/css/component/Expandable.module.scss';\n\n const {\n isControlled\n } = defineProps<{\n readonly isControlled?: boolean;\n }>();\n\n\n defineSlots<{\n default(): any;\n }>();\n\n const expandables: { [key: number]: ComponentInternalInstance; } = {};\n\n function closeAll(): void {\n Object.values(expandables).forEach(expandable => {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = false;\n });\n }\n\n function register(uid: number, expandable: ComponentInternalInstance): void {\n expandables[uid] = expandable;\n\n if (!isControlled && Object.values(expandables).length === 1) {\n const isOpenRef = getExposedRef<boolean>(expandable, 'isOpen');\n isOpenRef.value = true;\n }\n }\n\n function unregister(uid: number): void {\n delete expandables[uid];\n }\n\n provide(FluxExpandableGroupInjectionKey, {\n closeAll,\n register,\n unregister\n });\n</script>\n","<template>\n <div\n ref=\"fader\"\n :class=\"$style.fader\">\n <slot v-bind=\"{current, next, previous}\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement, useInterval } from '@flux-ui/internals';\n import { computed, ref, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Fader.module.scss';\n\n const emit = defineEmits<{\n update: [number];\n }>();\n\n const {\n interval = 9000\n } = defineProps<{\n readonly interval?: number;\n }>();\n\n defineSlots<{\n default(props: {\n next(): void;\n previous(): void;\n\n readonly current: number;\n }): any;\n }>();\n\n const faderRef = useTemplateRef('fader');\n useInterval(interval, () => next());\n\n const current = ref(-1);\n\n const count = computed(() => {\n const fader = unrefTemplateElement(faderRef);\n return fader?.children.length ?? 0;\n });\n\n function next(): void {\n current.value = unref(current) + 1 >= unref(count) ? 0 : unref(current) + 1;\n }\n\n function previous(): void {\n current.value = unref(current) - 1 <= -1 ? unref(count) - 1 : unref(current) + 1;\n }\n\n watch(current, current => {\n const fader = unrefTemplateElement(faderRef);\n\n if (!fader || fader.children.length === 0) {\n return;\n }\n\n Array.from(fader.children).forEach(item => item.classList.remove($style.isCurrent));\n fader.children[current].classList.add($style.isCurrent);\n emit('update', current);\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.faderItem\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Fader.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxWindowTransition :is-back=\"isBack\">\n <template v-for=\"(_, slot) of slots\">\n <slot\n v-if=\"slot === view\"\n v-bind=\"{back, navigate}\"\n :name=\"slot\"/>\n </template>\n </FluxWindowTransition>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { ref } from 'vue';\n import { FluxWindowTransition } from '$flux/transition';\n\n const slots = defineSlots<{\n default(props: {\n back(to?: string): void;\n navigate(to: string): void;\n }): any;\n\n [key: string]: (props: {\n back(to?: string): void;\n navigate(to: string): void;\n }) => any;\n }>();\n\n const isBack = ref(false);\n const view = ref<string>('default');\n\n function back(to: string = 'default'): void {\n isBack.value = true;\n view.value = to;\n }\n\n function navigate(to: string): void {\n isBack.value = false;\n view.value = to;\n }\n\n defineExpose({\n back,\n navigate\n });\n</script>\n","<template>\n <div\n v-height-transition\n :class=\"$style.filter\">\n <FluxWindow ref=\"window\">\n <template #default=\"{navigate}\">\n <FilterMenuRenderer\n :navigate=\"navigate\"\n :state=\"modelValue\">\n <slot/>\n </FilterMenuRenderer>\n </template>\n\n <template\n v-for=\"(filter, name) of filters\"\n #[name]>\n <FluxMenu>\n <FluxMenuGroup\n :class=\"$style.filterHeader\"\n is-horizontal>\n <FluxMenuItem\n :class=\"$style.filterBack\"\n :label=\"translate('flux.back')\"\n icon-leading=\"angle-left\"\n @click=\"back()\"/>\n\n <FluxMenuItem\n v-if=\"resettable?.includes(name)\"\n :class=\"$style.filterReset\"\n icon-leading=\"trash\"\n is-destructive\n @click=\"reset(name)\"/>\n </FluxMenuGroup>\n\n <VNodeRenderer :vnode=\"filter\"/>\n </FluxMenu>\n </template>\n </FluxWindow>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree, getComponentName, getComponentProps, vHeightTransition } from '@flux-ui/internals';\n import type { FluxFilterOptionItem, FluxFilterState } from '@flux-ui/types';\n import { computed, provide, unref, useTemplateRef, VNode } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFilterInjectionKey } from '$flux/data';\n import { FilterMenuRenderer, VNodeRenderer } from './primitive';\n import FluxMenu from './FluxMenu.vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n import FluxMenuItem from './FluxMenuItem.vue';\n import FluxWindow from './FluxWindow.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const emit = defineEmits<{\n reset: [string]\n }>();\n\n const modelValue = defineModel<FluxFilterState>({\n required: true\n });\n\n defineProps<{\n readonly resettable?: string[];\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n const windowRef = useTemplateRef<{ back(to: string): void; }>('window');\n\n const filters = computed<Record<string, VNode>>(() => {\n const filters: { [key: string]: VNode; } = {};\n const items = flattenVNodeTree(slots.default?.() ?? []);\n\n for (const item of items) {\n const name = getComponentName(item);\n\n if (!name.startsWith('FluxFilter')) {\n continue;\n }\n\n const props = getComponentProps<{ name: string; }>(item);\n\n if (!props.name) {\n continue;\n }\n\n filters[props.name] = item;\n }\n\n return filters;\n });\n\n function back(): void {\n unref(windowRef)?.back('default');\n }\n\n function reset(name: string): void {\n back();\n emit('reset', name);\n }\n\n function getValue(name: string): FluxFilterOptionItem['value'] | undefined {\n if (!hasValue(name)) {\n return undefined;\n }\n\n return unref(modelValue)[name] as FluxFilterOptionItem['value'];\n }\n\n function hasValue(name: string): boolean {\n return name in unref(modelValue);\n }\n\n function setValue(name: string, value: FluxFilterOptionItem['value']): void {\n modelValue.value[name] = value;\n }\n\n provide(FluxFilterInjectionKey, {\n state: modelValue,\n back,\n reset,\n getValue,\n hasValue,\n setValue\n });\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value) {\n return null;\n }\n\n if (!DateTime.isDateTime(value)) {\n if (typeof value === 'string') {\n return DateTime.fromISO(value);\n }\n\n return null;\n }\n\n return value;\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (!DateTime.isDateTime(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FluxDatePicker\n :class=\"$style.filterDatePicker\"\n :max=\"max\"\n :min=\"min\"\n :model-value=\"currentValue\"\n :range-mode=\"rangeMode\"\n @update:model-value=\"onDatePicked\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import $style from '$flux/css/component/Filter.module.scss';\n\n const {\n name,\n rangeMode = 'range'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly name: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (!value || !Array.isArray(value)) {\n return null;\n }\n\n const [start, end] = value;\n\n if (!DateTime.isDateTime(start) || !DateTime.isDateTime(end)) {\n return null;\n }\n\n return [start, end];\n });\n\n function onDatePicked(date: DateTime | DateTime[] | null): void {\n if (date === null || !Array.isArray(date)) {\n return;\n }\n\n setValue(name, date);\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {default: ''});\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"[currentValue]\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {back, state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => unref(state)[name] as FluxFilterValueSingle);\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValue): void {\n if (unref(currentValue) === value) {\n setValue(name, null);\n } else {\n setValue(name, value);\n }\n\n back();\n }\n\n watch(currentValue, async value => {\n if (!value && value !== 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)([value]);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-searchable=\"isSearchable\"\n :options=\"filteredOptions\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFilterOptionRow, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { isFluxFilterOptionHeader } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n name,\n options\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isSearchable?: boolean;\n readonly label: string;\n readonly name: string;\n readonly options: FluxFilterOptionRow[];\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const filteredOptions = computed(() => options\n .filter(o => isFluxFilterOptionHeader(o) || unref(modelSearch).length === 0 || o.label.toLowerCase().includes(unref(modelSearch).toLowerCase())));\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n</script>\n","<template>\n <FilterOptionBase\n v-model:search-query=\"modelSearch\"\n :is-loading=\"isLoading\"\n is-searchable\n :options=\"options\"\n :selected=\"currentValue\"\n :search-placeholder=\"searchPlaceholder\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFilterOptionRow, FluxFilterValue, FluxFilterValueSingle, FluxIconName } from '@flux-ui/types';\n import { computed, ref, unref, watch } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useLoaded } from '$flux/composable/private';\n import { isFluxFilterOptionItem } from '$flux/data';\n import { FilterOptionBase } from './primitive';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n name\n } = defineProps<{\n fetchOptions(ids: FluxFilterValue[]): Promise<FluxFilterOptionRow[]>;\n fetchRelevant(): Promise<FluxFilterOptionRow[]>;\n fetchSearch(searchQuery: string): Promise<FluxFilterOptionRow[]>;\n\n readonly icon?: FluxIconName;\n readonly label: string;\n readonly name: string;\n readonly searchPlaceholder?: string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 150);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n const selectedOptions = ref<FluxFilterOptionRow[]>([]);\n const visibleOptions = ref<FluxFilterOptionRow[]>([]);\n\n const currentValue = computed(() => {\n const value = unref(state)[name];\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return [];\n });\n\n const options = computed(() => {\n const options: FluxFilterOptionRow[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFilterOptionItem(so) && visible.find(vo => isFluxFilterOptionItem(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFilterOptionItem(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n function onSelect(value: FluxFilterValueSingle): void {\n let values = Array.from(unref(currentValue));\n\n if (values.includes(value)) {\n values = values.filter(v => v !== value);\n } else {\n values.push(value);\n }\n\n setValue(name, values);\n }\n\n watch(currentValue, async value => {\n if (value.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(value);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.formColumn\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPaneBody>\n <FluxFormColumn>\n <FluxFormField :label=\"translate('flux.min')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[0]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({lower: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[0]) : currentValue[0] }}\n </template>\n </FluxFormField>\n\n <FluxFormField :label=\"translate('flux.max')\">\n <FluxFormSlider\n :formatter=\"formatter\"\n :is-ticks-visible=\"isTicksVisible\"\n :model-value=\"currentValue[1]\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @update:model-value=\"update({upper: $event})\"/>\n\n <template #value>\n {{ formatter ? formatter(currentValue[1]) : currentValue[1] }}\n </template>\n </FluxFormField>\n </FluxFormColumn>\n </FluxPaneBody>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { formatNumber } from '@basmilius/utils';\n import type { FluxIconName } from '@flux-ui/types';\n import { computed, unref } from 'vue';\n import { useFilterInjection } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import FluxFormColumn from './FluxFormColumn.vue';\n import FluxFormField from './FluxFormField.vue';\n import FluxFormSlider from './FluxFormSlider.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n\n const {\n formatter = formatNumber,\n max,\n min,\n name,\n step = 1\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isTicksVisible?: boolean;\n readonly label: string;\n readonly name: string;\n readonly max: number;\n readonly min: number;\n readonly step?: number;\n readonly formatter?: (value: number) => string;\n }>();\n\n const {state, setValue} = useFilterInjection();\n const translate = useTranslate();\n\n const currentValue = computed(() => (unref(state)[name] ?? [min, max]) as number[]);\n\n function update({lower, upper}: { lower?: number, upper?: number }): void {\n if (lower || lower === 0) {\n upper ??= unref(currentValue)[1];\n\n if (lower > upper) {\n upper = lower;\n }\n }\n\n if (upper || upper === 0) {\n lower ??= unref(currentValue)[0];\n\n if (lower > upper) {\n lower = upper;\n }\n }\n\n setValue(name, [lower!, upper!]);\n }\n</script>\n","<template>\n <canvas\n ref=\"canvas\"\n :class=\"$style.flickeringGrid\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { mulberry32 } from '@basmilius/utils';\n import { useInView } from '@flux-ui/internals';\n import { computed, unref, useTemplateRef, watch } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n color = '#1d4ed8',\n flickerChance = 0.15,\n gap = 6,\n maxOpacity = 0.3,\n size = 3\n } = defineProps<{\n readonly color?: string;\n readonly flickerChance?: number;\n readonly gap?: number;\n readonly maxOpacity?: number;\n readonly size?: number;\n }>();\n\n const canvasRef = useTemplateRef('canvas');\n\n const inView = useInView(canvasRef);\n\n const mulberry = mulberry32(13);\n\n const rgb = computed(() => {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return [0, 0, 0];\n }\n\n context.fillStyle = color;\n context.fillRect(0, 0, 1, 1);\n\n return context.getImageData(0, 0, 1, 1).data;\n });\n\n function draw(context: CanvasRenderingContext2D, width: number, height: number, columns: number, rows: number, squares: Float32Array, dpr: number): void {\n context.clearRect(0, 0, width * dpr, height * dpr);\n\n const [r, g, b] = unref(rgb);\n\n for (let i = 0; i < columns; ++i) {\n for (let j = 0; j < rows; ++j) {\n const opacity = squares[i * rows + j];\n context.fillStyle = `rgb(${r} ${g} ${b} / ${opacity})`;\n context.fillRect(\n (i * (size + gap) + width / 2 - (columns / 2 * (size + gap) - gap / 2)) * dpr,\n (j * (size + gap) + height / 2 - (rows / 2 * (size + gap) - gap / 2)) * dpr,\n size * dpr,\n size * dpr\n );\n }\n }\n }\n\n function setup(canvas: HTMLCanvasElement) {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n const columns = Math.ceil(width / (size + gap));\n const rows = Math.ceil(height / (size + gap));\n const squares = new Float32Array(columns * rows);\n\n for (let i = 0; i < squares.length; ++i) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n\n return {\n width,\n height,\n columns,\n rows,\n squares,\n dpr\n };\n }\n\n function tick(squares: Float32Array, delta: number): void {\n for (let i = 0; i < squares.length; ++i) {\n if (mulberry.next() < flickerChance * delta) {\n squares[i] = mulberry.next() * maxOpacity;\n }\n }\n }\n\n watch([canvasRef, inView], ([canvas, inView], _, onCleanup) => {\n if (!canvas || !inView) {\n return;\n }\n\n const context = canvas.getContext('2d');\n\n if (!context) {\n return;\n }\n\n let frame = 0;\n let lastTime = 0;\n let {width, height, columns, rows, squares, dpr} = setup(canvas);\n\n const animate = (time: number): void => {\n const delta = (time - lastTime) / 1000;\n lastTime = time;\n\n tick(squares, delta);\n draw(context, width, height, columns, rows, squares, dpr);\n frame = requestAnimationFrame(animate);\n };\n\n const onResize = () => {\n ({width, height, columns, rows, squares, dpr} = setup(canvas));\n };\n\n window.addEventListener('resize', onResize, {passive: true});\n requestAnimationFrame(animate);\n\n onCleanup(() => {\n window.removeEventListener('resize', onResize);\n cancelAnimationFrame(frame);\n });\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"$style.paneFooter\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Pane.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxPane :style=\"{'--aspect-ratio': aspectRatio}\">\n <FluxFadeTransition mode=\"out-in\">\n <FluxPaneBody\n v-if=\"isPreviewing\"\n key=\"preview\">\n <div :class=\"$style.focalPointPreview\">\n <div\n :class=\"$style.focalPointPreviewImage\"\n :style=\"{\n backgroundImage: `url(${src})`,\n backgroundPosition: `${focalPointX}% ${focalPointY}%`\n }\"/>\n </div>\n </FluxPaneBody>\n\n <FluxPaneBody\n v-else\n key=\"editor\">\n <div\n :class=\"$style.focalPointEditor\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\">\n <img\n ref=\"image\"\n :class=\"$style.focalPointEditorImage\"\n :src=\"src\"\n alt=\"\"\n @load=\"onImageLoaded\"/>\n\n <div\n :class=\"$style.focalPointEditorArea\"\n :style=\"{\n top: `${focalPointY}%`,\n left: `${focalPointX}%`\n }\"/>\n </div>\n </FluxPaneBody>\n </FluxFadeTransition>\n\n <FluxPaneFooter>\n <slot name=\"footer-before\"/>\n\n <FluxSecondaryButton\n :label=\"translate(isPreviewing ? 'flux.previewClose' : 'flux.preview')\"\n @click=\"onShowPreviewClicked\"/>\n\n <FluxSpacer/>\n\n <slot name=\"footer\"/>\n </FluxPaneFooter>\n </FluxPane>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, onMounted, onUnmounted, ref, unref, useTemplateRef, watch } from 'vue';\n import { useTranslate } from '$flux/composable/private';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxPane from './FluxPane.vue';\n import FluxPaneBody from './FluxPaneBody.vue';\n import FluxPaneFooter from './FluxPaneFooter.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxSpacer from './FluxSpacer.vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n src\n } = defineProps<{\n readonly src: string;\n }>();\n\n const imageRef = useTemplateRef('image');\n const translate = useTranslate();\n\n const aspectRatio = ref(1);\n const dragging = ref<[number, number] | null>(null);\n const isPreviewing = ref(false);\n\n const focalPointX = computed(() => unref(dragging) ? unref(dragging)![0] : unref(modelValue)[0]);\n const focalPointY = computed(() => unref(dragging) ? unref(dragging)![1] : unref(modelValue)[1]);\n\n onMounted(() => window.addEventListener('pointerup', onPointerUp, {passive: true}));\n\n onUnmounted(() => window.removeEventListener('pointerup', onPointerUp));\n\n function onImageLoaded(): void {\n const image = unref(imageRef);\n\n if (!image) {\n return;\n }\n\n aspectRatio.value = image.width / image.height;\n }\n\n function onPointerDown(evt: PointerEvent): void {\n dragging.value = [0, 0];\n onPointerMove(evt);\n }\n\n function onPointerMove(evt: PointerEvent): void {\n const image = unref(imageRef);\n\n if (!image || !dragging.value) {\n return;\n }\n\n const {top, left, width, height} = image.getBoundingClientRect();\n const {pageX, pageY} = evt;\n\n dragging.value = [\n Math.max(0, Math.min(1, (pageX - left) / width)) * 100,\n Math.max(0, Math.min(1, (pageY - top) / height)) * 100\n ];\n }\n\n function onPointerUp(): void {\n if (!dragging.value) {\n return;\n }\n\n modelValue.value = dragging.value!;\n dragging.value = null;\n }\n\n function onShowPreviewClicked(): void {\n isPreviewing.value = !isPreviewing.value;\n }\n\n watch(() => src, () => isPreviewing.value = false);\n</script>\n","<template>\n <img\n :class=\"$style.focalPointImage\"\n :style=\"{\n objectPosition: `${x}% ${y}%`\n }\"\n :src=\"src\"\n :alt=\"alt\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { computed } from 'vue';\n import $style from '$flux/css/component/FocalPoint.module.scss';\n\n const {\n alt = '',\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly alt?: string;\n readonly src: string;\n }>();\n\n const x = computed(() => focalPoint?.x ?? 50);\n const y = computed(() => focalPoint?.y ?? 50);\n</script>\n","<template>\n <FluxDisabled :disabled=\"disabled\">\n <form\n :class=\"$style.form\"\n :aria-disabled=\"disabled ? true : undefined\"\n @submit.prevent=\"onSubmit()\">\n <slot/>\n </form>\n </FluxDisabled>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxDisabled from './FluxDisabled.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n submit: [];\n }>();\n\n const {\n disabled = false\n } = defineProps<{\n readonly disabled?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n function onSubmit(): void {\n emit('submit');\n }\n</script>\n","<template>\n <div\n :class=\"clsx(\n $style.formInputGroup,\n isSecondary && $style.isSecondary\n )\"\n role=\"textbox\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clsx } from 'clsx';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly isSecondary?: boolean;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoComplete, autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n v-model=\"localValue\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :max=\"max?.toISO()?.substring(0, 10)\"\n :min=\"min?.toISO()?.substring(0, 10)\"\n type=\"date\"\n @blur=\"onBlur()\"\n @focus=\"onFocus()\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import type { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<DateTime | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function onBlur(): void {\n emit('blur');\n }\n\n function onFocus(): void {\n emit('focus');\n }\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISODate() === localValue?.toISODate()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup :aria-disabled=\"disabled ? true : undefined\">\n <div\n :class=\"clsx(\n $style.formDateRangeInput,\n disabled && $style.isDisabled\n )\"\n role=\"presentation\">\n <span>{{ label }}</span>\n </div>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n v-model=\"localValue\"\n :max=\"max\"\n :min=\"min\"\n :range-mode=\"rangeMode\"/>\n </FluxFlyout>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import type { DateTime } from 'luxon';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { createLabelForDateRange } from '$flux/util';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<[DateTime, DateTime] | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n rangeMode = 'range'\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n readonly rangeMode?: 'range' | 'week' | 'month';\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef('flyout');\n\n const localValue = ref<[DateTime, DateTime] | null>(null);\n\n const label = computed(() => {\n const value = unref(localValue);\n\n if (!value) {\n return '';\n }\n\n const [start, end] = value;\n\n return createLabelForDateRange(start, end, true);\n });\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n modelValue.value = localValue;\n });\n\n watch(modelValue, modelValue => localValue.value = modelValue, {immediate: true});\n</script>\n","<template>\n <FluxStack\n :class=\"$style.formDateTimeInput\"\n direction=\"horizontal\"\n :gap=\"15\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxFlyout\n ref=\"flyout\"\n :width=\"300\">\n <template #opener=\"{open}\">\n <FluxFormInputGroup>\n <FluxFormInput\n :=\"{autoFocus, disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formDateInput\"\n :disabled=\"disabled\"\n :model-value=\"localValue\"\n type=\"date\"\n @update:model-value=\"setDate\"\n @show-picker=\"open\"/>\n\n <FluxSecondaryButton\n :disabled=\"disabled\"\n icon-leading=\"calendar\"\n @click.prevent=\"open\"/>\n </FluxFormInputGroup>\n </template>\n\n <FluxDatePicker\n :max=\"max\"\n :min=\"min\"\n :model-value=\"localValue\"\n @update:model-value=\"setDate\"/>\n </FluxFlyout>\n\n <FluxFormInput\n :=\"{disabled, isReadonly, modelValue, placeholder}\"\n :class=\"$style.formTimeInput\"\n type=\"time\"\n :model-value=\"localValue\"\n @update:model-value=\"setTime\"/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { DateTime } from 'luxon';\n import { ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxDatePicker from './FluxDatePicker.vue';\n import FluxFlyout from './FluxFlyout.vue';\n import FluxFormInput from './FluxFormInput.vue';\n import FluxFormInputGroup from './FluxFormInputGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<DateTime | null>({\n required: true\n });\n\n const {\n disabled: componentDisabled,\n isHourOnly\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isHourOnly?: boolean;\n readonly isReadonly?: boolean;\n readonly max?: DateTime;\n readonly min?: DateTime;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const flyoutRef = useTemplateRef<{ close(): void; }>('flyout');\n\n const localValue = ref<DateTime | null>(null);\n\n function setDate(dateTime: DateTime | object | string | number | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n day: dateTime.day,\n month: dateTime.month,\n year: dateTime.year\n });\n }\n\n function setTime(dateTime: DateTime | string | number | object | null): void {\n if (!DateTime.isDateTime(dateTime)) {\n return;\n }\n\n const value: DateTime = (localValue.value ?? DateTime.now());\n localValue.value = value.set({\n hour: dateTime.hour,\n minute: unref(isHourOnly) ? 0 : dateTime.minute,\n second: unref(isHourOnly) ? 0 : dateTime.second\n });\n }\n\n watch(() => isHourOnly, () => isHourOnly && (localValue.value = unref(localValue)?.startOf('hour') ?? null), {immediate: true});\n watch(modelValue, modelValue => localValue.value = isHourOnly ? modelValue?.startOf('hour') ?? null : modelValue, {immediate: true});\n\n watch(localValue, localValue => {\n unref(flyoutRef)?.close();\n\n if (modelValue.value?.toISO() === localValue?.toISO()) {\n return;\n }\n\n modelValue.value = localValue;\n });\n</script>\n","<template>\n <div :class=\"$style.formInputAddition\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"18\"/>\n\n <span v-if=\"label\">\n {{ label }}\n </span>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <fieldset\n :class=\"disabled ? $style.pinInputDisabled : $style.pinInputEnabled\"\n :id=\"id\"\n :style=\"{\n '--max-length': maxLength\n }\"\n :autofocus=\"autoFocus\"\n :aria-disabled=\"disabled ? true : undefined\">\n <input\n v-for=\"field of maxLength\"\n :key=\"field\"\n ref=\"fields\"\n :class=\"$style.pinInputField\"\n maxlength=\"1\"\n :autocomplete=\"field === 1 ? autoComplete : undefined\"\n :autofocus=\"field === 1 && autoFocus\"\n :disabled=\"disabled\"\n :tabindex=\"(field - 1) === modelValue?.length ? 0 : -1\"\n :type=\"isPrivate ? 'password' : 'text'\"\n :value=\"modelValue[field - 1]\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keydown=\"onKeyDown\"\n @paste=\"onPaste\"/>\n </fieldset>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef, unref, useTemplateRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoComplete = 'one-time-code',\n autoFocus = false,\n disabled: componentDisabled,\n maxLength = 6\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isPrivate?: boolean;\n readonly maxLength?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n\n const fieldRefs = useTemplateRef<HTMLInputElement[]>('fields');\n\n function onFocus(evt: FocusEvent): void {\n const input = evt.target as HTMLInputElement;\n requestAnimationFrame(() => input.select());\n }\n\n function onInput(): void {\n const fields = unref(fieldRefs) ?? [];\n const values = fields\n .map(f => f.value.trim() === '' ? NaN : Number(f.value))\n .filter(v => !isNaN(v));\n\n modelValue.value = values.join('');\n }\n\n function onKeyDown(evt: KeyboardEvent): void {\n const input = evt.target as HTMLInputElement;\n const value = input.value.trim();\n\n const next = input.nextElementSibling as HTMLInputElement | null;\n const previous = input.previousElementSibling as HTMLInputElement | null;\n\n switch (evt.key) {\n case 'Backspace':\n value === '' && previous?.focus();\n break;\n\n case 'ArrowLeft':\n case 'ArrowUp':\n input.selectionStart === 0 && previous?.select();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n (input.selectionStart === 1 || value === '') && next?.select();\n break;\n\n case 'Tab':\n break;\n\n case 'v':\n if (evt.ctrlKey || evt.metaKey) {\n break;\n }\n\n evt.preventDefault();\n break;\n\n default:\n if (isNaN(Number(evt.key))) {\n evt.preventDefault();\n break;\n }\n\n requestAnimationFrame(() => next?.focus());\n break;\n }\n }\n\n function onPaste(evt: ClipboardEvent): void {\n if (!evt.clipboardData) {\n return;\n }\n\n const value = evt.clipboardData.getData('text').replace(/\\D/g, '');\n\n if (value.length !== maxLength) {\n return;\n }\n\n modelValue.value = value;\n\n requestAnimationFrame(() => {\n const fields = unref(fieldRefs) ?? [];\n fields[maxLength - 1].focus();\n });\n }\n</script>\n","<template>\n <SliderBase\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower || isDraggingUpper\"\n :is-ticks-visible=\"isTicksVisible\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n @dragging=\"onDragging\"\n @update=\"onUpdate\">\n <SliderTrack\n :percentage-lower=\"percentageLower\"\n :percentage-upper=\"percentageUpper\">\n <SliderThumb\n ref=\"lowerThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingLower\"\n :position=\"percentageLower\"\n @grab=\"!disabled && (isDraggingLower = true)\"\n @decrement=\"onDecrement('lower')\"\n @increment=\"onIncrement('lower')\"/>\n\n <SliderThumb\n ref=\"upperThumb\"\n :disabled=\"disabled\"\n :is-dragging=\"isDraggingUpper\"\n :position=\"percentageUpper\"\n @grab=\"!disabled && (isDraggingUpper = true)\"\n @decrement=\"onDecrement('upper')\"\n @increment=\"onIncrement('upper')\"/>\n </SliderTrack>\n </SliderBase>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { clampWithStepPrecision, countDecimals, formatNumber } from '@basmilius/utils';\n import { computed, ref, toRef, unref, useTemplateRef, watch } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { addTooltip, removeTooltip, updateTooltip } from '$flux/data';\n import { SliderBase, SliderThumb, SliderTrack } from './primitive';\n\n const modelValue = defineModel<[number, number]>({\n required: true\n });\n\n const {\n formatter = formatNumber,\n disabled: componentDisabled,\n isTooltipDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n formatter?(value: number, decimals?: number): string;\n\n readonly disabled?: boolean;\n readonly isTicksVisible?: boolean;\n readonly isTooltipDisabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const lowerThumbRef = useTemplateRef('lowerThumb');\n const upperThumbRef = useTemplateRef('upperThumb');\n\n const isDraggingLower = ref(false);\n const isDraggingUpper = ref(false);\n const percentageLower = ref(0);\n const percentageUpper = ref(0);\n const lowerValue = ref(0);\n const upperValue = ref(0);\n const tooltipId = ref<number | null>(null);\n\n const tooltipContent = computed(() => formatter(modelValue.value[isDraggingLower.value ? 0 : 1], countDecimals(step)));\n\n function onDragging(is: boolean): void {\n if (is) {\n return;\n }\n\n isDraggingLower.value = is;\n isDraggingUpper.value = is;\n }\n\n function onUpdate(value: number): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (isDraggingLower.value) {\n lower = clampWithStepPrecision(value, min, max, step);\n }\n\n if (isDraggingUpper.value) {\n upper = clampWithStepPrecision(value, min, max, step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n if (tooltipId.value) {\n updateTooltip(tooltipId.value, {\n content: unref(tooltipContent),\n origin: unref(isDraggingLower.value ? lowerThumbRef : upperThumbRef)?.$el\n });\n }\n\n lowerValue.value = (lower - min) / (max - min);\n upperValue.value = (upper - min) / (max - min);\n }\n\n function onDecrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.max(min, lower - step);\n } else {\n upper = Math.max(min, upper - step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n function onIncrement(which: 'lower' | 'upper'): void {\n let lower = clampWithStepPrecision(lowerValue.value, min, max, step);\n let upper = clampWithStepPrecision(upperValue.value, min, max, step);\n\n if (which === 'lower') {\n lower = Math.min(max, lower + step);\n } else {\n upper = Math.min(max, upper + step);\n }\n\n if (lower >= upper) {\n return;\n }\n\n modelValue.value = [lower, upper];\n }\n\n watch(modelValue, modelValue => {\n lowerValue.value = (modelValue[0] - min) / (max - min);\n upperValue.value = (modelValue[1] - min) / (max - min);\n }, {immediate: true});\n\n watch(([() => max, () => min, () => step, lowerValue, upperValue]), () => {\n const lower = clampWithStepPrecision(unref(lowerValue), min, max, step);\n const upper = clampWithStepPrecision(unref(upperValue), min, max, step);\n\n percentageLower.value = (lower - min) / (max - min);\n percentageUpper.value = (upper - min) / (max - min);\n\n modelValue.value = [lower, upper];\n }, {immediate: true});\n\n watch(([isDraggingLower, isDraggingUpper]), ([isDraggingLower, isDraggingUpper]) => {\n const is = isDraggingLower || isDraggingUpper;\n\n if (is && !tooltipId.value && !isTooltipDisabled) {\n tooltipId.value = addTooltip({\n content: unref(tooltipContent),\n direction: 'vertical',\n origin: unref(isDraggingLower ? lowerThumbRef : upperThumbRef)?.$el\n });\n } else if (!is && tooltipId.value) {\n removeTooltip(tooltipId.value);\n tooltipId.value = null;\n }\n });\n</script>\n","<template>\n <div :class=\"$style.formRow\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"$style.formSection\">\n <div :class=\"$style.formSectionTitle\">\n {{ title }}\n </div>\n\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Form.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <SelectBase\n v-model:search-query=\"modelSearch\"\n :disabled=\"disabled\"\n :is-loading=\"isLoading\"\n :is-multiple=\"isMultiple\"\n is-searchable\n :options=\"groups\"\n :placeholder=\"placeholder\"\n :selected=\"selected\"\n @deselect=\"onDeselect\"\n @open=\"onOpen()\"\n @select=\"onSelect\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDebouncedRef } from '@flux-ui/internals';\n import type { FluxFormSelectEntry, FluxFormSelectValue, FluxFormSelectValueSingle } from '@flux-ui/types';\n import { computed, ref, toRef, unref, watch } from 'vue';\n import { SelectBase } from '$flux/component/primitive';\n import { useDisabled } from '$flux/composable';\n import { useFormSelect, useLoaded } from '$flux/composable/private';\n import { isFluxFormSelectOption } from '$flux/data';\n\n const modelSearch = defineModel<string>('searchQuery', {\n default: ''\n });\n\n const modelValue = defineModel<FluxFormSelectValue>({\n required: true\n });\n\n const {\n fetchOptions: fetchOptionsProp,\n fetchRelevant: fetchRelevantProp,\n fetchSearch: fetchSearchProp,\n disabled: componentDisabled,\n isMultiple\n } = defineProps<{\n fetchOptions(ids: FluxFormSelectValueSingle[]): Promise<FluxFormSelectEntry[]>;\n fetchRelevant(): Promise<FluxFormSelectEntry[]>;\n fetchSearch(searchQuery: string): Promise<FluxFormSelectEntry[]>;\n\n readonly disabled?: boolean;\n readonly isMultiple?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const selectedOptions = ref<FluxFormSelectEntry[]>([]);\n const visibleOptions = ref<FluxFormSelectEntry[]>([]);\n\n const options = computed(() => {\n const options: FluxFormSelectEntry[] = [];\n const search = unref(modelSearch);\n const selected = unref(selectedOptions);\n const visible = unref(visibleOptions);\n\n visible.forEach(vo => options.push(vo));\n\n selected.forEach(so => {\n if (isFluxFormSelectOption(so) && visible.find(vo => isFluxFormSelectOption(vo) && vo.value === so.value)) {\n return;\n }\n\n if (isFluxFormSelectOption(so) && !so.label.toLowerCase().includes(search.toLowerCase())) {\n return;\n }\n\n options.push(so);\n });\n\n return options;\n });\n\n const {groups, selected, values} = useFormSelect(modelValue, isMultiple, options);\n const {isLoading, loaded} = useLoaded();\n const debouncedModelSearch = useDebouncedRef(modelSearch, 300);\n const fetchOptions = computed(() => loaded(fetchOptionsProp));\n const fetchRelevant = computed(() => loaded(fetchRelevantProp));\n const fetchSearch = computed(() => loaded(fetchSearchProp));\n\n function onDeselect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = unref(values).filter(v => v !== id);\n }\n }\n\n async function onOpen(): Promise<void> {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n\n function onSelect(id: string | number | null): void {\n if (isMultiple) {\n modelValue.value = [...unref(values), id];\n } else {\n modelValue.value = id;\n }\n }\n\n watch(values, async values => {\n if (values.length === 0) {\n return;\n }\n\n selectedOptions.value = await unref(fetchOptions)(values);\n }, {immediate: true});\n\n watch(debouncedModelSearch, async searchQuery => {\n if (searchQuery.length > 0) {\n visibleOptions.value = await unref(fetchSearch)(searchQuery);\n } else {\n visibleOptions.value = await unref(fetchRelevant)();\n }\n });\n</script>\n","<template>\n <textarea\n v-model=\"modelValue\"\n ref=\"input\"\n :class=\"disabled ? $style.formTextAreaDisabled : $style.formTextAreaEnabled\"\n :id=\"id\"\n :autocomplete=\"autoComplete\"\n :autofocus=\"autoFocus\"\n :disabled=\"disabled\"\n :maxlength=\"maxLength\"\n :placeholder=\"placeholder\"\n :style=\"{\n '--rows': rows\n }\"\n :aria-disabled=\"disabled ? true : undefined\"\n @blur=\"emit('blur')\"\n @focus=\"emit('focus')\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxAutoCompleteType } from '@flux-ui/types';\n import { toRef } from 'vue';\n import { useDisabled, useFormFieldInjection } from '$flux/composable';\n import $style from '$flux/css/component/Form.module.scss';\n\n const emit = defineEmits<{\n blur: [];\n focus: [];\n }>();\n\n const modelValue = defineModel<string>({\n default: ''\n });\n\n const {\n autoFocus = false,\n disabled: componentDisabled,\n rows = 3\n } = defineProps<{\n readonly autoComplete?: FluxAutoCompleteType;\n readonly autoFocus?: boolean;\n readonly disabled?: boolean;\n readonly isReadonly?: boolean;\n readonly maxLength?: number;\n readonly placeholder?: string;\n readonly rows?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const {id} = useFormFieldInjection();\n</script>\n","<template>\n <FluxFormSelect\n v-model=\"modelValue\"\n :disabled=\"disabled\"\n is-searchable\n :options=\"options\"\n :placeholder=\"placeholder\"/>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFormSelectEntry } from '@flux-ui/types';\n import { upperFirst } from 'lodash-es';\n import { computed, toRef } from 'vue';\n import { useDisabled } from '$flux/composable';\n import { useTranslate } from '$flux/composable/private';\n import type { FluxTranslation } from '$flux/data';\n import FluxFormSelect from './FluxFormSelect.vue';\n\n const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Asmera',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Timbuktu',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/ComodRivadavia',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Atka',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Buenos_Aires',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Catamarca',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Ciudad_Juarez',\n 'America/Coral_Harbour',\n 'America/Cordoba',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Ensenada',\n 'America/Fort_Nelson',\n 'America/Fort_Wayne',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indianapolis',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Jujuy',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Knox_IN',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Louisville',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Mendoza',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montreal',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Nuuk',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Acre',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Rosario',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Shiprock',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Virgin',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/South_Pole',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Ashkhabad',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Calcutta',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Chongqing',\n 'Asia/Chungking',\n 'Asia/Colombo',\n 'Asia/Dacca',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Harbin',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Istanbul',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kashgar',\n 'Asia/Kathmandu',\n 'Asia/Katmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macao',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Saigon',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Tel_Aviv',\n 'Asia/Thimbu',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ujung_Pandang',\n 'Asia/Ulaanbaatar',\n 'Asia/Ulan_Bator',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faeroe',\n 'Atlantic/Faroe',\n 'Atlantic/Jan_Mayen',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/ACT',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Canberra',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/LHI',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/North',\n 'Australia/NSW',\n 'Australia/Perth',\n 'Australia/Queensland',\n 'Australia/South',\n 'Australia/Sydney',\n 'Australia/Tasmania',\n 'Australia/Victoria',\n 'Australia/West',\n 'Australia/Yancowinna',\n 'Brazil/Acre',\n 'Brazil/DeNoronha',\n 'Brazil/East',\n 'Brazil/West',\n 'Canada/Atlantic',\n 'Canada/Central',\n 'Canada/Eastern',\n 'Canada/Mountain',\n 'Canada/Newfoundland',\n 'Canada/Pacific',\n 'Canada/Saskatchewan',\n 'Canada/Yukon',\n 'CET',\n 'Chile/Continental',\n 'Chile/EasterIsland',\n 'CST6CDT',\n 'Cuba',\n 'EET',\n 'Egypt',\n 'Eire',\n 'EST',\n 'EST5EDT',\n 'Etc/GMT',\n 'Etc/GMT+0',\n 'Etc/GMT+1',\n 'Etc/GMT+10',\n 'Etc/GMT+11',\n 'Etc/GMT+12',\n 'Etc/GMT+2',\n 'Etc/GMT+3',\n 'Etc/GMT+4',\n 'Etc/GMT+5',\n 'Etc/GMT+6',\n 'Etc/GMT+7',\n 'Etc/GMT+8',\n 'Etc/GMT+9',\n 'Etc/GMT-0',\n 'Etc/GMT-1',\n 'Etc/GMT-10',\n 'Etc/GMT-11',\n 'Etc/GMT-12',\n 'Etc/GMT-13',\n 'Etc/GMT-14',\n 'Etc/GMT-2',\n 'Etc/GMT-3',\n 'Etc/GMT-4',\n 'Etc/GMT-5',\n 'Etc/GMT-6',\n 'Etc/GMT-7',\n 'Etc/GMT-8',\n 'Etc/GMT-9',\n 'Etc/GMT0',\n 'Etc/Greenwich',\n 'Etc/UCT',\n 'Etc/Universal',\n 'Etc/UTC',\n 'Etc/Zulu',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belfast',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Nicosia',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Tiraspol',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Factory',\n 'GB',\n 'GB-Eire',\n 'GMT',\n 'GMT+0',\n 'GMT-0',\n 'GMT0',\n 'Greenwich',\n 'Hongkong',\n 'HST',\n 'Iceland',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Iran',\n 'Israel',\n 'Jamaica',\n 'Japan',\n 'Kwajalein',\n 'Libya',\n 'MET',\n 'Mexico/BajaNorte',\n 'Mexico/BajaSur',\n 'Mexico/General',\n 'MST',\n 'MST7MDT',\n 'Navajo',\n 'NZ',\n 'NZ-CHAT',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Ponape',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Samoa',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Truk',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n 'Pacific/Yap',\n 'Poland',\n 'Portugal',\n 'PRC',\n 'PST8PDT',\n 'ROC',\n 'ROK',\n 'Singapore',\n 'Turkey',\n 'UCT',\n 'Universal',\n 'US/Alaska',\n 'US/Aleutian',\n 'US/Arizona',\n 'US/Central',\n 'US/East-Indiana',\n 'US/Eastern',\n 'US/Hawaii',\n 'US/Indiana-Starke',\n 'US/Michigan',\n 'US/Mountain',\n 'US/Pacific',\n 'US/Samoa',\n 'UTC',\n 'W-SU',\n 'WET',\n 'Zulu'\n ];\n\n const timeZoneGroupOrder: FluxTranslation[] = [\n 'flux.timezoneEurope',\n 'flux.timezoneAmerica',\n 'flux.timezoneUs',\n 'flux.timezoneAustralia',\n 'flux.timezoneCanada',\n 'flux.timezoneMexico',\n 'flux.timezoneAfrica',\n 'flux.timezoneAntarctica',\n 'flux.timezoneArctic',\n 'flux.timezoneAsia',\n 'flux.timezoneAtlantic',\n 'flux.timezoneBrazil',\n 'flux.timezoneChile',\n 'flux.timezoneEtc',\n 'flux.timezoneOther',\n 'flux.timezoneIndian',\n 'flux.timezonePacific'\n ];\n\n const modelValue = defineModel<string | null>({\n default: null\n });\n\n const {\n disabled: componentDisabled\n } = defineProps<{\n readonly disabled?: boolean;\n readonly placeholder?: string;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const translate = useTranslate();\n\n const options = computed<FluxFormSelectEntry[]>(() => {\n const groups: Record<string, FluxFormSelectEntry[]> = {};\n const options: FluxFormSelectEntry[] = [];\n\n for (const timeZone of timeZones) {\n const timeZoneOptions = Intl.DateTimeFormat(navigator.language, {timeZone}).resolvedOptions();\n const timeZoneOffset = new Intl.DateTimeFormat(navigator.language, {timeZone, timeZoneName: 'longOffset'}).formatToParts().find(p => p.type === 'timeZoneName')!.value.substring(3);\n const label = timeZoneOptions.timeZone\n .replaceAll('_', ' ')\n .replaceAll('/', ' / ');\n\n let group = 'flux.timezoneOther';\n\n if (label.includes('/')) {\n group = `flux.timezone${upperFirst(label.split('/')[0].trim().toLowerCase())}`;\n }\n\n groups[group] ??= [];\n\n if (groups[group].find(go => go.label === label)) {\n continue;\n }\n\n groups[group].push({\n command: timeZoneOffset,\n label: label,\n value: timeZone\n });\n }\n\n const sortedGroups = Object.fromEntries(\n Object.entries(groups)\n .sort(([a], [b]) => {\n const ai = timeZoneGroupOrder.indexOf(a as FluxTranslation);\n const bi = timeZoneGroupOrder.indexOf(b as FluxTranslation);\n\n if (ai > bi) {\n return 1;\n }\n\n if (bi > ai) {\n return -1;\n }\n\n return 0;\n })\n );\n\n for (const group in sortedGroups) {\n const groupOptions = sortedGroups[group].sort(({label: labelA}, {label: labelB}) => labelA.localeCompare(labelB));\n\n options.push({\n label: translate(group as FluxTranslation)\n });\n\n groupOptions.forEach(go => options.push(go));\n }\n\n return options;\n });\n</script>\n","<template>\n <button\n :class=\"clsx(\n $style.remove,\n isHidden && $style.isHidden\n )\"\n type=\"button\"\n @click=\"emit('click', $event)\">\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"\n :size=\"16\"/>\n </button>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Remove.module.scss';\n\n const emit = defineEmits<{\n click: [MouseEvent];\n }>();\n\n const {\n icon = 'xmark'\n } = defineProps<{\n readonly icon?: FluxIconName;\n readonly isHidden?: boolean;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.galleryItem\"\n @mouseenter.capture=\"isDeleteVisible = true\"\n @mouseout.capture=\"isDeleteVisible = false\">\n <FluxFocalPointImage\n :class=\"$style.galleryItemImage\"\n :focal-point=\"focalPoint\"\n :src=\"url\"/>\n\n <FluxRemove\n v-if=\"isDeletable\"\n :is-hidden=\"!isDeleteVisible\"\n tabindex=\"-1\"\n @click=\"emit('delete')\"/>\n\n <div\n v-if=\"isPending\"\n :class=\"$style.galleryItemLoader\">\n <FluxSpinner :size=\"24\"/>\n </div>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { ref } from 'vue';\n import FluxFocalPointImage from './FluxFocalPointImage.vue';\n import FluxRemove from './FluxRemove.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [];\n }>();\n\n const {\n focalPoint\n } = defineProps<{\n readonly focalPoint?: FluxFocalPointObject;\n readonly isDeletable?: boolean;\n readonly isPending?: boolean;\n readonly url: string;\n }>();\n\n const isDeleteVisible = ref(false);\n</script>\n","<template>\n <FluxDropZone\n :class=\"$style.gallery\"\n accept=\"image/*\"\n :disabled=\"!isEditable\"\n is-multiple\n placeholder-icon=\"image\"\n :placeholder-button=\"translate('flux.galleryPlaceholderButton')\"\n :placeholder-message=\"translate('flux.galleryPlaceholderMessage')\"\n :placeholder-title=\"translate('flux.galleryPlaceholderTitle')\"\n @select-multiple=\"onFilesSelected\">\n <template #default=\"{showPicker}\">\n <TransitionGroup\n :class=\"$style.galleryGrid\"\n :move-class=\"$style.galleryMove\"\n tag=\"div\">\n <template\n v-if=\"items\"\n v-for=\"(item, index) of items\">\n <FluxGalleryItem\n v-if=\"typeof item === 'string'\"\n :is-deletable=\"isEditable\"\n :key=\"item\"\n :url=\"item\"\n @delete=\"$emit('delete', index)\"/>\n\n <FluxGalleryItem\n v-else\n :is-deletable=\"isEditable\"\n :key=\"item.url\"\n :focal-point=\"item\"\n :url=\"item.url\"\n @delete=\"$emit('delete', index)\"/>\n </template>\n\n <slot/>\n\n <FluxGalleryItem\n v-for=\"item of pendingItems\"\n is-pending\n :key=\"item\"\n :url=\"item\"/>\n\n <button\n v-if=\"isEditable\"\n key=\"gallery-add\"\n :class=\"$style.galleryAdd\"\n type=\"button\"\n @click=\"showPicker()\">\n <FluxIcon name=\"plus\"/>\n </button>\n </TransitionGroup>\n </template>\n </FluxDropZone>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxFocalPointObject } from '@flux-ui/types';\n import { useTranslate } from '$flux/composable/private';\n import FluxDropZone from './FluxDropZone.vue';\n import FluxGalleryItem from './FluxGalleryItem.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Gallery.module.scss';\n\n const emit = defineEmits<{\n delete: [number];\n upload: [File[]];\n }>();\n\n defineProps<{\n readonly isEditable?: boolean;\n readonly items?: (string | (FluxFocalPointObject & { readonly url: string; }))[];\n readonly pendingItems?: string[];\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n\n const translate = useTranslate();\n\n function onFilesSelected(files: FileList): void {\n const images: File[] = [];\n\n for (let i = 0; i < files.length; ++i) {\n const file = files.item(i);\n\n if (!file || !file.type.startsWith('image/')) {\n continue;\n }\n\n images.push(file);\n }\n\n emit('upload', images);\n }\n</script>\n","<template>\n <div\n :class=\"$style.grid\"\n :style=\"{\n '--gap': `${gap}px`,\n '--columns': columns\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n const {\n columns = 12,\n gap = 30\n } = defineProps<{\n readonly columns?: number;\n readonly gap?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div\n :class=\"$style.gridColumn\"\n :style=\"{\n '--xs': xs ?? 12,\n '--sm': sm ?? xs ?? 12,\n '--md': md ?? sm ?? xs ?? 12,\n '--lg': lg ?? md ?? sm ?? xs ?? 12,\n '--xl': xl ?? lg ?? md ?? sm ?? xs ?? 12\n }\">\n <slot/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Grid.module.scss';\n\n defineProps<{\n readonly xs?: number;\n readonly sm?: number;\n readonly md?: number;\n readonly lg?: number;\n readonly xl?: number;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <svg\n ref=\"svg\"\n :class=\"$style.gridPattern\">\n <defs>\n <pattern\n :id=\"id\"\n :width=\"width\"\n :height=\"height\"\n patternUnits=\"userSpaceOnUse\"\n :x=\"-1\"\n :y=\"-1\">\n <path\n :d=\"`M.5 ${height}V.5H${width}`\"\n fill=\"none\"\n :stroke-dasharray=\"strokeDasharray\"/>\n </pattern>\n </defs>\n\n <rect\n width=\"100%\"\n height=\"100%\"\n stroke-width=\"0\"\n :fill=\"`url(#${id})`\"/>\n\n <svg\n v-if=\"squares\"\n style=\"overflow: visible;\">\n <rect\n v-for=\"[x, y] of squares\"\n :key=\"`${x}-${y}`\"\n :width=\"width - 1\"\n :height=\"height - 1\"\n :x=\"x * width\"\n :y=\"y * height\"\n stroke-width=\"0\"/>\n </svg>\n </svg>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useId } from 'vue';\n import $style from '$flux/css/component/Visual.module.scss';\n\n const {\n width = 42,\n height = 42,\n strokeDasharray = 0,\n squares\n } = defineProps<{\n readonly width?: number;\n readonly height?: number;\n readonly strokeDasharray?: number | string;\n readonly squares?: Array<[x: number, y: number]>;\n }>();\n\n const id = useId();\n</script>\n","<template>\n <div :class=\"$style.info\">\n <FluxIcon\n v-if=\"icon\"\n :class=\"$style.infoIcon\"\n :name=\"icon\"/>\n\n <div :class=\"$style.infoBody\">\n <slot/>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import type { FluxIconName } from '@flux-ui/types';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Info.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n }>();\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"21\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n setup\n lang=\"ts\">\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<template>\n <div :class=\"direction === 'horizontal' ? $style.legendHorizontal : $style.legendVertical\">\n <template v-for=\"item of items\">\n <span\n :class=\"$style.legendItem\"\n :style=\"{\n '--color': item.color\n }\">\n {{ item.label }}\n </span>\n </template>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxDirection, FluxLegendObject } from '@flux-ui/types';\n import $style from '$flux/css/component/Legend.module.scss';\n\n const {\n direction = 'horizontal'\n } = defineProps<{\n readonly direction?: FluxDirection;\n readonly items: FluxLegendObject[];\n }>();\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconLeading: icon, iconTrailing: 'arrow-right-long', isFilled, label, href, rel, target, to}\"\n :css-class=\"$style.linkButton\"\n :css-class-icon=\"$style.linkButtonIcon\"\n :css-class-label=\"$style.linkButtonLabel\"\n @click=\"emit('click', $event)\"\n @mouseenter=\"emit('mouseenter', $event)\"\n @mouseleave=\"emit('mouseleave', $event)\">\n <template\n v-for=\"slot of SLOTS\"\n #[slot]>\n <slot :name=\"slot\"/>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps, FluxButtonSlots, FluxIconName } from '@flux-ui/types';\n import FluxButton, { SLOTS } from './FluxButton.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n const emit = defineEmits<FluxButtonEmits>();\n\n const {\n type = 'button'\n } = defineProps<FluxButtonProps & {\n readonly icon?: FluxIconName;\n readonly label?: string;\n }>();\n\n defineSlots<FluxButtonSlots>();\n</script>\n","<template>\n <FluxMenuGroup :is-horizontal=\"isHorizontal\">\n <template v-for=\"item in items\">\n <component :is=\"item\"/>\n </template>\n </FluxMenuGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { flattenVNodeTree } from '@flux-ui/internals';\n import { cloneVNode, computed, unref, VNode } from 'vue';\n import FluxMenuGroup from './FluxMenuGroup.vue';\n\n const modelValue = defineModel<number>({\n required: true\n });\n\n const {\n mode = 'highlight'\n } = defineProps<{\n readonly isHorizontal?: boolean;\n readonly mode?: 'highlight' | 'select';\n }>();\n\n const slots = defineSlots<{\n default(): any;\n }>();\n\n const items = computed(() => flattenVNodeTree(slots.default())\n .map((item: VNode, index: number) => cloneVNode(item, {\n isHighlighted: mode === 'highlight' && unref(modelValue) === index,\n isSelectable: mode === 'select',\n isSelected: mode === 'select' && unref(modelValue) === index,\n onClick: () => modelValue.value = index\n })));\n</script>\n","<template>\n <div\n :class=\"$style.menuTitle\"\n role=\"presentation\">\n {{ title }}\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import $style from '$flux/css/component/Menu.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <div\n :class=\"clsx(\n color === 'gray' && $style.noticeGray,\n color === 'primary' && $style.noticePrimary,\n color === 'danger' && $style.noticeDanger,\n color === 'info' && $style.noticeInfo,\n color === 'success' && $style.noticeSuccess,\n color === 'warning' && $style.noticeWarning,\n isCenter && $style.isCenter,\n isFluid && $style.isFluid\n )\"\n role=\"alert\">\n <FluxSpinner\n v-if=\"isLoading\"\n :class=\"$style.noticePrefix\"/>\n\n <FluxIcon\n v-if=\"icon && !isLoading\"\n :class=\"$style.noticePrefix\"\n :name=\"icon\"/>\n\n <div :class=\"$style.noticeBody\">\n <p\n v-if=\"title\"\n :class=\"$style.noticeTitle\">\n {{ title }}\n </p>\n <p\n v-if=\"message\"\n :class=\"$style.noticeMessage\">\n {{ message }}\n </p>\n <slot/>\n </div>\n\n <slot name=\"end\"/>\n\n <button\n v-if=\"isCloseable\"\n :class=\"$style.noticeClose\"\n type=\"button\"\n @click=\"emit('close')\">\n <FluxIcon name=\"xmark\"/>\n </button>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxColor, FluxIconName } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxIcon from './FluxIcon.vue';\n import FluxSpinner from './FluxSpinner.vue';\n import $style from '$flux/css/component/Notice.module.scss';\n\n const emit = defineEmits<{\n close: [];\n }>();\n\n const {\n color = 'gray'\n } = defineProps<{\n readonly color?: FluxColor;\n readonly icon?: FluxIconName;\n readonly isCenter?: boolean;\n readonly isCloseable?: boolean;\n readonly isFluid?: boolean;\n readonly isLoading?: boolean;\n readonly message?: string;\n readonly title?: string;\n }>();\n\n defineSlots<{\n default(): any;\n end(): any;\n }>();\n</script>\n","<template>\n <FluxStack\n direction=\"vertical\"\n :gap=\"6\">\n <slot/>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import FluxStack from './FluxStack.vue';\n\n defineSlots<{\n default(): any;\n }>();\n</script>\n","<script lang=\"ts\">\n import type { FluxSize } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import { defineComponent, PropType } from 'vue';\n import { FluxOverlayTransition } from '$flux/transition';\n import { createDialogRenderer } from '$flux/util';\n import $style from '$flux/css/component/Overlay.module.scss';\n\n export default defineComponent({\n emits: ['close'],\n inheritAttrs: false,\n props: {\n isCloseable: {default: false, type: Boolean},\n size: {default: 'small', type: String as PropType<FluxSize>}\n },\n setup(props, {attrs, emit, slots}) {\n return createDialogRenderer(\n attrs,\n props,\n emit,\n slots,\n clsx(\n props.size === 'small' && $style.overlaySmall,\n props.size === 'medium' && $style.overlayMedium,\n props.size === 'large' && $style.overlayLarge\n ),\n FluxOverlayTransition\n );\n }\n });\n</script>\n","<template>\n <div :class=\"$style.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=\"$style.progressBarValue\"\n :style=\"{\n width: `${isIndeterminate ? 100 : position * 100}%`\n }\"/>\n </div>\n\n <div\n v-if=\"status\"\n :class=\"$style.progressBarInfo\">\n <FluxFadeTransition>\n <span\n :key=\"status\"\n :class=\"$style.progressBarStatus\">\n {{ status }}\n </span>\n </FluxFadeTransition>\n\n <FluxFadeTransition>\n <span\n v-if=\"!isIndeterminate\"\n :class=\"$style.progressBarProgress\">\n {{ progress }}\n </span>\n </FluxFadeTransition>\n </div>\n </FluxStack>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { computed, unref } from 'vue';\n import { FluxFadeTransition } from '$flux/transition';\n import FluxStack from './FluxStack.vue';\n import $style from '$flux/css/component/Progress.module.scss';\n\n const {\n isIndeterminate,\n max = 1,\n min = 0,\n value\n } = defineProps<{\n readonly isIndeterminate?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly status?: string;\n readonly value?: number;\n }>();\n\n const position = computed(() => {\n if (isIndeterminate) {\n return 0;\n }\n\n return ((value ?? min) - min) / (max - min);\n });\n\n const progress = computed(() => new Intl\n .NumberFormat(navigator.language, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n })\n .format(unref(position) ?? 0));\n</script>\n","<template>\n <FluxButton\n :=\"{type, disabled, iconTrailing, isFilled, isLoading, label, size, to}\"\n :class=\"clsx(\n !isDone && !isLoading && $style.isIdle,\n isDone && $style.isDone,\n isLoading && $style.isLoading\n )\"\n :css-class=\"$style.publishButton\"\n :css-class-icon=\"$style.publishButtonIcon\"\n :css-class-label=\"$style.publishButtonLabel\"\n @click=\"$emit('click', $event)\"\n @mouseenter=\"$emit('mouseenter', $event)\"\n @mouseleave=\"$emit('mouseleave', $event)\">\n <template #iconLeading>\n <div :class=\"$style.publishButtonAnimation\">\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <FluxIcon\n :class=\"$style.publishButtonCloud\"\n name=\"cloud\"/>\n\n <svg\n :class=\"$style.publishButtonAnimation\"\n viewBox=\"0 0 512 512\">\n <path\n :class=\"$style.publishButtonAnimationCircle\"\n d=\"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256 114.6 0 256 0s256 114.6 256 256ZM256 48C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationArrow\"\n d=\"M272.9 135.7c-4.6-4.9-11-7.7-17.7-7.7-7.7.3-14.1 2.9-17.7 7.8l-87.25 96a23.86 23.86 0 0 0-4.15 25.9c3.8 8.7 12.4 14.3 21 14.3h56l.9 88a24 24 0 0 0 24 24h16c13.25 0 23.1-10.75 23.1-24v-88h56c9.53 0 18.16-5.66 22-14.38a24.03 24.03 0 0 0-4.38-25.91L272.9 135.7Z\"/>\n\n <path\n :class=\"$style.publishButtonAnimationCheck\"\n d=\"M243.8 339.8a28.07 28.07 0 0 1-39.6 0l-64-64a28.07 28.07 0 0 1 0-39.6 28.07 28.07 0 0 1 39.6 0l44.2 44.2 108.2-108.2a28.07 28.07 0 0 1 39.6 0 28.07 28.07 0 0 1 0 39.6l-128 128Z\"/>\n </svg>\n </div>\n </template>\n </FluxButton>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import type { FluxButtonEmits, FluxButtonProps } from '@flux-ui/types';\n import { clsx } from 'clsx';\n import FluxButton from './FluxButton.vue';\n import FluxIcon from './FluxIcon.vue';\n import $style from '$flux/css/component/Button.module.scss';\n\n defineEmits<FluxButtonEmits>();\n\n defineProps<Omit<FluxButtonProps, 'iconLeading'> & {\n readonly isDone?: boolean;\n }>();\n</script>\n","<template>\n <FluxButtonGroup\n :class=\"$style.quantitySelector\"\n :aria-disabled=\"disabled ? true : undefined\">\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue <= min\"\n icon-leading=\"minus\"\n tabindex=\"-1\"\n @click=\"decrement\"/>\n\n <input\n ref=\"input\"\n v-model=\"modelValue\"\n :class=\"$style.quantitySelectorInput\"\n :style=\"{\n width: `${width}px`\n }\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n type=\"number\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"/>\n\n <FluxSecondaryButton\n :class=\"$style.quantitySelectorButton\"\n :disabled=\"disabled || modelValue >= max\"\n icon-leading=\"plus\"\n tabindex=\"-1\"\n @click=\"increment\"/>\n </FluxButtonGroup>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { unrefTemplateElement } from '@flux-ui/internals';\n import { ref, toRef, unref, useTemplateRef, watchEffect } from 'vue';\n import { useDisabled } from '$flux/composable';\n import FluxButtonGroup from './FluxButtonGroup.vue';\n import FluxSecondaryButton from './FluxSecondaryButton.vue';\n import $style from '$flux/css/component/Form.module.scss';\n\n const modelValue = defineModel<number>({\n default: 0\n });\n\n const {\n disabled: componentDisabled,\n max = 100,\n min = 0,\n step = 1\n } = defineProps<{\n readonly disabled?: boolean;\n readonly max?: number;\n readonly min?: number;\n readonly step?: number;\n }>();\n\n const disabled = useDisabled(toRef(() => componentDisabled));\n const inputRef = useTemplateRef('input');\n\n const width = ref(0);\n\n function decrement(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.max(min, unref(modelValue) - step);\n }\n\n function increment(): void {\n if (unref(disabled)) {\n return;\n }\n\n modelValue.value = Math.min(max, unref(modelValue) + step);\n }\n\n function sizeToContent(): void {\n const input = unrefTemplateElement<HTMLInputElement>(inputRef);\n\n if (!input || isNaN(input.valueAsNumber)) {\n return;\n }\n\n width.value = 0;\n\n requestAnimationFrame(() => {\n width.value = Math.max(51, input.scrollWidth + 30);\n });\n }\n\n watchEffect(() => {\n if (unref(modelValue) > max) {\n increment();\n return;\n }\n\n if (unref(modelValue) < min) {\n decrement();\n return;\n }\n\n sizeToContent();\n });\n</script>\n","<template>\n <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":["r","e","t","f","n","o","clsx","BREAKPOINTS","useBreakpoints","currentBreakpoint","ref","breakpointRefs","key","updateBreakpoints","width","activeBreakpoint","value","onMounted","onUnmounted","FluxDisabledInjectionKey","FluxExpandableGroupInjectionKey","FluxFlyoutInjectionKey","FluxFilterInjectionKey","FluxFormFieldInjectionKey","FluxTableInjectionKey","FluxTooltipInjectionKey","isFluxFilterOptionHeader","obj","isFluxFilterOptionItem","isFluxFormSelectGroup","item","isFluxFormSelectOption","english","iconRegistry","fluxRegisterIcons","icons","acc","icon","iconName","DEFAULT_SNACKBAR_DURATION","state","reactive","alertId","tooltipId","addAlert","spec","id","addConfirm","addPrompt","addSnackbar","addTooltip","registerDialog","removeAlert","index","removeConfirm","c","removePrompt","removeSnackbar","s","removeTooltip","updateSnackbar","updateTooltip","showAlert","resolve","showConfirm","showPrompt","text","showSnackbar","duration","useFluxStore","inertMain","computed","tooltip","promiseToVoidFunction","fn","args","isString","str","isObject","_obj$constructor","pick","keys","_","k","_ref","v","DIRECTION","forceDirection","direction","objectIncludes","b","a","arrA","arrB","i","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","el","maskedClass","mask","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","start","end","KEY_Z","KEY_Y","HTMLMaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","HTMLInputMaskElement","HTMLContenteditableMaskElement","root","selection","anchorOffset","focusOffset","range","InputHistory","steps","InputMask","_this$masked","masked","val","ev","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","handler","hIndex","details","oldRawValue","offset","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","beforePos","shiftChar","Masked","flags","fromPos","toPos","ch","checkTail","consistentState","noFixState","fixDetails","chDetails","consistentTail","appended","beforeTailState","tailDetails","ci","d","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","chunk","lastBlockIter","chunkBlock","remainChars","props","cstate","chunkShiftPos","PatternCursor","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","p","bNames","bName","expose","repeat","bOpts","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","block","blockDetails","chunkTail","bFromPos","bToPos","blockChunk","blockIndex","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","bic","element","imask","iban","vat","useDisabledInjection","inject","useDisabled","componentDisabled","treeDisabled","unref","useExpandableGroupInjection","useFilterInjection","useFlyoutInjection","useFormFieldInjection","useId","useTableInjection","useTooltipInjection","V","freeGlobal","freeSelf","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","length","isArray","symbolProto","symbolToString","baseToString","toString","baseSlice","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","string","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","arrayReduce","accumulator","initAccum","basePropertyOf","object","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","guard","reApos","createCompounder","callback","camelCase","word","N","m","h","y","T","x","S","u","E","L","U","de","me","K","be","xe","P","he","z","ye","Ee","Te","M","we","ve","ge","B","Le","q","R","Me","Fe","Re","W","g","ke","G$1","#e","#t","w","G","X","j","Ae","He","De","Y","Se","Z","Oe","Ie","J","_e","$","Ce","Ue","Ne","Pe","Q","Be","Ke","ze","Ve","ee","qe","We","H","Xe","Ge","Qe","D","re","$e","se","Je","A","tt","et","ce","ae","ie","fe","at","it","st","fr","pr","vr","gr","Sr","Ir","Vr","qr","es","ts","ps","us","gs","ws","Is","Os","qs","Ws","ta","oa","ua","da","wa","La","Oa","Ca","Wa","Ga","oi","ni","di","mi","Li","Mi","ue","lt","C","emit","__emit","definition","__props","warn","onClick","evt","_createElementBlock","_normalizeClass","_unref","$style","_normalizeStyle","size","_openBlock","_Fragment","_renderList","path","navigate","componentType","_createBlock","_component_router_link","_mergeProps","$attrs","rel","target","to","_cache","$event","$emit","_renderSlot","_ctx","href","_createElementVNode","SLOTS","disabled","toRef","onMouseEnter","onMouseLeave","FluxPressable","type","cssClass","isFilled","isSubmit","tabindex","isLoading","iconLeading","iconTrailing","FluxSpinner","FluxIcon","cssClassIcon","label","cssClassLabel","FluxButton","isDestructive","useFormSelect","modelValue","isMultiple","options","searchQuery","values","model","groups","search","available","selected","subItems","subItem","useLoaded","tasks","shallowRef","loaded","fallback","params","translation","paramName","useTranslate","instance","getCurrentInstance","isVueI18n","slot","CLASS_MAP","variant","_createVNode","dialogRef","useTemplateRef","mountRef","paneRef","isClosing","isOpening","isOpen","openerWidth","openerHeight","paneX","paneY","paneMarginX","paneMarginY","useFocusTrap","close","pane","unrefTemplateElement","open","mount","height","reposition","top","left","paneWidth","paneHeight","mx","my","toggle","onDialogBackdropClick","watch","onCleanup","dialog","provide","__expose","_normalizeProps","_guardReactiveProps","FluxPane","isAutoWidth","_resolveDynamicComponent","isCentered","isFill","isWrapping","gap","_sfc_main$2q","defineComponent","slots","elm","onHover","onLeave","_useSlots","translate","FluxStack","FluxSpacer","FluxFlyout","FluxButtonGroup","FluxSecondaryButton","isResettable","FluxTooltip","FluxDestructiveButton","_withCtx","paneVariant","FluxPaneBody","FluxButtonStack","elementRef","useFocusZone","I","te","canvasRef","componentId","useComponentId","contextRef","animationFrame","tick","polygons","mulberry","mulberry32","color","localMulberry","count","points","schedule","onBeforeUnmount","cancel","update","context","shapes","widthBasedOpacity","tx","ty","shape","canvas","aspectRatio","minColumnWidth","afterEnter","isHtmlElement","enter","leave","_Transition","mode","isBack","STATUS_CLASS_MAP","colorSeed","seed","status","alt","src","fallbackInitials","fallbackIcon","FluxFadeTransition","onDeleteClick","dot","isDeletable","_sfc_main$24","purple600","orange600","pink600","attrs","Fragment","flattenVNodeTree","vnode","cloneVNode","tagName","anchorRef","popupRef","onResize","onScroll","useMutationObserver","anchor","popup","popupHeight","popupWidth","px","py","resize","watchEffect","isSelectable","isActive","isHighlighted","isIndented","isSelected","imageSrc","command","commandIcon","commandLoading","_useModel","inputRef","localValue","nativeType","blur","focus","passwordTypeToggle","onBlur","onFocus","onInput","dateTime","DateTime","onKeyDown","iso","__","inputMask","isSecondary","autoComplete","autoFocus","max","maxLength","min","placeholder","isReadonly","step","isHorizontal","modelSearch","select","option","FluxMenuGroup","isSearchable","FluxFormInput","searchPlaceholder","FluxMenuItem","FluxMenuSubHeader","isLarge","isClickable","INITIAL_HIGHLIGHTED_INDEX","anchorPopupRef","optionElementRefs","searchInputElementRef","highlightedIndex","isKeyboardAction","isPopupOpen","focusElement","highlightedId","rawOptions","group","useClickOutside","deselect","nextTick","selectedIndex","onKeyUp","Anchor","FluxTag","_Teleport","AnchorPopup","FluxMenu","so","smallTicks","generateStepTicks","ticks","lower","upper","rootRef","onPointerMove","onPointerUp","onPointerDown","isDragging","isTicksVisible","FluxTicks","position","percentageLower","percentageUpper","TARGET_SELECTOR","createDialogRenderer","className","transition","unregister","zIndex","dialogCount","children","isVisible","child","Comment","content","Teleport","createLabelForDateRange","preventCustom","startStr","endStr","getValueLabel","valueLabel","FilterMenuRenderer","getComponentName","getComponentProps","parsers","renderFilterGroup","parseDate","base","parseDateRange","parseOption","parseOptionAsync","fetchOptions","parseOptions","generateMultiOptionsLabel","parseOptionsAsync","parseRange","formatter","formatNumber","FluxSeparator","renderFilterItem","isVNode","FilterItem","VNodeRenderer","isTransitioningToPast","viewDate","viewMonth","viewYear","dates","days","nextMonth","previousMonth","setViewDate","useCalendar","months","useCalendarMonthSwitcher","years","nextYears","previousYears","useCalendarYearSwitcher","eventNodes","events","en","getEventsForDate","forDate","forDateStr","date","setToday","setViewMonth","month","setViewYear","year","FluxActionBar","_hoisted_1","$styleDatePicker","_hoisted_2","FluxWindowTransition","day","event","_toDisplayString","isIndeterminate","selectableIcon","isJustNowVisible","relative","isTyping","isReceived","FluxAvatar","avatarAlt","avatarFallback","avatarFallbackIcon","avatarFallbackInitials","avatarSrc","postedBy","thumbPosition","onDecrement","valueX","valueY","maxX","maxY","minX","minY","stepX","stepY","roundStep","onIncrement","CoordinatePickerThumb","message","currentLength","error","hint","FluxFormFieldAddition","thumbRef","percentage","tooltipContent","countDecimals","onDragging","is","onUpdate","clampWithStepPrecision","SliderBase","SliderTrack","SliderThumb","alpha","hsv","rgb","hsvToRGB","hue","saturation","saturationValue","saturationPickerColor","hslInputH","generateComputedInput","hsvToHSL","hslToHSV","hslInputS","hslInputL","hsvInputH","hsvInputS","hsvInputV","rgbInputR","rgbToHSV","rgbInputG","rgbInputB","fromHSV","toHSV","oldModelValue","hex","hexToRGB","hslToRGB","rgbToHEX","rgbToHSL","CoordinatePicker","FluxFormSlider","isAlphaEnabled","FluxFormField","customColor","colors","isCustomAllowed","FluxColorPicker","FluxPrimaryButton","gutter","onDeselect","onSelect","SelectBase","isArrow","isCurrent","isSpacer","pages","isNextDisabled","isPreviousDisabled","visiblePages","sizes","dots","visible","page","next","previous","prompt","pageStr","arrows","isCompact","FluxPaginationButton","limit","limitOptions","perPage","FluxPagination","FluxFormSelect","isBordered","isHoverable","isSeparated","isStriped","contentDirection","fillColumns","FluxTableRow","FluxTableCell","_hoisted_3","captionSide","IGNORED_SLOTS","rows","FluxTable","row","uniqueKey","limits","FluxPaginationBar","viewDateNext","viewDatePrevious","getInitialDate","viewMode","maxDate","minDate","normalizedSelection","isDisabled","isWithinBoundary","unit","isWithinRange","edge","isWithinSelection","selectionStart","selectionEnd","setDate","setView","view","onDateMouseOver","onDateMouseOut","FluxVerticalWindowTransition","contentPlacement","svgRef","svgWidth","svgHeight","svg","cr","cx","cy","contentRef","isDraggingOver","pathLength","onWindowDragEnd","onWindowDragStart","onWindowDrop","onDragEnter","onDragLeave","onDrop","files","onFileSelected","showPicker","contentId","headerId","closeAll","register","expandIcon","onBeforeMount","FluxAutoHeightTransition","expandables","expandable","isOpenRef","getExposedRef","uid","faderRef","useInterval","current","fader","back","windowRef","filters","items","reset","getValue","hasValue","setValue","FluxWindow","_createSlots","filter","resettable","currentValue","onDatePicked","FluxDatePicker","rangeMode","filteredOptions","FilterOptionBase","debouncedModelSearch","useDebouncedRef","fetchRelevant","fetchSearch","selectedOptions","visibleOptions","vo","FluxFormColumn","inView","useInView","draw","columns","squares","dpr","opacity","setup","delta","frame","lastTime","animate","time","imageRef","dragging","isPreviewing","focalPointX","focalPointY","onImageLoaded","image","pageX","pageY","onShowPreviewClicked","FluxPaneFooter","onSubmit","FluxDisabled","flyoutRef","FluxFormInputGroup","setTime","fieldRefs","onPaste","field","isPrivate","lowerThumbRef","upperThumbRef","isDraggingLower","isDraggingUpper","lowerValue","upperValue","which","title","onOpen","timeZones","timeZoneGroupOrder","timeZone","timeZoneOptions","timeZoneOffset","go","sortedGroups","ai","groupOptions","labelA","labelB","isHidden","isDeleteVisible","FluxFocalPointImage","focalPoint","url","FluxRemove","isPending","onFilesSelected","images","file","FluxDropZone","isEditable","_TransitionGroup","FluxGalleryItem","pendingItems","xs","sm","md","lg","xl","strokeDasharray","_hoisted_4","isCenter","isFluid","isCloseable","_sfc_main$E","FluxOverlayTransition","subTitle","FluxPaneHeader","alert","confirm","alerts","confirms","prompts","FluxOverlay","FluxAlert","FluxConfirm","FluxPrompt","FluxAutoGrid","borderColor","isMasked","FluxGridPattern","FluxAnimatedColors","animatedColors","animatedOpacity","animatedSeed","isInset","imageUrl","imageAlt","formatPercentage","isLegendVisible","FluxLegend","avatarSize","isButton","progress","isDone","decrement","increment","sizeToContent","hasActions","onAction","actionKey","onClose","isRendered","progressIndeterminate","progressValue","FluxProgressBar","progressMax","progressMin","progressStatus","subMessage","actions","actionLabel","FluxAction","snackbars","snackbar","FluxSnackbar","_sfc_main$m","has","calculate","origin","margin","safeZone","scale","originWidth","originHeight","calculateHorizontalPosition","calculateVerticalPosition","FluxTooltipTransition","arrowAngle","arrowX","arrowY","diff","inert","FluxOverlayProvider","FluxSnackbarProvider","FluxTooltipProvider","controlRef","itemRefs","activeItemX","activeItemWidth","activate","onUpdated","itemRef","controlX","_sfc_main$j","_sfc_main$i","FluxSlideOverTransition","spacings","flyoutDirection","flyoutIsAutoWidth","flyoutMargin","flyoutWidth","buttonIcon","bindings","changeIcon","changeValue","changeColor","amount","isTransitioningBack","newIndex","oldIndex","FluxStepperSteps","FluxDynamicView","tabBarRef","useEventListener","checkScroll","isEndArrowVisible","isStartArrowVisible","tabBar","scrollToEnd","scrollToStart","tabRef","tab","tabs","FluxTabBar","FluxTabBarItem","FluxActions","sortingIcon","isShrinking","isSticky","minWidth","isSortable","sort","photo","when","isSwitch","iconOff","iconOn","floatingMode"],"mappings":"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AU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAC1B,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACvE,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EAAK,GAAU;AAAA,EACxD,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EAAK,GAAU;AAAA,EACzC,GAAU;AAAA,EAAM,GAAU;AAAA,EA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AA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAGEC,IAAwC;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAGE7jB,IAAa4K,kBAElB,GASKjM,IAAWpR,GAA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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,90]}
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]}