@fastkit/vui 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vui.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vui.mjs","names":["update:modelValue","update:modelValue","update:modelValue","update:modelValue"],"sources":["../src/schemes/control.ts","../src/injections.ts","../src/composables/control.ts","../src/components/VIcon/VIcon.tsx","../src/components/VMenu/VMenu.tsx","../src/components/VTooltip/VTooltip.tsx","../src/components/VFormControl/VFormControl.tsx","../src/composables/form-selector.tsx","../src/composables/elevation.ts","../src/components/VDialog/VDialog.tsx","../src/components/VSnackbar/VSnackbar.tsx","../src/components/VSheetModal/VSheetModal.tsx","../src/components/VSkeltonLoader/VSkeltonLoaderBone.tsx","../src/components/VDisabledReason/VDisabledReason.tsx","../src/components/VBusyImage/VBusyImage.tsx","../src/components/VGrid/schemes.ts","../src/components/VGrid/VGridItem.tsx","../src/components/VGrid/VGridContainer.tsx","../src/components/VPaper/VPaper.tsx","../src/components/VAvatar/VAvatar.tsx","../src/components/VChip/VChip.tsx","../src/components/VCard/VCard.tsx","../src/components/VCard/VCardContent.tsx","../src/components/VCard/VCardActions.tsx","../src/components/VButton/VButton.tsx","../src/components/VButton/VButtonGroup.tsx","../src/components/VPagination/VPagination.tsx","../src/components/VListTile/VListTile.tsx","../src/components/VDrawerLayout/VDrawerLayout.tsx","../src/components/VHero/VHero.tsx","../src/components/VNavigation/VNavigationItem.tsx","../src/components/VNavigation/VNavigation.tsx","../src/components/VControlField/VControlField.tsx","../src/components/VTextCounter/VTextCounter.tsx","../src/components/VCheckable/VCheckable.tsx","../src/components/VCheckbox/VCheckbox.tsx","../src/components/VCheckboxGroup/VCheckboxGroup.tsx","../src/components/VRadio/VRadio.tsx","../src/components/VRadioGroup/VRadioGroup.tsx","../src/components/VSwitch/VSwitch.tsx","../src/components/VSwitchGroup/VSwitchGroup.tsx","../src/components/VOption/VOption.tsx","../src/components/VOptionGroup/VOptionGroup.tsx","../src/components/VSelect/VSelect.tsx","../src/components/VTextField/VTextField.tsx","../src/components/VNumberField/VNumberField.tsx","../src/components/VTextarea/VTextarea.tsx","../src/components/VFileInput/VFileInput.tsx","../src/components/VFormGroup/VFormGroup.tsx","../src/components/VForm/VForm.tsx","../src/components/VTabs/VTab.tsx","../src/components/VTabs/VTabs.tsx","../src/components/VBreadcrumbs/VBreadcrumbs.tsx","../src/components/VContentSwitcher/VContentSwitcher.tsx","../src/components/VDataTable/VDataTable.tsx","../src/components/VApp/VApp.tsx","../src/components/VToolbar/VToolbar.tsx","../src/components/VToolbar/VToolbarMenu.tsx","../src/components/VToolbar/VToolbarEdge.tsx","../src/components/VToolbar/VToolbarTitle.tsx","../src/service.tsx","../src/plugin.tsx"],"sourcesContent":["export const CONTROL_SIZES = ['sm', 'md', 'lg'] as const;\n\nexport type ControlSize = (typeof CONTROL_SIZES)[number];\n\nexport const CONTROL_FIELD_VARIANTS = ['outlined', 'filled', 'flat'] as const;\n\nexport type ControlFieldVariant = (typeof CONTROL_FIELD_VARIANTS)[number];\n\nexport const CONTROL_LOADING_SPINNER_SIZES: Record<ControlSize, number> = {\n sm: 16,\n md: 20,\n lg: 24,\n};\n","import { InjectionKey, inject, computed, provide } from 'vue';\nimport type { VuiService } from './service';\nimport type {\n ControlProvider,\n ControlFieldProvider,\n VuiColorProvider,\n} from './composables';\n\nexport const VuiInjectionKey: InjectionKey<VuiService> = Symbol('Vui');\n\nexport const VuiControlInjectionKey: InjectionKey<ControlProvider> =\n Symbol('VuiControl');\n\nexport const VuiControlFieldInjectionKey: InjectionKey<ControlFieldProvider> =\n Symbol('VuiControlField');\n\nexport const VuiColorProviderInjectionKey: InjectionKey<VuiColorProvider> =\n Symbol('VuiColorProvider');\n\nexport const VUI_TEXT_FIELD_SYMBOL = 'vui-text-field';\nexport const VUI_TEXTAREA_SYMBOL = 'vui-textarea';\nexport const VUI_SELECT_SYMBOL = 'vui-select';\nexport const VUI_OPTION_SYMBOL = 'vui-option';\nexport const VUI_CHECKBOX_GROUP_SYMBOL = 'vui-checkbox-group';\nexport const VUI_CHECKBOX_SYMBOL = 'vui-checkbox';\nexport const VUI_RADIO_GROUP_SYMBOL = 'vui-radio-group';\nexport const VUI_RADIO_SYMBOL = 'vui-radio';\nexport const VUI_SWITCH_GROUP_SYMBOL = 'vui-switch-group';\nexport const VUI_SWITCH_SYMBOL = 'vui-switch';\nexport const VUI_FILE_INPUT_SYMBOL = 'vui-file-input';\nexport const VUI_FORM_GROUP_SYMBOL = 'vui-form-group';\nexport const VUI_FORM_SYMBOL = 'vui-form';\n\nexport function useVui() {\n const vui = inject(VuiInjectionKey);\n if (!vui) {\n throw new Error('missing vui service');\n }\n return vui;\n}\n\nexport function useVuiColorProvider(): VuiColorProvider {\n const parent = inject(VuiColorProviderInjectionKey, null);\n if (parent) {\n return parent;\n }\n\n const vui = useVui();\n const primary = computed(() => vui.setting('primaryScope'));\n const error = computed(() => vui.setting('errorScope'));\n const provider: VuiColorProvider = {\n primary,\n error,\n className: (type) => {\n const scope = provider[type].value;\n return `${scope}-scope`;\n },\n };\n\n provide(VuiColorProviderInjectionKey, provider);\n\n return provider;\n}\n","import {\n PropType,\n ExtractPropTypes,\n computed,\n ComputedRef,\n provide,\n inject,\n} from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport {\n ControlSize,\n CONTROL_SIZES,\n ControlFieldVariant,\n CONTROL_FIELD_VARIANTS,\n} from '../schemes';\nimport {\n VuiControlInjectionKey,\n VuiControlFieldInjectionKey,\n} from '../injections';\n\nexport function createControlProps() {\n return createPropsOptions({\n size: {\n type: String as PropType<ControlSize>,\n validator: (value: any) => {\n if (value == null) return true;\n return CONTROL_SIZES.includes(value);\n },\n },\n loading: Boolean,\n });\n}\n\nexport type ControlProps = ExtractPropTypes<\n ReturnType<typeof createControlProps>\n>;\n\nexport interface ControlProvider {\n parentControl: ControlProvider | null;\n size: ComputedRef<ControlSize>;\n classes: ComputedRef<any>;\n}\n\nexport interface UseControlProviderOptions {\n defaultSize?: ControlSize;\n}\n\nexport function useControl(\n props: ControlProps,\n opts: UseControlProviderOptions = {},\n) {\n const { defaultSize = 'md' } = opts;\n const parentControl = inject(VuiControlInjectionKey, null);\n const size = computed(() => {\n const propSize = props.size;\n return propSize || (parentControl ? parentControl.size.value : defaultSize);\n });\n const classes = computed(() => ['v-control', `v-control--${size.value}`]);\n const provider: ControlProvider = {\n parentControl,\n size,\n classes,\n };\n provide(VuiControlInjectionKey, provider);\n return provider;\n}\n\nexport function createControlFieldProviderProps() {\n return createPropsOptions({\n variant: {\n type: String as PropType<ControlFieldVariant>,\n validator: (value: any) => {\n if (value == null) return true;\n return CONTROL_FIELD_VARIANTS.includes(value);\n },\n },\n });\n}\n\nexport type ControlFieldProviderProps = ExtractPropTypes<\n ReturnType<typeof createControlFieldProviderProps>\n>;\n\nexport interface ControlFieldProvider {\n parentControlField: ControlFieldProvider | null;\n variant: ComputedRef<ControlFieldVariant>;\n}\n\nexport interface UseControlFieldProviderOptions {\n defaultVariant?: ControlFieldVariant;\n}\n\nexport function useControlField(\n props: ControlFieldProviderProps,\n opts: UseControlFieldProviderOptions = {},\n) {\n const { defaultVariant = 'flat' } = opts;\n const parentControlField = inject(VuiControlFieldInjectionKey, null);\n const variant = computed(() => {\n const propVariant = props.variant;\n return (\n propVariant ||\n (parentControlField ? parentControlField.variant.value : defaultVariant)\n );\n });\n const provider: ControlFieldProvider = {\n parentControlField,\n variant,\n };\n provide(VuiControlFieldInjectionKey, provider);\n return provider;\n}\n","import './VIcon.scss';\nimport {\n defineComponent,\n PropType,\n computed,\n CSSProperties,\n VNodeChild,\n VNodeProps,\n} from 'vue';\nimport { createPropsOptions, ExtractPropInput } from '@fastkit/vue-utils';\nimport type { IconName } from '@fastkit/icon-font';\n\nexport type { IconName } from '@fastkit/icon-font';\nexport { ICON_NAMES } from '@fastkit/icon-font';\n\ntype IconPropInout = ExtractPropInput<typeof iconProps>;\n\ntype IconGenerator = (input: IconPropInout) => VNodeChild;\n\ntype EmptyIconSymbol = '$empty';\n\ntype ToggleableIconHook = (gen: IconGenerator, ctx: boolean) => VNodeChild;\n\nexport type RawIconProp = IconName | EmptyIconSymbol | ToggleableIconHook;\n\n// export function toRawIconProp<T = void>(\n// prop: RawIconProp<T>,\n// payload: () => T,\n// ): RawIconProp {\n// if (!prop || typeof prop !== 'function') {\n// return prop;\n// }\n// const fn = (gen: IconGenerator): VNodeChild => {\n// const t = payload();\n// return prop(gen, t);\n// };\n// return fn;\n// }\n\n// export const rawRawIconProp = [String, Function] as PropType<RawIconProp>;\nconst _rawIconProp = [String, Function];\n\nexport function rawIconProp() {\n return _rawIconProp as PropType<RawIconProp>;\n}\n\nexport function resolveRawIconProp(\n payload: boolean,\n prop?: RawIconProp,\n extraProps?: Record<string, unknown> & VNodeProps,\n): VNodeChild {\n if (!prop) return;\n\n return typeof prop === 'function' ? (\n prop(\n (input: IconPropInout) => <VIcon {...input} {...(extraProps as any)} />,\n payload,\n )\n ) : (\n <VIcon {...(extraProps as any)} name={prop} />\n );\n}\n\nexport const iconProps = createPropsOptions({\n name: {\n type: String as PropType<IconName | EmptyIconSymbol>,\n required: true,\n },\n rotate: {\n type: Number,\n },\n});\n\nexport const VIcon = defineComponent({\n name: 'VIcon',\n props: {\n ...iconProps,\n },\n emits: {} as {\n click: (ev: PointerEvent) => true;\n },\n setup(props, ctx) {\n const iconName = computed(() => props.name);\n const clickable = computed(\n () => typeof (ctx.attrs as any).onClick !== 'undefined',\n );\n const classes = computed(() => [\n {\n 'v-icon--clickable': clickable.value,\n },\n ]);\n\n const iconAttrs = computed(() => {\n const attrs: {\n class: any;\n style?: CSSProperties;\n } = {\n class: ['v-icon__body icon', `icon-${iconName.value}`],\n };\n const { rotate } = props;\n if (rotate) {\n attrs.style = {\n transform: `rotate(${rotate}deg)`,\n };\n }\n return attrs;\n });\n\n return () => (\n <span class={[`v-icon notranslate`, classes.value]}>\n <i {...iconAttrs.value} />\n </span>\n );\n },\n});\n","import './VMenu.scss';\n\nimport { defineMenuComponent } from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\n\nconst colorProps = colorSchemeProps();\n\nexport const VMenu = defineMenuComponent({\n name: 'VMenu',\n attrs: {\n class: 'v-menu',\n },\n props: {\n ...colorProps,\n },\n setup(ctx) {\n const color = useColorClasses(ctx.props, { useRootThemeDefault: true });\n\n ctx.setupContext.expose({\n menu: ctx,\n });\n\n return (children) => (\n <div class={['v-menu__body', color.colorClasses.value]} {...ctx.attrs}>\n {children}\n </div>\n );\n },\n});\n","import './VTooltip.scss';\n\nimport { defineComponent } from 'vue';\nimport { typedSlotWithCtx } from '@fastkit/vue-utils';\nimport { VMenu } from '../VMenu';\n\nexport const VTooltip = defineComponent({\n name: 'VTooltip',\n inheritAttrs: false,\n setup(_props, ctx) {\n return () => {\n const attrs = {\n ...ctx.attrs,\n };\n\n const defaultSlot = ctx.slots.default;\n if (attrs.openOnHover == null) {\n attrs.openOnHover = true;\n }\n if (attrs.openDelay == null) {\n attrs.openDelay = 200;\n }\n if (attrs.hideOnScroll == null) {\n attrs.hideOnScroll = true;\n }\n\n return (\n <VMenu\n {...attrs}\n scrollLock={false}\n class=\"v-tooltip\"\n v-slots={{\n ...ctx.slots,\n default: typedSlotWithCtx(VMenu, 'default', (payload) => [\n <span class=\"v-tooltip__inner\">{defaultSlot?.(payload)}</span>,\n ]),\n }}\n />\n );\n };\n },\n}) as typeof VMenu;\n","import './VFormControl.scss';\nimport { computed, defineComponent, VNodeChild } from 'vue';\nimport {\n createFormNodeWrapperSettings,\n useFormNodeWrapper,\n FormNodeWrapperSlots,\n FormNodeWrapper,\n RequiredChipSource,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, typedSlotsWithCtx } from '@fastkit/vue-utils';\nimport { useVuiColorProvider, useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { VIcon } from '../VIcon';\nimport { VTooltip } from '../VTooltip';\n\nconst { props, emits } = createFormNodeWrapperSettings();\n\nexport function createRequiredChipRenderer(\n required: () => boolean,\n props: {\n requiredChip?: RequiredChipSource;\n },\n vui: VuiService = useVui(),\n) {\n return () => {\n if (!required()) return;\n let chip: VNodeChild;\n const { requiredChip } = props;\n if (requiredChip === false) return;\n if (requiredChip) {\n if (typeof requiredChip === 'string') {\n chip = requiredChip;\n } else if (typeof requiredChip === 'function') {\n chip = requiredChip();\n }\n }\n if (chip === undefined) {\n chip = vui.getRequiredChip();\n }\n return chip;\n };\n}\n\nconst slots = defineSlots<\n FormNodeWrapperSlots & {\n default?: (formNodeWrapper: FormNodeWrapper) => any;\n }\n>();\n\nexport const VFormControl = defineComponent({\n name: 'VFormControl',\n props: {\n ...props,\n ...slots(),\n error: Boolean,\n },\n emits,\n slots,\n\n setup(props, ctx) {\n const vui = useVui();\n const control = useFormNodeWrapper(props, ctx, {\n hinttipPrepend: () => (\n <VIcon\n class=\"v-form-control__label__hinttip__icon\"\n name={vui.icon('hinttip')}\n />\n ),\n });\n\n const hinttipDelay = computed(() => {\n let { hinttipDelay } = control;\n if (hinttipDelay == null) {\n hinttipDelay = vui.setting('hinttipDelay');\n }\n if (hinttipDelay == null) {\n hinttipDelay = 500;\n }\n return hinttipDelay;\n });\n\n ctx.expose({\n control,\n });\n\n const colorProvider = useVuiColorProvider();\n\n const classes = computed(() => [\n 'v-form-control',\n {\n 'v-form-control--validating': control.validating,\n 'v-form-control--pending': control.pending,\n 'v-form-control--focused': control.focused,\n 'v-form-control--dirty': control.dirty,\n 'v-form-control--pristine': control.pristine,\n 'v-form-control--disabled': control.isDisabled,\n 'v-form-control--readonly': control.isReadonly,\n 'v-form-control--touched': control.touched,\n 'v-form-control--untouched': control.untouched,\n 'v-form-control--invalid': control.invalid,\n 'v-form-control--valid': control.valid,\n },\n colorProvider.className(\n props.error\n ? 'error'\n : control.invalid && !control.isReadonly\n ? 'error'\n : 'primary',\n ),\n ]);\n\n const getRequiredChip = createRequiredChipRenderer(\n () => control.isRequired,\n props,\n vui,\n );\n\n const handleClick = (ev: PointerEvent) =>\n ctx.emit('clickLabel', ev, control);\n\n return () => {\n const label = control.renderLabel();\n const message = control.renderMessage();\n const appends = control.renderInfoAppends();\n const hinttip = control.renderHinttip();\n const _hinttipDelay = hinttipDelay.value;\n\n return (\n <div class={classes.value}>\n {label && (\n <label class=\"v-form-control__label\" onClick={handleClick}>\n {label}\n {getRequiredChip()}\n {hinttip && (\n <VTooltip\n y=\"top\"\n openOnHover={_hinttipDelay !== 'click'}\n openDelay={\n typeof _hinttipDelay === 'number'\n ? _hinttipDelay\n : undefined\n }\n v-slots={typedSlotsWithCtx(VTooltip, {\n activator: (tooltip) => (\n <a\n class=\"v-form-control__label__hinttip\"\n href=\"javascript:void(0)\"\n {...tooltip.attrs}>\n {hinttip.tip}\n </a>\n ),\n })}>\n <div class=\"v-form-control__label__hinttip__hint\">\n {hinttip.hint}\n </div>\n </VTooltip>\n )}\n </label>\n )}\n <div class=\"v-form-control__body\">\n {ctx.slots.default?.(control)}\n {!props.hiddenInfo && (\n <div class=\"v-form-control__info\">\n {!!message && (\n <div class=\"v-form-control__message\">{message}</div>\n )}\n {!!appends && (\n <div class=\"v-form-control__appends\">{appends}</div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n };\n },\n});\n","import './form-selector.scss';\nimport { VNodeChild, defineComponent, PropType, computed } from 'vue';\nimport {\n createFormNodeWrapperProps,\n createFormSelectorSettings,\n FormNodeWrapperSlots,\n useFormSelectorControl,\n FormSelectorControl,\n ResolvedFormSelectorItem,\n FormNodeControl,\n} from '@fastkit/vue-form-control';\nimport {\n withCtx,\n defineSlots,\n TypedSlot,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n} from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from './control';\nimport { VFormControl } from '../components/VFormControl';\nimport { useVui } from '../injections';\nimport { VProgressCircular } from '../components/loading';\nimport { CONTROL_LOADING_SPINNER_SIZES } from '../schemes';\n\nexport interface DefineFormSelectorComponentOptions {\n name: string;\n defaultMultiple?: boolean;\n nodeType: string;\n className: string;\n itemRenderer: (ctx: {\n control: FormSelectorControl;\n selected: boolean;\n attrs: ResolvedFormSelectorItem & {\n modelValue: boolean;\n key: string | number;\n };\n slots: {\n default: TypedSlot<FormNodeControl>;\n };\n }) => VNodeChild;\n}\n\nconst slots = defineSlots<\n FormNodeWrapperSlots & {\n default?: () => any;\n }\n>();\n\nexport function defineFormSelectorComponent(\n opts: DefineFormSelectorComponentOptions,\n) {\n const { itemRenderer, defaultMultiple, nodeType, className } = opts;\n const { props, emits } = createFormSelectorSettings({\n defaultMultiple,\n });\n\n return defineComponent({\n name: opts.name,\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlProps(),\n stacked: {\n type: Boolean,\n default: true,\n },\n // eslint-disable-next-line vue/require-prop-types\n loadingMessage: {} as PropType<VNodeChildOrSlot>,\n // eslint-disable-next-line vue/require-prop-types\n failedToLoadItemsMessage: {} as PropType<VNodeChildOrSlot>,\n ...slots(),\n },\n emits,\n slots,\n setup(props, ctx) {\n const selectorControl = useFormSelectorControl(props, ctx, {\n nodeType,\n defaultMultiple,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-form-selector',\n className,\n {\n ...control.classes.value,\n 'v-form-selector--stacked': props.stacked,\n },\n ]);\n const vui = useVui();\n const loadingMessageRef = computed<VNodeChild | undefined>(() => {\n const slot = resolveVNodeChildOrSlots(\n props.loadingMessage,\n vui.setting('loadingMessage'),\n 'Loading...',\n );\n return slot && slot(vui);\n });\n const failedToLoadItemsMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.failedToLoadItemsMessage,\n vui.setting('failedToLoadDataMessage'),\n 'Failed to load data.',\n );\n return slot && slot(vui);\n });\n\n const defaultSlot = () => (\n <div class=\"v-form-selector__body\">\n {selectorControl.itemsLoadFailed && (\n <div\n key=\"failed\"\n class=\"v-form-selector__placeholder v-form-selector__placeholder--error\">\n {failedToLoadItemsMessageRef.value}\n </div>\n )}\n {selectorControl.itemsLoading && (\n <div key=\"loading\" class=\"v-form-selector__placeholder\">\n <VProgressCircular\n indeterminate\n class=\"mr-1\"\n size={CONTROL_LOADING_SPINNER_SIZES[control.size.value || 'md']}\n />\n\n {loadingMessageRef.value}\n </div>\n )}\n {selectorControl.propGroups.map((group) => {\n const { items } = group;\n return (\n <>\n {items.map((attrs) => {\n const selected = selectorControl.isSelected(attrs.value);\n return itemRenderer({\n selected,\n control: selectorControl,\n attrs: {\n ...attrs,\n modelValue: selected,\n key: attrs.value,\n },\n slots: {\n default: () => attrs.label(selectorControl),\n },\n });\n })}\n </>\n );\n })}\n {ctx.slots.default?.()}\n </div>\n );\n\n ctx.expose({\n control: selectorControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={selectorControl}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n error={selectorControl.itemsLoadFailed}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n }}\n />\n );\n },\n });\n}\n","import { PropType, ExtractPropTypes, computed } from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport { VuiElevationValue } from '../schemes';\n\nexport function createElevationProps() {\n return createPropsOptions({\n elevation: Number as PropType<VuiElevationValue>,\n });\n}\n\nexport type ElevationProps = ExtractPropTypes<\n ReturnType<typeof createElevationProps>\n>;\n\nexport interface UseElevationOptions {\n defaultValue?: VuiElevationValue;\n}\n\nexport function useElevation(\n props: ElevationProps,\n opts: UseElevationOptions = {},\n) {\n const elevationValue = computed(() =>\n props.elevation == null ? opts.defaultValue : props.elevation,\n );\n const elevationClassName = computed(() => {\n const v = elevationValue.value;\n return v == null ? undefined : `elevation-${v}`;\n });\n return {\n elevationValue,\n elevationClassName,\n };\n}\n","import './VDialog.scss';\n\nimport {\n defineDialogComponent,\n createStackActionProps,\n useStackAction,\n} from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\nconst colorProps = colorSchemeProps();\n\nexport const VDialog = defineDialogComponent({\n name: 'VDialog',\n props: {\n ...createStackActionProps(),\n ...colorProps,\n dense: Boolean,\n },\n setup(ctx) {\n const { props, control } = ctx;\n const vui = useVui();\n const actionControl = useStackAction(props, control, {\n resolver: (actions) => {\n if (actions.length === 0) {\n return [vui.stackAction('close')];\n }\n return actions;\n },\n });\n const color = useColorClasses(props, { useRootThemeDefault: true });\n\n return (children) => {\n const { $actions } = actionControl;\n return (\n <div\n class={[\n 'v-dialog',\n color.colorClasses.value,\n props.dense && 'v-dialog--dense',\n ]}>\n <div class=\"v-dialog__body\">{children}</div>\n {$actions.length > 0 && (\n <div class=\"v-dialog__actions\">{$actions}</div>\n )}\n </div>\n );\n };\n },\n});\n","import './VSnackbar.scss';\n\nimport {\n defineSnackbarComponent,\n createStackActionProps,\n useStackAction,\n} from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\nconst colorProps = colorSchemeProps();\n\nexport const VSnackbar = defineSnackbarComponent({\n name: 'VSnackbar',\n props: {\n ...createStackActionProps(),\n ...colorProps,\n },\n setup(ctx) {\n const { props, control } = ctx;\n const vui = useVui();\n const actionControl = useStackAction(props, control, {\n resolver: (actions) => {\n if (actions.length === 0) {\n return [vui.stackAction('close')];\n }\n return actions;\n },\n });\n const color = useColorClasses(props, { useRootThemeDefault: true });\n\n return (children) => {\n const { $actions } = actionControl;\n return (\n <div class={['v-snackbar', color.colorClasses.value]} {...ctx.attrs}>\n <div class=\"v-snackbar__inner\">\n <div class=\"v-snackbar__body\">{children}</div>\n {$actions.length > 0 && (\n <div class=\"v-snackbar__actions\">{$actions}</div>\n )}\n </div>\n </div>\n );\n };\n },\n});\n","import './VSheetModal.scss';\nimport { defineComponent, PropType, VNodeChild, computed } from 'vue';\nimport {\n createStackableDefine,\n VStackSlots,\n VStackControl,\n useStackControl,\n} from '@fastkit/vue-stack';\n\nconst { props, emits } = createStackableDefine({\n defaultTransition: 'v-sheet-modal',\n defaultFocusTrap: true,\n defaultFocusRestorable: true,\n defaultScrollLock: true,\n});\n\nexport interface VSheetModalSlots extends VStackSlots {\n header?: (control: VStackControl) => VNodeChild;\n}\n\nexport const sheetModalProps = {\n ...props,\n header: Function as PropType<(control: VStackControl) => VNodeChild>,\n 'v-slots': undefined as unknown as PropType<VSheetModalSlots>,\n};\n\nconst SHEET_STACK_TYPE = Symbol('VSheetModal');\n\nexport const VSheetModal = defineComponent({\n name: 'VSheetModal',\n inheritAttrs: false,\n props: sheetModalProps,\n emits,\n setup(props, ctx) {\n const stackControl = useStackControl(props, ctx, {\n stackType: SHEET_STACK_TYPE,\n });\n const hasActiveChild = computed(() => {\n const myIndex = stackControl.zIndex;\n const stacks = stackControl.$service\n .getActiveStacks()\n .filter((stack) => stack.stackType === SHEET_STACK_TYPE);\n return stacks.some((stack) => stack.zIndex > myIndex);\n });\n return {\n stackControl,\n hasActiveChild,\n };\n },\n render() {\n const { render } = this.stackControl;\n const headerSlot = this.$slots.header || this.header;\n return render((children) => (\n <div\n class={[\n 'v-sheet-modal',\n {\n 'v-sheet-modal--has-active-child': this.hasActiveChild,\n },\n ]}\n tabindex=\"0\">\n {headerSlot && (\n <div class=\"v-sheet-modal__header\">\n {headerSlot(this.stackControl)}\n </div>\n )}\n <div class=\"v-sheet-modal__scroller\">{children}</div>\n </div>\n ));\n },\n});\n","import './VSkeltonLoaderBone.scss';\n\nimport { defineComponent } from 'vue';\n\nexport const VSkeltonLoaderBone = defineComponent({\n name: 'VSkeltonLoaderBone',\n inheritAttrs: false,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n },\n setup(props, ctx) {\n return () => {\n const TagName = props.tag as 'div';\n return (\n <TagName {...ctx.attrs} class=\"v-skelton-loader-bone\">\n {ctx.slots.default?.()}\n </TagName>\n );\n };\n },\n});\n","import './VDisabledReason.scss';\nimport {\n type PropType,\n type ExtractPublicPropTypes,\n type VNodeChild,\n} from 'vue';\nimport {\n defineDisabledReasonComponent,\n DISABLED_REASON_BASE_PROPS,\n} from '@fastkit/vue-disabled-reason';\nimport { createMenuProps } from '@fastkit/vue-stack';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport {\n registerActionableAttrsResolver,\n registerActionableRenderWrapper,\n type ActionableCustomProps as _ActionableCustomProps,\n} from '@fastkit/vue-action';\nimport { VTooltip } from '../VTooltip';\n\nconst menuProps = createMenuProps();\n\n/**\n * Display type\n *\n * Currently, only tooltip is supported\n */\nexport type DisabledReasonType = 'tooltip';\n\nexport const DISABLED_REASON_PROPS = {\n ...menuProps,\n ...createPropsOptions({\n /**\n * Display type\n *\n * Currently, only tooltip is supported\n *\n * @see {@link DisabledReasonType}\n */\n type: {\n type: String as PropType<DisabledReasonType>,\n default: 'tooltip' satisfies DisabledReasonType,\n },\n }),\n};\n\nexport interface DisabledReasonInput extends ExtractPublicPropTypes<\n typeof DISABLED_REASON_PROPS & typeof DISABLED_REASON_BASE_PROPS\n> {}\n\nexport const VDisabledReason = defineDisabledReasonComponent({\n name: 'VDisabledReason',\n props: DISABLED_REASON_PROPS,\n setup(api) {\n return (reason) => {\n const { type: _type, ...tooltipProps } = api.props;\n return (\n <VTooltip\n {...tooltipProps}\n disabled={!reason || !api.disabled}\n v-slots={{\n activator: ({ attrs }) => (\n <span\n class=\"v-disabled-reason\"\n // If tabindex is 0 or greater, enable pointer-events via CSS\n tabindex={api.disabled ? 0 : -1}\n {...attrs}\n />\n ),\n default: () => reason,\n }}\n />\n );\n };\n },\n});\n\n// Customize '@fastkit/vue-action' so that when the custom attribute\n// \"disabledReason\" is set, it wraps the element with `VDisabledReason`\n// to display the reason for being disabled.\n\n// 1. Extend the '@fastkit/vue-action' interface\ndeclare module '@fastkit/vue-action' {\n interface ActionableCustomProps {\n /**\n * Reason why this element is disabled.\n *\n * If set, hovering over the disabled element will display the reason\n * using `VDisabledReason`.\n */\n disabledReason: PropType<string | (() => VNodeChild) | DisabledReasonInput>;\n }\n}\n\n// 2. Handle `disabledReason` as a custom attribute of '@fastkit/vue-action'\nregisterActionableAttrsResolver((attrs, ctx) => {\n const disabledReason = ctx.getAttr('disabledReason');\n if (disabledReason) {\n // Remove disabledReason from the original attrs\n // (to prevent adding unnecessary attributes to the element)\n delete attrs.disabledReason;\n return [\n undefined,\n {\n disabledReason,\n },\n ];\n }\n});\n\n// 3. Register a custom render wrapper for '@fastkit/vue-action'\nregisterActionableRenderWrapper((customProps, currentNode) => {\n const { disabledReason } = customProps;\n const disabledReasonInput =\n typeof disabledReason === 'string' || typeof disabledReason === 'function'\n ? { reason: disabledReason }\n : disabledReason;\n\n if (disabledReasonInput) {\n return (\n <VDisabledReason {...disabledReasonInput}>{currentNode}</VDisabledReason>\n );\n }\n return currentNode;\n});\n","import './VBusyImage.scss';\n\nimport {\n defineComponent,\n HTMLAttributes,\n ImgHTMLAttributes,\n PropType,\n computed,\n ref,\n watch,\n onMounted,\n onBeforeUnmount,\n CSSProperties,\n} from 'vue';\nimport { IN_WINDOW } from '@fastkit/helpers';\nimport { loadImage } from '@fastkit/dom';\nimport { defineSlots } from '@fastkit/vue-utils';\n\nexport declare type ImgHTMLAttributesPropOptions = {\n [K in keyof ImgHTMLAttributes]-?: PropType<ImgHTMLAttributes[K]>;\n};\n\nconst IMAGE_ATTRS = [\n 'alt',\n 'crossorigin',\n 'decoding',\n 'sizes',\n 'src',\n 'srcset',\n 'usemap',\n] as const;\n\nexport function splitAttrs(attrs: ImgHTMLAttributes): {\n el: HTMLAttributes;\n img: ImgHTMLAttributes;\n} {\n const el: HTMLAttributes = { ...attrs };\n const img: ImgHTMLAttributes = {};\n\n for (const ATTR of IMAGE_ATTRS) {\n const value = attrs[ATTR];\n if (value != null) {\n img[ATTR] = value as any;\n }\n }\n\n return {\n el,\n img,\n };\n}\n\nexport type BusyImageLoadState = 'pending' | 'loading' | 'loaded' | 'error';\n\nexport type BusyImageSizeValue = number | string;\n\nconst NUMBERISH_PROP = [Number, String] as PropType<BusyImageSizeValue>;\n\nconst DEFAULT_HEIGHT = 150;\n\nconst resolveBusyImageSizeValue = (\n source?: BusyImageSizeValue,\n): string | undefined => {\n if (source == null) return;\n return isNaN(source as number) ? String(source) : `${source}px`;\n};\n\nexport interface BusyImageRect {\n width?: string;\n height?: string;\n}\n\nexport interface BusyImageRects {\n placeholder: BusyImageRect;\n main: BusyImageRect;\n}\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\n/**\n * 画像表示用コンポーネント\n * <img /> タグのように振る舞うが、ローディング表示や、表示サイズの調整など、ちょっといい感じにやるためのコンポーネント\n */\nexport const VBusyImage = defineComponent({\n name: 'VBusyImage',\n props: {\n ...(undefined as unknown as ImgHTMLAttributesPropOptions),\n aspectRatio: String,\n width: NUMBERISH_PROP,\n height: NUMBERISH_PROP,\n cover: Boolean,\n ...slots(),\n },\n emits: {\n load: (ev: Event) => true,\n error: (ev: Event) => true,\n },\n slots,\n setup(props, ctx) {\n const loadStateRef = ref<BusyImageLoadState>(\n props.cover && isAvailableSrc(ctx.attrs.src as any)\n ? 'loading'\n : 'pending',\n );\n const attrsRef = computed(() => splitAttrs(ctx.attrs));\n const isPendingRef = computed(() => loadStateRef.value === 'pending');\n const isLoadingRef = computed(() => loadStateRef.value === 'loading');\n const isLoadedRef = computed(() => loadStateRef.value === 'loaded');\n const isErrorRef = computed(() => loadStateRef.value === 'error');\n const classesRef = computed(() => [\n `v-busy-image--${loadStateRef.value}`,\n {\n 'v-busy-image--cover': props.cover,\n 'v-busy-image--clickable': typeof ctx.attrs.onClick === 'function',\n },\n ]);\n const nodeRef = ref<HTMLImageElement>();\n const coverImageRef = ref<HTMLImageElement>();\n const rectsRef = computed<BusyImageRects>(() => {\n const placeholder: BusyImageRect = {};\n const main: BusyImageRect = {};\n const { cover } = props;\n let { width, height } = props;\n\n if (height == null && cover) {\n height = DEFAULT_HEIGHT;\n }\n\n if (width == null && cover) {\n width = height;\n }\n\n width = resolveBusyImageSizeValue(width);\n height = resolveBusyImageSizeValue(height);\n\n main.width = width;\n main.height = height;\n\n placeholder.width = width;\n placeholder.height = height;\n\n if (placeholder.height == null) {\n placeholder.height = resolveBusyImageSizeValue(DEFAULT_HEIGHT);\n }\n\n if (placeholder.width == null) {\n placeholder.width = placeholder.height;\n }\n\n return {\n placeholder,\n main,\n };\n });\n\n const currentRectRef = computed<BusyImageRect>(() =>\n isLoadedRef.value ? rectsRef.value.main : rectsRef.value.placeholder,\n );\n\n const stylesRef = computed<CSSProperties>(() => {\n const { value: coverImage } = coverImageRef;\n const coverSrc = coverImage && coverImage.src;\n const styles: CSSProperties = {\n ...currentRectRef.value,\n };\n if (coverSrc) {\n styles.backgroundImage = `url(${coverSrc})`;\n }\n return styles;\n });\n\n let booted = false;\n const mounted = ref(false);\n\n watch(\n () =>\n [ctx.attrs.src as string | null | undefined, mounted.value] as const,\n ([src, _mounted], before) => {\n if (!_mounted) return;\n if (src === before?.[0] && !props.cover && !isPendingRef.value) return;\n\n coverImageRef.value = undefined;\n if (isAvailableSrc(src)) {\n loadStateRef.value = 'loading';\n if (props.cover) {\n loadImage(src)\n .then((image) => {\n coverImageRef.value = image;\n setManualState('load');\n })\n .catch((_err) => {\n setManualState('error');\n // eslint-disable-next-line no-console\n console.error(_err);\n });\n }\n } else {\n loadStateRef.value = 'pending';\n }\n },\n { immediate: IN_WINDOW },\n );\n\n const setManualState = (loadType: 'load' | 'error') => {\n loadStateRef.value = loadType === 'load' ? 'loaded' : 'error';\n\n const ev = new Event(loadType, {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n\n ctx.emit(loadType as any, ev);\n };\n\n onMounted(() => {\n mounted.value = true;\n if (booted || props.cover) return;\n\n const image = nodeRef.value;\n if (!image) return;\n\n const loadType = imageIsReady(image);\n\n if (loadType) {\n setManualState(loadType);\n }\n });\n\n onBeforeUnmount(() => {\n coverImageRef.value = undefined;\n });\n\n const handleLoad = (ev: Event) => {\n booted = true;\n loadStateRef.value = 'loaded';\n ctx.emit('load', ev);\n };\n\n const handleError = (ev: Event) => {\n booted = true;\n loadStateRef.value = 'error';\n ctx.emit('error', ev);\n };\n\n ctx.expose({\n state: loadStateRef,\n isPending: isPendingRef,\n isLoading: isLoadingRef,\n isLoaded: isLoadedRef,\n isError: isErrorRef,\n });\n\n return () => {\n const { el: elAttrs, img: imgAttrs } = attrsRef.value;\n const styles = stylesRef.value;\n const children = ctx.slots.default?.();\n\n return (\n <span\n class={['v-busy-image', classesRef.value]}\n {...elAttrs}\n style={styles}>\n {!props.cover && (\n <img\n key=\"img\"\n ref={nodeRef}\n class=\"v-busy-image__node\"\n {...imgAttrs}\n onLoad={handleLoad}\n onError={handleError}\n />\n )}\n {!!children && <span class=\"v-busy-image__slot\">{children}</span>}\n </span>\n );\n };\n },\n});\n\nfunction imageIsReady(image: HTMLImageElement): 'load' | 'error' | false {\n if (!image.complete) return false;\n return image.naturalWidth + image.naturalHeight > 0 ? 'load' : 'error';\n}\n\nfunction isAvailableSrc(src: string | null | undefined): src is string {\n return typeof src === 'string' && src !== '';\n}\n","import { PropType } from 'vue';\nimport { MediaMatchKey } from '@fastkit/media-match';\n\nexport type RawGridValue<T extends number | string = number | string> =\n T | Partial<Record<MediaMatchKey, T>> | undefined;\n\nexport type RawGridValueProp<T extends number | string = number | string> =\n PropType<RawGridValue<T>>;\n\nexport function extractRawGridValueClasses<\n T extends number | string = number | string,\n>(\n value: NonNullable<RawGridValue<T>>,\n prefix: string,\n getter?: (value: T) => string,\n): string | string[] {\n if (typeof value !== 'object')\n return `${prefix}${getter ? getter(value) : value}`;\n return Object.entries(value).map(\n ([breakpoint, breakpointValue]) =>\n `${prefix}${\n getter ? getter(breakpointValue) : breakpointValue\n }--${breakpoint}`,\n );\n}\n\n// export const DEFAULT_MEDIA_MATCH_KEY = MEDIA_MATCH_CONDITIONS[0].key;\n","import './VGridItem.scss';\n\nimport { defineComponent, computed } from 'vue';\nimport { RawGridValueProp, extractRawGridValueClasses } from './schemes';\n\nexport type GridItemNumberSizeValue =\n 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport type GridItemSizeValue = GridItemNumberSizeValue | 'auto';\n\n// type MQSizeProps = Record<\n// MediaMatchKey,\n// PropType<GridItemSizeValue | undefined>\n// >;\n\nexport type GridItemAlignValue =\n | 'flex-start'\n | 'flex-end'\n | 'start'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'center'\n | 'self-start'\n | 'self-end';\n\nexport type GridItemJustifyValue =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'stretch';\n\nexport const VGridItem = defineComponent({\n name: 'VGridItem',\n inheritAttrs: false,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n // ...(undefined as unknown as MQSizeProps),\n size: undefined as unknown as RawGridValueProp<GridItemSizeValue>,\n align: undefined as unknown as RawGridValueProp<GridItemAlignValue>,\n justify: undefined as unknown as RawGridValueProp<GridItemJustifyValue>,\n order: undefined as unknown as RawGridValueProp<number | string>,\n },\n setup(props, ctx) {\n const data = computed(() => {\n const classes: any[] = [];\n\n const attrs = {\n ...ctx.attrs,\n };\n\n const { size, align, justify, order } = props;\n\n delete attrs.size;\n delete attrs.align;\n delete attrs.justify;\n delete attrs.order;\n\n size != null &&\n classes.push(extractRawGridValueClasses(size, 'grid-size-'));\n align && classes.push(extractRawGridValueClasses(align, 'self-align-'));\n justify &&\n classes.push(extractRawGridValueClasses(justify, 'self-justify-'));\n order != null &&\n classes.push(extractRawGridValueClasses(order, 'order-'));\n\n // MEDIA_MATCH_CONDITIONS.forEach(({ key }) => {\n // const v = attrs[key];\n // delete attrs[key];\n // if (v != null) {\n // classes.push(`grid-size-${v}--${key}`);\n // }\n // });\n\n return {\n classes,\n attrs,\n };\n });\n\n return () => {\n const TagName = props.tag as 'div';\n const { classes, attrs } = data.value;\n\n return (\n <TagName\n class={['v-grid-item grid-item', classes]}\n {...attrs}\n v-slots={ctx.slots}\n />\n );\n };\n },\n});\n","import './VGridContainer.scss';\n\nimport { defineComponent, computed } from 'vue';\nimport { RawGridValueProp, extractRawGridValueClasses } from './schemes';\n\nexport type GridContainerSpacingValue =\n | 0\n | 0.5\n | 1\n | 1.5\n | 2\n | 2.5\n | 3\n | 3.5\n | 4\n | 4.5\n | 5\n | 5.5\n | 6\n | 6.5\n | 7\n | 7.5\n | 8\n | 8.5\n | 9\n | 9.5\n | 10;\n\nfunction spacingValueToString(value: GridContainerSpacingValue): string {\n return Number.isInteger(value) ? String(value) : `${value}h`;\n}\n\nexport type GridContainerDirectionValue =\n 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nexport type GridContainerWrapValue = 'wrap' | 'nowrap' | 'wrap-reverse';\n\nexport type GridContainerAlignContentValue =\n | 'flex-start'\n | 'flex-end'\n | 'start'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'center'\n | 'self-start'\n | 'self-end';\n\nexport type GridContainerJustifyContentValue =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n | 'stretch';\n\nexport const VGridContainer = defineComponent({\n name: 'VGridContainer',\n inheritAttrs: false,\n props: {\n wrapperTag: {\n type: String,\n default: 'div',\n },\n tag: {\n type: String,\n default: 'div',\n },\n spacing:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n spacingX:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n spacingY:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n direction:\n undefined as unknown as RawGridValueProp<GridContainerDirectionValue>,\n wrap: undefined as unknown as RawGridValueProp<GridContainerWrapValue>,\n alignContent:\n undefined as unknown as RawGridValueProp<GridContainerAlignContentValue>,\n justifyContent:\n undefined as unknown as RawGridValueProp<GridContainerJustifyContentValue>,\n },\n setup(props, ctx) {\n const data = computed(() => {\n const classes: any[] = [];\n\n const attrs = {\n ...ctx.attrs,\n };\n\n const {\n spacing,\n spacingX,\n spacingY,\n direction,\n wrap,\n alignContent,\n justifyContent,\n } = props;\n const wrapperClass = attrs.class;\n const wrapperStyle = attrs.style as any;\n\n delete attrs.class;\n delete attrs.style;\n delete attrs.spacing;\n delete attrs.spacingX;\n delete attrs.spacingY;\n delete attrs.direction;\n delete attrs.wrap;\n delete attrs.alignContent;\n delete attrs.justifyContent;\n\n // spacingX = mergeSpacing(spacing, spacingX);\n // spacingY = mergeSpacing(spacing, spacingY);\n // if (!spacingX) {\n // spacingX = spacing;\n // }\n\n // align &&\n // classes.push(extractRawGridItemValueClasses(align, 'self-align-'));\n // justify &&\n // classes.push(extractRawGridItemValueClasses(justify, 'self-justify-'));\n spacing != null &&\n classes.push(\n extractRawGridValueClasses(\n spacing,\n 'grid-spacing-',\n spacingValueToString,\n ),\n );\n spacingX != null &&\n classes.push(\n extractRawGridValueClasses(\n spacingX,\n 'grid-spacing-x-',\n spacingValueToString,\n ),\n );\n spacingY != null &&\n classes.push(\n extractRawGridValueClasses(\n spacingY,\n 'grid-spacing-y-',\n spacingValueToString,\n ),\n );\n\n direction &&\n classes.push(extractRawGridValueClasses(direction, 'direction-'));\n wrap && classes.push(extractRawGridValueClasses(wrap, ''));\n alignContent &&\n classes.push(extractRawGridValueClasses(alignContent, 'align-'));\n justifyContent &&\n classes.push(extractRawGridValueClasses(justifyContent, 'justify-'));\n\n return {\n wrapperClass,\n wrapperStyle,\n classes,\n attrs,\n };\n });\n\n return () => {\n const WrapperTag = props.wrapperTag as 'div';\n const TagName = props.tag as 'div';\n const { wrapperClass, wrapperStyle, classes, attrs } = data.value;\n\n return (\n <WrapperTag\n class={['v-grid-container-wrapper', wrapperClass]}\n style={wrapperStyle}>\n <TagName\n class={['v-grid-container grid-container', classes]}\n {...attrs}\n v-slots={ctx.slots}\n />\n </WrapperTag>\n );\n };\n },\n});\n","import './VPaper.scss';\nimport { defineComponent, computed, PropType, VNodeProps } from 'vue';\nimport { renderSlotOrEmpty, defineSlots } from '@fastkit/vue-utils';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { createElevationProps, useElevation } from '../../composables';\n\nexport const paperBaseSlots = defineSlots<{\n header?: () => void;\n default?: () => void;\n footer?: () => void;\n}>();\n\nexport function createPaperBaseProps() {\n return {\n color: String as PropType<ScopeName>,\n tag: {\n type: [String, Object] as PropType<any>,\n default: 'div',\n },\n ...paperBaseSlots(),\n };\n}\n\ntype ARGS = Record<string, unknown> & VNodeProps;\n\nexport function createPaperProps() {\n return {\n ...createElevationProps(),\n ...createPaperBaseProps(),\n square: Boolean,\n headerProps: Object as PropType<ARGS>,\n bodyProps: Object as PropType<ARGS>,\n footerProps: Object as PropType<ARGS>,\n innerClass: [String, Array, Object] as PropType<any>,\n };\n}\n\nexport const VPaper = defineComponent({\n name: 'VPaper',\n inheritAttrs: false,\n props: createPaperProps(),\n slots: paperBaseSlots,\n setup(props, ctx) {\n const tag = computed(() => props.tag);\n const elevation = useElevation(props, { defaultValue: 1 });\n const scope = useScopeColorClass(props);\n const classes = computed(() => [\n elevation.elevationClassName.value,\n scope.value.className,\n {\n 'v-paper--plain': !scope.value.value,\n 'v-paper--has-color': !!scope.value.value || !!ctx.attrs.disabled,\n 'v-paper--square': props.square,\n },\n ]);\n const headerProps = computed<any>(() => props.headerProps);\n const bodyProps = computed<any>(() => props.bodyProps);\n const footerProps = computed<any>(() => props.footerProps);\n\n return () => {\n const TagName = tag.value as 'div';\n const header = renderSlotOrEmpty(ctx.slots, 'header');\n const footer = renderSlotOrEmpty(ctx.slots, 'footer');\n return (\n <TagName class={['v-paper', classes.value]} {...ctx.attrs}>\n <div class={['v-paper__inner', props.innerClass]}>\n {header && (\n <div class=\"v-paper__header\" {...headerProps.value}>\n {header}\n </div>\n )}\n <div class=\"v-paper__body\" {...bodyProps.value}>\n {ctx.slots.default?.()}\n </div>\n {footer && (\n <div class=\"v-paper__footer\" {...footerProps.value}>\n {footer}\n </div>\n )}\n </div>\n </TagName>\n );\n };\n },\n});\n","import './VAvatar.scss';\nimport { defineComponent, computed, PropType } from 'vue';\nimport { actionableInheritProps, useActionable } from '@fastkit/vue-action';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport { VBusyImage } from '../VBusyImage';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport const AVATAR_SIZES = ['sm', 'md', 'lg'] as const;\n\nexport type AvatarSize = (typeof AVATAR_SIZES)[number];\n\nexport function createAvatarProps() {\n return {\n ...colorSchemeProps(),\n ...actionableInheritProps,\n size: {\n type: [String, Number] as PropType<AvatarSize | number>,\n default: 'md',\n },\n tile: Boolean,\n rounded: Boolean,\n disabled: Boolean,\n src: String,\n };\n}\n\nexport const VAvatar = defineComponent({\n name: 'VAvatar',\n inheritAttrs: false,\n props: createAvatarProps(),\n setup(props, ctx) {\n const vui = useVui();\n const defaults = vui.setting('buttonDefault');\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () => props.variant || defaults.variant,\n });\n\n const classes = computed(() => {\n const { size } = props;\n return [\n {\n 'v-avatar--tile': props.tile,\n 'v-avatar--rounded': props.rounded,\n },\n typeof size === 'string' && `v-avatar--${size}`,\n ];\n });\n\n const styles = computed(() => {\n const { size } = props;\n if (typeof size !== 'number') return;\n\n return {\n '--avatar-size': `${size}px`,\n };\n });\n\n const actionable = useActionable(ctx, {\n attrs: () => ({\n class: ['v-avatar', classes.value, color.colorClasses.value],\n style: styles.value,\n }),\n actionableClass: () => 'v-avatar--clickable',\n linkFallbackTag: 'div',\n });\n\n return () => {\n const { src } = props;\n return actionable.render(\n (!!src && <VBusyImage class=\"v-avatar__image\" src={src} cover />) ||\n ctx.slots.default?.(),\n );\n };\n },\n});\n","import './VChip.scss';\nimport { defineComponent, computed, PropType, VNodeChild } from 'vue';\nimport { actionableInheritProps, useActionable } from '@fastkit/vue-action';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport type { IconName } from '../VIcon';\nimport { VIcon } from '../VIcon';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport const CHIP_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nexport type ChipSize = (typeof CHIP_SIZES)[number];\n\nexport type VChipIcon = () => VNodeChild;\n\nexport type RawVChipIcon = IconName | VChipIcon;\n\nexport function createChipProps() {\n return {\n ...colorSchemeProps(),\n ...actionableInheritProps,\n size: {\n type: String as PropType<ChipSize>,\n default: 'md',\n },\n startIcon: [String, Function] as PropType<RawVChipIcon>,\n endIcon: [String, Function] as PropType<RawVChipIcon>,\n label: Boolean,\n disabled: Boolean,\n };\n}\n\nfunction resolveRawVChipIcon(\n raw: RawVChipIcon | undefined,\n type: 'start' | 'end',\n): VChipIcon | undefined {\n if (!raw) return;\n if (typeof raw === 'function') {\n return () => {\n const child = raw();\n if (child == null) return;\n return (\n <span class={['v-chip__icon', `v-chip__icon--${type}`]}>{child}</span>\n );\n };\n }\n return () => (\n <VIcon class={['v-chip__icon', `v-chip__icon--${type}`]} name={raw} />\n );\n}\n\nexport const VChip = defineComponent({\n name: 'VChip',\n inheritAttrs: false,\n props: createChipProps(),\n setup(props, ctx) {\n const vui = useVui();\n const defaults = vui.setting('buttonDefault');\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () => props.variant || defaults.variant,\n });\n const startIcon = computed(() => {\n const _icon = resolveRawVChipIcon(props.startIcon, 'start');\n return _icon && _icon();\n });\n const endIcon = computed(() => {\n const _icon = resolveRawVChipIcon(props.endIcon, 'end');\n return _icon && _icon();\n });\n\n const classes = computed(() => {\n const { size } = props;\n return [\n {\n 'v-chip--label': props.label,\n },\n typeof size === 'string' && `v-chip--${size}`,\n ];\n });\n\n const actionable = useActionable(ctx, {\n attrs: () => ({\n class: ['v-chip', classes.value, color.colorClasses.value],\n }),\n actionableClass: () => 'v-chip--clickable',\n linkFallbackTag: 'div',\n });\n\n return () =>\n actionable.render([\n startIcon.value,\n <span class=\"v-chip__content\">{ctx.slots.default?.()}</span>,\n endIcon.value,\n ]);\n },\n});\n","import './VCard.scss';\nimport { defineComponent, computed } from 'vue';\nimport { actionableInheritProps, VAction } from '@fastkit/vue-action';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\nimport { VPaper, createPaperProps } from '../VPaper';\n\nexport function createCardProps() {\n return {\n ...createPaperProps(),\n ...actionableInheritProps,\n disabled: Boolean,\n };\n}\n\nexport const VCard = defineComponent({\n name: 'VCard',\n inheritAttrs: false,\n props: createCardProps(),\n setup(props, ctx) {\n const _props = computed(() => props);\n const data = computed(() => {\n const attrs = {\n ..._props.value,\n ...ctx.attrs,\n class: ['v-card', ctx.attrs.class],\n tag: VAction,\n linkFallbackTag: 'div',\n };\n if (props.disabled) {\n attrs.disabled = 'disabled' as any;\n delete (attrs as any).onClick;\n delete (attrs as any).href;\n delete (attrs as any).to;\n } else {\n delete (attrs as any).disabled;\n }\n return { attrs };\n });\n\n return () => <VPaper {...data.value.attrs} v-slots={ctx.slots} />;\n },\n});\n","import './VCardContent.scss';\nimport { defineComponent } from 'vue';\n\nexport const VCardContent = defineComponent({\n name: 'VCardContent',\n setup(_props, ctx) {\n return () => <div class=\"v-card-content\">{ctx.slots.default?.()}</div>;\n },\n});\n","import './VCardActions.scss';\nimport { defineComponent } from 'vue';\n\nexport const VCardActions = defineComponent({\n name: 'VCardActions',\n setup(_props, ctx) {\n return () => <div class=\"v-card-actions\">{ctx.slots.default?.()}</div>;\n },\n});\n","import './VButton.scss';\nimport {\n defineComponent,\n ExtractPropTypes,\n computed,\n PropType,\n VNodeChild,\n} from 'vue';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport {\n ExtractPropInput,\n createPropsOptions,\n withCtx,\n} from '@fastkit/vue-utils';\nimport { VAction, actionableInheritProps } from '@fastkit/vue-action';\nimport { useVui } from '../../injections';\nimport { createControlProps, useControl } from '../../composables';\nimport { VProgressCircular } from '../loading';\nimport { ControlSize } from '../../schemes/control';\nimport { VIcon } from '../VIcon';\nimport type { IconName } from '../VIcon';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport type VButtonSpacer = 'left' | 'right';\n\nexport type RawVButtonSpacer = boolean | VButtonSpacer;\n\nexport type VButtonIcon = () => VNodeChild;\n\nexport type RawVButtonIcon = IconName | VButtonIcon;\n\nexport const BUTTON_ALIGNS = ['left', 'center', 'right'] as const;\n\nexport type VButtonAlign = (typeof BUTTON_ALIGNS)[number];\n\nfunction resolveRawVButtonIcon(\n raw?: RawVButtonIcon,\n type: 'main' | 'start' | 'end' = 'main',\n): VButtonIcon | undefined {\n if (!raw) return;\n return typeof raw === 'function'\n ? raw\n : () => (\n <VIcon\n class={['v-button__icon', `v-button__icon--${type}`]}\n name={raw}\n />\n );\n}\n\nexport const vueButtonProps = createPropsOptions({\n ...colorSchemeProps(),\n ...actionableInheritProps,\n spacer: [Boolean, String] as PropType<RawVButtonSpacer>,\n rounded: Boolean,\n icon: [String, Function] as PropType<RawVButtonIcon>,\n startIcon: [String, Function] as PropType<RawVButtonIcon>,\n endIcon: [String, Function] as PropType<RawVButtonIcon>,\n align: {\n type: String as PropType<VButtonAlign>,\n default: 'center',\n },\n ...createControlProps(),\n});\n\nexport type VButtonProps = ExtractPropInput<typeof vueButtonProps>;\n\nexport type VButtonResolvedProps = ExtractPropTypes<typeof vueButtonProps>;\n\nconst LOADING_SIZE_MAP: Record<ControlSize, number> = {\n sm: 14,\n md: 20,\n lg: 28,\n};\n\nexport const VButton = defineComponent({\n name: 'VButton',\n inheritAttrs: false,\n props: vueButtonProps,\n setup(props, ctx) {\n const vui = useVui();\n const control = useControl(props);\n const defaults = vui.setting('buttonDefault');\n const icon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.icon);\n return _icon && _icon();\n });\n const startIcon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.startIcon, 'start');\n return _icon && _icon();\n });\n const endIcon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.endIcon, 'end');\n return _icon && _icon();\n });\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () =>\n props.variant ||\n (icon.value ? vui.setting('plainVariant') : defaults.variant),\n });\n const isPlain = computed(\n () =>\n color.variant.value.value === vui.setting('plainVariant') &&\n color.color.value.value === defaults.color,\n );\n const isLoading = computed(() => props.loading);\n // const isDisabled = computed(() => props.disabled);\n // const isRounded = computed(() =>\n // props.rounded != null ? props.rounded : !!icon.value,\n // );\n\n const spacer = computed<VButtonSpacer | undefined>(() => {\n const _spacer = props.spacer;\n if (!_spacer) return;\n return _spacer === true ? 'left' : _spacer;\n });\n\n const classes = computed(() => [\n color.colorClasses.value,\n spacer.value ? `v-button--spacer-${spacer.value}` : undefined,\n `v-button--${control.size.value}`,\n `v-button--align-${props.align}`,\n {\n 'v-button--loading': isLoading.value,\n 'v-button--icon': !!icon.value,\n 'v-button--rounded': props.rounded,\n 'v-button--plain': isPlain.value,\n },\n ]);\n\n return () => (\n <VAction\n {...ctx.attrs}\n class={['v-button', classes.value]}\n guardInProgressClass=\"v-button--guard-in-progress\"\n v-slots={{\n default: withCtx(() => (\n <>\n <span class=\"v-button__content\">\n {startIcon.value}\n {ctx.slots.default?.()}\n {icon.value}\n {endIcon.value}\n </span>\n {isLoading.value && (\n <VProgressCircular\n class=\"v-button__loading\"\n indeterminate\n size={LOADING_SIZE_MAP[control.size.value]}\n />\n )}\n </>\n )),\n }}\n />\n );\n },\n});\n","import './VButtonGroup.scss';\n\nimport { defineComponent, isVNode, cloneVNode, VNodeChild, VNode } from 'vue';\nimport { colorSchemeProps } from '@fastkit/vue-color-scheme';\nimport { renderSlotOrEmpty, isFragment } from '@fastkit/vue-utils';\nimport { createControlProps } from '../../composables';\nimport { VButton } from './VButton';\n\ntype VButtonGroupChild =\n | {\n isButton: true;\n node: VNode;\n }\n | {\n isButton: false;\n node: VNodeChild;\n };\n\nexport const VButtonGroup = defineComponent({\n name: 'VButtonGroup',\n props: {\n ...colorSchemeProps(),\n ...createControlProps(),\n disabled: Boolean,\n },\n setup(props, ctx) {\n return () => {\n let hasIcon = false;\n let buttonLength = 0;\n\n let tmp = renderSlotOrEmpty(ctx.slots) || [];\n\n if (tmp.length === 1 && isFragment(tmp[0])) {\n tmp = tmp[0].children as any;\n }\n\n const children: VButtonGroupChild[] = tmp.map((node) => {\n if (!isVNode(node) || node.type !== VButton) {\n return {\n isButton: false,\n node,\n };\n }\n\n buttonLength++;\n\n if (!hasIcon && node.props && !!node.props.icon) {\n hasIcon = true;\n }\n\n return {\n isButton: true,\n node,\n };\n });\n\n let buttonIndex = 0;\n\n const $children = children.map((child) => {\n if (child.isButton) {\n buttonIndex++;\n\n const hasLeft = buttonIndex > 1;\n const hasRight = buttonIndex < buttonLength;\n\n const childProps = child.node.props;\n\n return cloneVNode(child.node, {\n ...props,\n ...childProps,\n rounded: false,\n class: [\n 'v-button-group__item',\n {\n 'v-button--icon': hasIcon,\n 'v-button-group__item--has-left': hasLeft,\n 'v-button-group__item--has-right': hasRight,\n },\n ],\n });\n }\n return child.node;\n });\n return (\n <div\n class={['v-button-group', { 'v-button-group--has-icon': hasIcon }]}>\n {$children}\n </div>\n );\n };\n },\n});\n","import './VPagination.scss';\n\nimport {\n defineComponent,\n PropType,\n ref,\n watch,\n computed,\n withDirectives,\n} from 'vue';\nimport {\n createPropsOptions,\n rawNumberPropType,\n resolveNumberish,\n} from '@fastkit/vue-utils';\nimport { isPromise } from '@fastkit/helpers';\nimport { useRouter, RouterLink } from 'vue-router';\nimport { resizeDirectiveArgument } from '@fastkit/vue-resize';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { resolveRawIconProp } from '../VIcon';\nimport { useVui } from '../../injections';\n\nexport type VPaginationGuard = (\n page: number,\n) => boolean | void | Promise<boolean | void>;\n\nexport const PAGINATION_ALIGNS = ['left', 'center', 'right'] as const;\n\nexport type VPaginationAlign = (typeof PAGINATION_ALIGNS)[number];\n\nexport function paginationProps() {\n return createPropsOptions({\n /**\n * Active Pages\n */\n modelValue: {\n type: rawNumberPropType,\n default: 1,\n },\n\n /**\n * Total number of pages\n */\n length: {\n type: rawNumberPropType,\n default: 0,\n },\n\n /**\n * Maximum number of links to display.\n */\n totalVisible: rawNumberPropType,\n\n /**\n * true when narrowing\n */\n dense: Boolean,\n disabled: Boolean,\n align: {\n type: String as PropType<VPaginationAlign>,\n default: 'center',\n },\n\n /**\n * To synchronize with a query, use the query name\n */\n routeQuery: String,\n beforeChange: Function as PropType<VPaginationGuard>,\n color: String as PropType<ScopeName>,\n });\n}\n\ntype ItemSource = number | 'prev' | 'next' | 'truncate';\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n props: paginationProps(),\n emits: {\n change: (page: number) => true,\n 'update:modelValue': (page: number) => true,\n },\n setup(props, ctx) {\n const vui = useVui();\n const elRef = ref<HTMLElement | null>(null);\n const router = useRouter();\n const internalValue = ref(1);\n const containerWidth = ref(0);\n const itemSize = ref(0);\n const capacityLength = computed(() => {\n const _itemSize = itemSize.value;\n if (!_itemSize) return 0;\n return Math.floor(containerWidth.value / _itemSize);\n });\n const colorScope = useScopeColorClass({\n color: () => props.color || vui.setting('primaryScope'),\n });\n const computedLength = computed(() => resolveNumberish(props.length));\n const computedTotalVisible = computed(() =>\n resolveNumberish(props.totalVisible),\n );\n const computedNumbersLength = computed(() => capacityLength.value - 2 - 2);\n const computedPage = computed(() => {\n const { routeQuery } = props;\n if (routeQuery) {\n return vui.location.getQuery(routeQuery, Number, 1);\n }\n return internalValue.value;\n });\n\n const _range = (from: number, to: number) => {\n const range: number[] = [];\n\n from = from > 0 ? from : 1;\n\n for (let i = from; i <= to; i++) {\n range.push(i);\n }\n\n return range;\n };\n\n const computedItems = computed<ItemSource[]>(() => {\n const maxButtons = computedNumbersLength.value;\n const totalVisible = computedTotalVisible.value;\n const length = computedLength.value;\n const pageValue = computedPage.value;\n\n const maxLength = Math.min(\n Math.max(0, totalVisible || 0) || length,\n Math.max(0, maxButtons) || length,\n length,\n );\n if (length <= maxLength) {\n return _range(1, length);\n }\n const even = maxLength % 2 === 0 ? 1 : 0;\n const left = Math.floor(maxLength / 2);\n const right = length - left + 1 + even;\n\n if (pageValue > left && pageValue < right) {\n const start = pageValue - left + 2;\n const end = pageValue + left - 2 - even;\n\n return [1, 'truncate', ..._range(start, end), 'truncate', length];\n }\n if (pageValue === left) {\n const end = pageValue + left - 1 - even;\n return [..._range(1, end), 'truncate', length];\n }\n if (pageValue === right) {\n const start = pageValue - left + 1;\n return [1, 'truncate', ..._range(start, length)];\n }\n return [..._range(1, left), 'truncate', ..._range(right, length)];\n });\n\n const isActive = computed(() => computedLength.value > 1);\n\n const isTransitioning = computed(() => {\n const { routeQuery } = props;\n return vui.location.isQueryOnlyTransitioning(routeQuery);\n });\n\n const isDisabled = computed(() => props.disabled || isTransitioning.value);\n\n const classes = computed(() => [\n {\n 'v-pagination--disabled': isDisabled.value,\n 'v-pagination--dense': props.dense,\n [`v-pagination--${props.align}`]: true,\n },\n colorScope.value.className,\n ]);\n\n async function setPage(value: number | string) {\n if (isDisabled.value) return;\n const { beforeChange, routeQuery } = props;\n const newPage = resolveNumberish(value);\n if (computedPage.value === newPage) return;\n if (beforeChange) {\n try {\n let result = beforeChange(newPage);\n if (isPromise(result)) result = await result;\n if (result === false) return;\n } catch (e) {\n // noop\n }\n }\n if (routeQuery) {\n const to = createRoutableLocationByPage(newPage, routeQuery);\n return router.push(to).then((failure) => {\n !failure && ctx.emit('change', newPage);\n });\n }\n internalValue.value = newPage;\n (ctx as any).emit('update:modelValue', newPage);\n ctx.emit('change', newPage);\n }\n\n function createPageInfo(source: ItemSource): {\n number: boolean;\n page: number | undefined;\n active: boolean;\n disabled: boolean;\n } {\n const currentPage = computedPage.value;\n const length = computedLength.value;\n let number: boolean;\n let page: number | undefined;\n let active: boolean;\n let disabled: boolean;\n\n if (typeof source === 'number') {\n number = true;\n page = source;\n active = currentPage === page;\n disabled = false;\n } else if (source === 'truncate') {\n number = false;\n active = false;\n disabled = false;\n } else {\n number = false;\n const isPrev = source === 'prev';\n const amount = isPrev ? -1 : 1;\n page = currentPage + amount;\n active = false;\n disabled = page < 1 || page > length;\n }\n\n return {\n number,\n page,\n active,\n disabled,\n };\n }\n\n function createRoutableLocationByPage(page: number, routeQuery: string) {\n return vui.location.getQueryMergedLocation({\n [routeQuery]: page,\n });\n }\n\n function genItem(source: ItemSource, index: number) {\n const { number, page, active, disabled } = createPageInfo(source);\n const type = number ? 'num' : source;\n const classes = [\n 'v-pagination__item',\n {\n [`v-pagination__item--${type}`]: true,\n 'v-pagination__item--active': active,\n 'v-pagination__item--disabled': disabled,\n },\n ];\n const children = number\n ? page\n : (() => {\n if (type === 'truncate') {\n return <span>...</span>;\n }\n\n const isPrev = type === 'prev';\n const icon = isPrev ? vui.icon('prev') : vui.icon('next');\n return resolveRawIconProp(false, icon, {\n class: 'v-pagination__item__icon',\n });\n })();\n\n const onClick = (ev: PointerEvent) => {\n ev.preventDefault();\n if (page === undefined || active || disabled) return;\n setPage(page);\n };\n\n const key = `${source}-${index}`;\n\n const { routeQuery } = props;\n\n if (page !== undefined && routeQuery) {\n const to = createRoutableLocationByPage(page, routeQuery);\n return (\n <RouterLink\n class={classes}\n to={to}\n key={key}\n // event=\"\"\n // nativeOn={\n // page === undefined\n // ? undefined\n // : {\n // click: onClick,\n // }\n // }\n >\n {children}\n </RouterLink>\n );\n }\n return (\n <button\n class={classes}\n type=\"button\"\n value={page}\n onClick={onClick}\n key={key}>\n {children}\n </button>\n );\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n internalValue.value = resolveNumberish(modelValue);\n },\n { immediate: true },\n );\n\n return () => {\n if (!isActive.value) return undefined;\n const $items = [\n 'prev' as const,\n ...computedItems.value,\n 'next' as const,\n ].map((i, index) => genItem(i, index));\n\n return withDirectives(\n <nav class={['v-pagination', classes.value]} ref={elRef}>\n {$items}\n </nav>,\n [\n resizeDirectiveArgument(({ width }) => {\n const el = elRef.value;\n if (el) {\n const style = window.getComputedStyle(el, 'before');\n\n const width = style.getPropertyValue('width');\n const margin = style.getPropertyValue('margin');\n const size = parseFloat(width) + parseFloat(margin) * 0.5;\n itemSize.value = size;\n }\n containerWidth.value = width;\n }),\n ],\n );\n };\n },\n});\n","import './VListTile.scss';\nimport {\n defineComponent,\n computed,\n PropType,\n VNodeChild,\n ComputedRef,\n watch,\n} from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport { actionableInheritProps, VAction } from '@fastkit/vue-action';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\nimport { rawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport function createListTileProps() {\n const icon = rawIconProp();\n return {\n ...actionableInheritProps,\n ...createPropsOptions({\n startIcon: icon,\n endIcon: icon,\n linkFallbackTag: {\n type: String,\n default: 'div',\n },\n startIconEmptySpace: Boolean,\n color: String as PropType<ScopeName>,\n exactMatch: Boolean,\n }),\n };\n}\n\nexport const listTileEmits = {\n changeActive: (isActive: boolean) => true,\n};\n\nexport const VListTile = defineComponent({\n name: 'VListTile',\n inheritAttrs: false,\n props: createListTileProps(),\n emits: {\n ...listTileEmits,\n },\n setup(props, ctx) {\n const vui = useVui();\n const startIcon: ComputedRef<VNodeChild> = computed(() => {\n let icon = resolveRawIconProp(false, props.startIcon);\n if (!icon && props.startIconEmptySpace) {\n icon = resolveRawIconProp(false, '$empty');\n }\n return icon;\n });\n const endIcon: ComputedRef<VNodeChild> = computed(() =>\n resolveRawIconProp(false, props.endIcon),\n );\n\n const hasTo = computed(() => !!ctx.attrs.to);\n\n const link = vui.useLink({ to: (ctx.attrs.to as any) || '' });\n\n const isActive = computed(() => {\n if (!hasTo.value) return false;\n return props.exactMatch ? link.isExactActive.value : link.isActive.value;\n });\n\n const color = useScopeColorClass(props);\n const classes: ComputedRef<any[]> = computed(() => {\n const _color = color.value;\n const hasColor = !!_color.value;\n\n return [\n color.value.className,\n {\n 'v-list-tile--plain': !hasColor,\n 'v-list-tile--has-color': hasColor,\n 'v-list-tile--active': isActive.value,\n },\n ];\n });\n\n watch(\n () => isActive.value,\n (isActive) => {\n ctx.emit('changeActive', isActive);\n },\n {\n immediate: true,\n },\n );\n\n return () => {\n const _startIcon = startIcon.value;\n const _endIcon = endIcon.value;\n\n return (\n <VAction\n {...ctx.attrs}\n class={['v-list-tile', classes.value]}\n actionableClass=\"v-list-tile--clickable\">\n {_startIcon && (\n <span class=\"v-list-tile__icon v-list-tile__icon--start\">\n {_startIcon}\n </span>\n )}\n <span class=\"v-list-tile__body\">{ctx.slots.default?.()}</span>\n {_endIcon && (\n <span class=\"v-list-tile__icon v-list-tile__icon--end\">\n {_endIcon}\n </span>\n )}\n </VAction>\n );\n };\n },\n});\n","import './VDrawerLayout.scss';\nimport { defineComponent, computed } from 'vue';\nimport { createPaperBaseProps, paperBaseSlots, VPaper } from '../VPaper';\n\nexport const VDrawerLayout = defineComponent({\n name: 'VDrawerLayout',\n props: {\n ...createPaperBaseProps(),\n },\n slots: paperBaseSlots,\n setup(props, ctx) {\n return () => {\n const paperProps = computed(() => ({\n color: props.color,\n tag: props.tag,\n }));\n\n return (\n <VPaper\n class=\"v-drawer-layout\"\n innerClass=\"v-drawer-layout__inner\"\n {...paperProps.value}\n square\n headerProps={{\n class: 'v-drawer-layout__header',\n }}\n bodyProps={{\n class: 'v-drawer-layout__body',\n }}\n footerProps={{\n class: 'v-drawer-layout__footer',\n }}\n v-slots={ctx.slots}></VPaper>\n );\n };\n },\n});\n","import './VHero.scss';\nimport { defineComponent, PropType } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { toScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { VAppContainer } from '@fastkit/vue-app-layout';\n\nconst slots = defineSlots<{\n default?: () => void;\n adornment?: () => void;\n}>();\n\nexport const VHero = defineComponent({\n name: 'VHero',\n props: {\n color: {\n type: String as PropType<ScopeName>,\n default: 'primary',\n },\n tag: {\n type: String,\n default: 'header',\n },\n hTag: {\n type: String,\n default: 'h1',\n },\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n return () => {\n const TagName = props.tag as 'header';\n const HTagName = props.hTag as 'h1';\n const adornment = ctx.slots.adornment?.();\n\n return (\n <VAppContainer pulled>\n <TagName class={['v-hero', toScopeColorClass(props.color)]}>\n <HTagName class=\"v-hero__title\">{ctx.slots.default?.()}</HTagName>\n {adornment && <div class=\"v-hero__adornment\">{adornment}</div>}\n </TagName>\n </VAppContainer>\n );\n };\n },\n});\n","import './VNavigationItem.scss';\nimport {\n defineComponent,\n computed,\n VNodeChild,\n PropType,\n VNodeProps,\n Fragment,\n ref,\n watch,\n} from 'vue';\nimport { ExtractPropInput } from '@fastkit/vue-utils';\nimport { VExpandTransition } from '@fastkit/vue-transitions';\nimport { ScopeName } from '@fastkit/color-scheme';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useRoute, RouteLocationRaw } from 'vue-router';\nimport { useVui } from '../../injections';\nimport { createListTileProps, listTileEmits, VListTile } from '../VListTile';\n\nexport function createNavigationItemProps() {\n return {\n ...createListTileProps(),\n match: [String, Array] as PropType<string | string[]>,\n depth: {\n type: Number,\n default: 0,\n },\n nested: Boolean,\n color: String as PropType<ScopeName>,\n };\n}\n\nexport interface NavigationItemInput extends ExtractPropInput<\n ReturnType<typeof createNavigationItemProps>\n> {\n key: string | number;\n label: VNodeChild | (() => VNodeChild);\n children?: NavigationItemInput[];\n}\n\nexport function resolveNavigationItemInput(input: NavigationItemInput) {\n let { label } = input;\n const props: NavigationItemInput = {\n ...input,\n };\n if (typeof label === 'function') {\n label = label();\n }\n delete (props as NavigationItemInput).label;\n\n return {\n label,\n props,\n };\n}\n\nexport function renderNavigationItemInput(\n input: NavigationItemInput,\n extraProps?: Record<string, unknown> & VNodeProps,\n) {\n const { label, props } = resolveNavigationItemInput(input);\n return (\n <VNavigationItem {...{ ...props, ...(extraProps as any) }}>\n {label}\n </VNavigationItem>\n );\n}\n\nconst TRIM_END_SLASH_RE = /\\/$/;\n\nfunction trimEndSlash<T extends string | undefined>(source: T) {\n return source ? source.replace(TRIM_END_SLASH_RE, '') : source;\n}\n\nexport const VNavigationItem = defineComponent({\n name: 'VNavigationItem',\n inheritAttrs: false,\n props: {\n ...createNavigationItemProps(),\n children: Array as PropType<NavigationItemInput[]>,\n },\n emits: {\n ...listTileEmits,\n },\n setup(props, ctx) {\n const vui = useVui();\n const opened = ref(false);\n\n const children = computed(() => {\n const c = props.children;\n return c && c.length ? c : undefined;\n });\n\n const to = computed(() => ctx.attrs.to);\n\n const match = computed<string[] | undefined>(() => {\n const { match } = props;\n\n const { to } = ctx.attrs;\n if (match) {\n return (Array.isArray(match) ? match : [match]).map(trimEndSlash);\n }\n if (!to) return;\n const toPath = typeof to === 'string' ? to : (to as any).path;\n if (!toPath) return;\n return [trimEndSlash(toPath)];\n });\n\n const classes = computed(() => [\n {\n 'v-navigation-item--opened': opened.value,\n [`v-navigation-item--depth-${props.depth}`]: props.depth > 0,\n },\n ]);\n\n const route = useRoute();\n\n watch(\n () => route.path,\n (newPath) => {\n const c = children.value;\n const m = match.value;\n\n if (!c || !m || !m.length) {\n return;\n }\n\n const trimmedNewPath = trimEndSlash(newPath);\n if (m.some((_) => trimmedNewPath.match(_))) {\n open();\n } else {\n close();\n }\n },\n { immediate: true },\n );\n\n const _props = computed(() => {\n const c = children.value;\n let { endIcon } = props;\n if (c && !endIcon) {\n endIcon = vui.icon('navigationExpand');\n if (typeof endIcon === 'string') {\n const name = endIcon;\n endIcon = (gen) =>\n gen({\n name,\n rotate: opened.value ? 180 : 0,\n });\n }\n }\n\n const __props: any = {\n ...props,\n endIcon,\n };\n\n delete __props.children;\n\n return {\n ...__props,\n };\n });\n\n function open() {\n if (!children.value) return;\n opened.value = true;\n }\n\n function close() {\n opened.value = false;\n }\n\n function toggle() {\n return opened.value ? close() : open();\n }\n\n const onClick = (ev: PointerEvent) => {\n if (!to.value) {\n return toggle();\n }\n };\n\n const onChangeActive = (isActive: boolean) => {\n ctx.emit('changeActive', isActive);\n };\n\n ctx.expose({\n close,\n });\n\n return () => {\n const _children = children.value;\n const fallbackTag = _children ? 'button' : undefined;\n\n return (\n <Fragment>\n <VListTile\n {...ctx.attrs}\n {..._props.value}\n fallbackTag={fallbackTag}\n endIcon={_props.value.endIcon}\n class={['v-navigation-item', classes.value]}\n onClick={onClick}\n onChangeActive={onChangeActive}>\n {ctx.slots.default?.()}\n </VListTile>\n {_children && (\n <VExpandTransition>\n <div class=\"v-navigation-item__expand\" v-show={opened.value}>\n {_children.map((child) =>\n renderNavigationItemInput(\n {\n color: props.color,\n ...child,\n },\n {\n startIconEmptySpace: _props.value.startIconEmptySpace,\n depth: props.nested ? props.depth + 1 : props.depth,\n },\n ),\n )}\n </div>\n </VExpandTransition>\n )}\n </Fragment>\n );\n };\n },\n});\n","import './VNavigation.scss';\nimport {\n defineComponent,\n computed,\n PropType,\n VNodeChild,\n onBeforeUpdate,\n ref,\n} from 'vue';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { createPropsOptions, ExtractPropInput } from '@fastkit/vue-utils';\nimport {\n NavigationItemInput,\n renderNavigationItemInput,\n} from './VNavigationItem';\n\nexport function createNavigationProps() {\n return createPropsOptions({\n items: {\n type: Array as PropType<NavigationItemInput[]>,\n required: true,\n },\n color: String as PropType<ScopeName>,\n startIconEmptySpace: {\n type: Boolean,\n default: true,\n },\n caption: [String, Function] as PropType<VNodeChild | (() => VNodeChild)>,\n });\n}\n\nexport type NavigationInput = ExtractPropInput<\n ReturnType<typeof createNavigationProps>\n>;\n\nexport const VNavigation = defineComponent({\n name: 'VNavigation',\n props: createNavigationProps(),\n setup(props, ctx) {\n const items = computed(() => props.items);\n const color = useScopeColorClass(props);\n const classes = computed(() => [color.value.className]);\n const startIconEmptySpace = computed(() => props.startIconEmptySpace);\n const caption = computed(() => {\n const c = props.caption;\n return typeof c === 'function' ? c() : c;\n });\n const itemsRef = ref<{ key: string | number; ref: any }[]>([]);\n\n onBeforeUpdate(() => {\n itemsRef.value = [];\n });\n\n function setItemRef(item: NavigationItemInput, itemRef: any) {\n itemsRef.value.push({ key: item.key, ref: itemRef });\n }\n\n function onItemActivated(item: NavigationItemInput) {\n itemsRef.value.forEach(({ key, ref }) => {\n if (key === item.key) return;\n ref.close();\n });\n }\n\n return () => {\n const $caption = caption.value;\n return (\n <nav class={['v-navigation', classes.value]}>\n {!!$caption && <div class=\"v-navigation__caption\">{$caption}</div>}\n {items.value.map((item) =>\n renderNavigationItemInput(item, {\n class: 'v-navigation__item',\n startIconEmptySpace: startIconEmptySpace.value,\n\n ref: (ref: any) => {\n setItemRef(item, ref);\n },\n onChangeActive: (isActive: boolean) => {\n if (isActive /* && item.children && item.children.length */) {\n onItemActivated(item);\n }\n },\n }),\n )}\n </nav>\n );\n };\n },\n});\n","import './VControlField.scss';\nimport { computed, PropType, ref, defineComponent, VNodeChild } from 'vue';\nimport { useParentFormNode } from '@fastkit/vue-form-control';\nimport {\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n TypedSlot,\n createPropsOptions,\n defineSlots,\n DefineSlotsType,\n} from '@fastkit/vue-utils';\nimport { DISABLED_REASON_CONTAINER_BIND } from '@fastkit/vue-disabled-reason';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { useVuiColorProvider } from '../../injections';\nimport { VProgressCircular } from '../loading';\nimport { CONTROL_LOADING_SPINNER_SIZES } from '../../schemes';\n\nconst ADORNMENT_POSITIONS = ['start', 'end'] as const;\n\nexport type AdornmentPosition = (typeof ADORNMENT_POSITIONS)[number];\n\nexport function createControlFieldProps() {\n return {\n ...createPropsOptions({\n startAdornment: {} as PropType<VNodeChildOrSlot>,\n endAdornment: {} as PropType<VNodeChildOrSlot>,\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n }),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n };\n}\n\n// export const inputBoxSlots = {\n// default: () => true,\n// startAdornment: () => true,\n// endAdornment: () => true,\n// };\nexport type InputBoxSlots = DefineSlotsType<{\n default?: () => any;\n startAdornment?: () => any;\n endAdornment?: () => any;\n}>;\n\nconst slots = defineSlots<InputBoxSlots>();\n\ntype ResolvedSlots = Partial<Record<AdornmentPosition, TypedSlot<void>>>;\n\nexport const VControlField = defineComponent({\n name: 'VControlField',\n props: {\n ...createControlFieldProps(),\n focused: Boolean,\n autoHeight: Boolean,\n ...slots(),\n error: Boolean,\n },\n emits: {\n click: (ev: PointerEvent) => true,\n },\n slots,\n setup(props, ctx) {\n const parentNode = useParentFormNode();\n const control = useControl(props);\n const inputBox = useControlField(props);\n const hostElRef = ref<HTMLElement | null>(null);\n\n const disabled = computed(() => !!parentNode && parentNode.isDisabled);\n const invalid = computed(() => !!parentNode && parentNode.invalid);\n const autoHeight = computed(() => props.autoHeight);\n const readonly = computed(() => !!parentNode && parentNode.isReadonly);\n // const computedTabindex = computed(() =>\n // disabled.value ? -1 : props.tabindex,\n // );\n // const isOutlined = computed(() => inputBox.variant.value === 'outlined');\n const colorProvider = useVuiColorProvider();\n\n const classes = computed(() => {\n const _classes = [\n 'v-control-field',\n `v-control-field--${inputBox.variant.value}`,\n {\n 'v-control-field--disabled': disabled.value,\n 'v-control-field--invalid': invalid.value || props.error,\n 'v-control-field--readonly': readonly.value,\n 'v-control-field--focused': props.focused,\n 'v-control-field--auto-height': autoHeight.value,\n },\n control.classes.value,\n colorProvider.className(\n props.error\n ? 'error'\n : invalid.value && !readonly.value\n ? 'error'\n : 'primary',\n ),\n ];\n return _classes;\n });\n\n const resolvedSlots = computed(() => {\n const _slots: ResolvedSlots = {};\n ADORNMENT_POSITIONS.forEach((position) => {\n const key = `${position}Adornment` as const;\n _slots[position] = resolveVNodeChildOrSlots(props[key], ctx.slots[key]);\n });\n return _slots;\n });\n\n const renderAdornment = (position: AdornmentPosition) => {\n let child: VNodeChild | undefined;\n if (position === 'end' && props.loading) {\n child = (\n <VProgressCircular\n indeterminate\n size={CONTROL_LOADING_SPINNER_SIZES[props.size || 'md']}\n />\n );\n } else {\n child = resolvedSlots.value[position]?.();\n }\n if (!child) return;\n return (\n <div\n class={[\n 'v-control-field__adornment',\n `v-control-field__adornment--${position}`,\n ]}>\n {child}\n </div>\n );\n };\n\n const handleClick = (ev: PointerEvent) => ctx.emit('click', ev);\n\n return () => (\n <div\n class={classes.value}\n onClick={handleClick}\n // tabindex={this.computedTabindex}\n ref={hostElRef}\n {...DISABLED_REASON_CONTAINER_BIND}>\n {renderAdornment('start')}\n <div class=\"v-control-field__body\">{ctx.slots.default?.()}</div>\n {renderAdornment('end')}\n </div>\n );\n },\n});\n","import './VTextCounter.scss';\nimport { defineComponent } from 'vue';\n\nexport const VTextCounter = defineComponent({\n name: 'VTextCounter',\n props: {\n length: {\n type: Number,\n required: true,\n },\n maxlength: {\n type: Number,\n required: true,\n },\n },\n render() {\n return (\n <span class=\"v-text-counter\">{`${this.length} / ${this.maxlength}`}</span>\n );\n },\n});\n","import './VCheckable.scss';\nimport { computed, defineComponent } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { FormNodeErrorSlotsSource } from '@fastkit/vue-form-control';\nimport { DISABLED_REASON_CONTAINER_BIND } from '@fastkit/vue-disabled-reason';\nimport { useVuiColorProvider } from '../../injections';\n\nexport const CHECKABLE_SLOTS = defineSlots<\n {\n input?: () => any;\n faux?: () => any;\n icon?: () => any;\n label?: () => any;\n } & FormNodeErrorSlotsSource\n>();\n\nexport const VCheckable = defineComponent({\n name: 'VCheckable',\n props: {\n invalid: Boolean,\n disabled: Boolean,\n readonly: Boolean,\n checked: Boolean,\n ...CHECKABLE_SLOTS(),\n // autoWidth: Boolean,\n },\n slots: CHECKABLE_SLOTS,\n setup(props, ctx) {\n const colorProvider = useVuiColorProvider();\n const invalid = computed(() => props.invalid);\n const disabled = computed(() => props.disabled);\n const readonly = computed(() => props.readonly);\n const checked = computed(() => props.checked);\n // const autoWidth = computed(() => props.autoWidth);\n const classes = computed(() => [\n {\n 'v-checkable--invalid': invalid.value,\n 'v-checkable--disabled': disabled.value,\n 'v-checkable--readonly': readonly.value,\n 'v-checkable--checked': checked.value,\n 'v-checkable--custom-icon': !!ctx.slots.icon,\n disabled: disabled.value,\n },\n colorProvider.className(invalid.value ? 'error' : 'primary'),\n ]);\n\n return () => (\n <label\n class={['v-checkable', classes.value]}\n {...DISABLED_REASON_CONTAINER_BIND}>\n <span class=\"v-checkable__faux\">\n {ctx.slots.input?.()}\n {ctx.slots.icon ? (\n ctx.slots.icon()\n ) : (\n <span class=\"v-checkable__faux__icon\">{ctx.slots.faux?.()}</span>\n )}\n </span>\n <span class=\"v-checkable__label\">{ctx.slots.label?.()}</span>\n </label>\n );\n },\n});\n","import './VCheckbox.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport {\n VUI_CHECKBOX_GROUP_SYMBOL,\n VUI_CHECKBOX_SYMBOL,\n} from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VCheckbox = defineComponent({\n name: 'VCheckbox',\n props: {\n ...props,\n ...createControlProps(),\n indeterminate: Boolean,\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_CHECKBOX_SYMBOL,\n parentNodeType: VUI_CHECKBOX_GROUP_SYMBOL,\n });\n\n const control = useControl(props);\n const isIndeterminate = computed(() => props.indeterminate);\n const classes = computed(() => [\n 'v-checkbox',\n {\n 'v-checkbox--selected': nodeControl.selected,\n 'v-checkbox--indeterminate': isIndeterminate.value,\n },\n control.classes.value,\n ]);\n const api = nodeControl.extend({\n get isIndeterminate() {\n return isIndeterminate.value;\n },\n });\n\n ctx.expose({\n control: api,\n });\n\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'checkbox' }),\n faux: () => <span class=\"v-checkbox__faux\"></span>,\n label: () => ctx.slots.default?.(),\n };\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected || isIndeterminate.value}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_CHECKBOX_GROUP_SYMBOL } from '../../injections';\nimport { VCheckbox } from '../VCheckbox';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VCheckboxGroup = defineFormSelectorComponent({\n name: 'VCheckboxGroup',\n defaultMultiple: true,\n nodeType: VUI_CHECKBOX_GROUP_SYMBOL,\n className: 'v-checkbox-group',\n itemRenderer: ({ attrs, slots }) => <VCheckbox {...attrs}>{slots}</VCheckbox>,\n});\n","import './VRadio.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL } from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VRadio = defineComponent({\n name: 'VRadio',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_RADIO_SYMBOL,\n parentNodeType: VUI_RADIO_GROUP_SYMBOL,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-radio',\n {\n 'v-radio--selected': nodeControl.selected,\n },\n control.classes.value,\n ]);\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'radio' }),\n faux: () => <span class=\"v-radio__faux\"></span>,\n label: () => ctx.slots.default?.(),\n };\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_RADIO_GROUP_SYMBOL } from '../../injections';\nimport { VRadio } from '../VRadio';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VRadioGroup = defineFormSelectorComponent({\n name: 'VRadioGroup',\n nodeType: VUI_RADIO_GROUP_SYMBOL,\n className: 'v-radio-group',\n itemRenderer: ({ attrs, slots }) => <VRadio {...attrs}>{slots}</VRadio>,\n});\n","import './VSwitch.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL } from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VSwitch = defineComponent({\n name: 'VSwitch',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_SWITCH_SYMBOL,\n parentNodeType: VUI_SWITCH_GROUP_SYMBOL,\n });\n const control = useControl(props);\n if (typeof window !== 'undefined') {\n (window as any).yy = {};\n (window as any).yy[String(Date.now())] = nodeControl;\n }\n\n const classes = computed(() => [\n 'v-switch',\n {\n 'v-switch--selected': nodeControl.selected,\n 'v-switch--disabled': nodeControl.isDisabled,\n },\n control.classes.value,\n ]);\n\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'checkbox' }),\n icon: () => (\n <span class=\"v-switch__faux\">\n <span class=\"v-switch__faux__pin\"></span>\n </span>\n ),\n label: () => ctx.slots.default?.(),\n };\n\n ctx.expose({\n control: nodeControl,\n });\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_SWITCH_GROUP_SYMBOL } from '../../injections';\nimport { VSwitch } from '../VSwitch';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VSwitchGroup = defineFormSelectorComponent({\n name: 'VSwitchGroup',\n defaultMultiple: true,\n nodeType: VUI_SWITCH_GROUP_SYMBOL,\n className: 'v-switch-group',\n itemRenderer: ({ attrs, slots }) => <VSwitch {...attrs}>{slots}</VSwitch>,\n});\n","import './VOption.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_SELECT_SYMBOL, VUI_OPTION_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VOption = defineComponent({\n name: 'VOption',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_OPTION_SYMBOL,\n parentNodeType: VUI_SELECT_SYMBOL,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-option',\n {\n 'v-option--selected': nodeControl.selected,\n 'v-option--has-not-value': !nodeControl.hasValue,\n 'v-option--disabled': nodeControl.isDisabled,\n },\n control.classes.value,\n ]);\n\n return () => (\n <label\n class={classes.value}\n onClick={nodeControl.handleClickElement}\n tabindex={nodeControl.tabindex}\n data-value={nodeControl.propValue}\n aria-disabled={nodeControl.isDisabled}>\n <span class=\"v-option__label\">{ctx.slots.default?.()}</span>\n </label>\n );\n },\n});\n","import './VOptionGroup.scss';\nimport { computed, PropType, defineComponent } from 'vue';\nimport {\n createFormSelectorItemGroupProps,\n useFormSelectorItemGroupControl,\n FormSelectorItemGroupControl,\n} from '@fastkit/vue-form-control';\nimport {\n defineSlots,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n} from '@fastkit/vue-utils';\nimport { VUI_SELECT_SYMBOL } from '../../injections';\n\nconst slots = defineSlots<{\n label?: (control: FormSelectorItemGroupControl) => any;\n default?: () => any;\n}>();\n\nexport const VOptionGroup = defineComponent({\n name: 'VOptionGroup',\n props: {\n ...createFormSelectorItemGroupProps(),\n // eslint-disable-next-line vue/require-prop-types\n label: {} as PropType<VNodeChildOrSlot<FormSelectorItemGroupControl>>,\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n const groupControl = useFormSelectorItemGroupControl(props, ctx, {\n parentNodeType: VUI_SELECT_SYMBOL,\n });\n const labelSlot = computed(() =>\n resolveVNodeChildOrSlots(props.label, ctx.slots.label),\n );\n const classes = computed(() => [\n 'v-option-group',\n {\n 'v-option-group--disabled': groupControl.isDisabled,\n },\n ]);\n\n ctx.expose({\n control: groupControl,\n });\n\n return () => {\n const label = labelSlot.value?.(groupControl);\n return (\n <div class={classes}>\n {!!label && <div class=\"v-option-group__label\">{label}</div>}\n {ctx.slots.default?.()}\n </div>\n );\n };\n },\n});\n","import './VSelect.scss';\nimport {\n ref,\n Ref,\n VNodeChild,\n defineComponent,\n PropType,\n computed,\n nextTick,\n} from 'vue';\nimport {\n createFormSelectorSettings,\n useFormSelectorControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n FormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport {\n defineSlots,\n createPropsOptions,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n withCtxForSlots,\n withCtx,\n} from '@fastkit/vue-utils';\nimport { useKeyboard } from '@fastkit/vue-keyboard';\nimport { VStackActivatorPayload, MenuAPI } from '@fastkit/vue-stack';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VUI_SELECT_SYMBOL, useVui } from '../../injections';\nimport { VIcon } from '../VIcon';\nimport { VMenu } from '../VMenu';\nimport { VOptionGroup } from '../VOptionGroup';\nimport { VOption } from '../VOption';\nimport { VButton } from '../VButton';\n\nexport const ARROW_KEY_TYPES = useKeyboard.Key(['ArrowUp', 'ArrowDown']);\n\nexport const CHOICE_KEY_TYPES = useKeyboard.Key(['Enter', ' ']);\n\nexport const KEYBOARD_EVENT_TYPES = useKeyboard.Key([\n ...ARROW_KEY_TYPES,\n ...CHOICE_KEY_TYPES,\n]);\n\nconst { props, emits } = createFormSelectorSettings({\n defaultValidateTiming: 'blur',\n});\n\nconst slots = defineSlots<\n FormNodeWrapperSlots &\n InputBoxSlots & {\n selection?: (ctx: {\n item: FormSelectorItemControl;\n index: number;\n }) => any;\n }\n>();\n\nexport const VSelect = defineComponent({\n name: 'VSelect',\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n ...createPropsOptions({\n placeholder: String,\n loadingMessage: {} as PropType<VNodeChildOrSlot>,\n failedToLoadItemsMessage: {} as PropType<VNodeChildOrSlot>,\n }),\n closeOnNavigation: Boolean,\n },\n emits,\n slots,\n setup(props, ctx) {\n const menuRef: Ref<{ menu: MenuAPI } | null> = ref(null);\n const menuOpened = ref(false);\n const showMenu = () => {\n menuOpened.value = true;\n };\n const closeMenu = () => {\n menuOpened.value = false;\n };\n const inputControl = useFormSelectorControl(props, ctx, {\n nodeType: VUI_SELECT_SYMBOL,\n onSelectItem: (item) => {\n closeMenu();\n },\n });\n const control = useControl(props);\n useControlField(props);\n const vui = useVui();\n const iconName = vui.icon('menuDown');\n const fieldRef = ref<HTMLElement | null>(null);\n const loadingMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.loadingMessage,\n vui.setting('loadingMessage'),\n 'Loading...',\n );\n return slot && slot(vui);\n });\n const failedToLoadItemsMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.failedToLoadItemsMessage,\n vui.setting('failedToLoadDataMessage'),\n 'Failed to load data.',\n );\n return slot && slot(vui);\n });\n\n const focus = (opts?: FocusOptions): void => {\n fieldRef.value?.focus?.(opts);\n };\n\n const renderSelections = (selectedItems: FormSelectorItemControl[]) => {\n const selectionSlot = ctx.slots.selection;\n const children: VNodeChild[] = [];\n if (inputControl.itemsLoadFailed) {\n children.push(\n <span class=\"v-select__placeholder\">\n {failedToLoadItemsMessageRef.value}\n </span>,\n );\n } else if (inputControl.itemsLoading) {\n children.push(\n <span class=\"v-select__placeholder\">{loadingMessageRef.value}</span>,\n );\n } else if (selectedItems.length) {\n selectedItems.forEach((item, index) => {\n if (index > 0) {\n children.push(vui.selectionSeparator());\n }\n const child = selectionSlot\n ? selectionSlot({ item, index })\n : item.renderDefaultSlot();\n children.push(child);\n });\n } else if (props.placeholder != null) {\n children.push(\n <span class=\"v-select__placeholder\">{props.placeholder}</span>,\n );\n }\n\n return children;\n };\n\n const clearKeyFocused = () => {\n const menu = menuRef.value?.menu;\n if (!menu) return;\n const bodyEl = menu.bodyRef.value;\n if (!bodyEl) return;\n\n const els = Array.from(\n bodyEl.querySelectorAll('.v-option'),\n ) as HTMLElement[];\n\n els.forEach((el) => el.classList.remove('v-option--key-focused'));\n };\n\n const getItemElements = (): HTMLElement[] | void => {\n const menu = menuRef.value?.menu;\n if (!menu) return;\n\n const bodyEl = menu.bodyRef.value;\n\n if (!bodyEl) return;\n\n const els = (\n Array.from(bodyEl.querySelectorAll('.v-option')) as HTMLElement[]\n ).filter((el) => {\n if (el.tabIndex === -1) return false;\n const disabled = el.getAttribute('disabled');\n const ariaDisabled = el.getAttribute('aria-disabled');\n if (ariaDisabled === 'true') return false;\n return disabled == null || disabled === '';\n });\n\n if (!els.length) return;\n\n return els;\n };\n\n const arrowKeyHandler = (ev: KeyboardEvent) => {\n const { key } = ev;\n if (!menuOpened.value || !ARROW_KEY_TYPES.includes(key as any)) return;\n\n const els = getItemElements();\n\n if (!els) return;\n\n const currentEl = els.find((el) =>\n el.classList.contains('v-option--key-focused'),\n );\n const currentIndex = currentEl && els.indexOf(currentEl);\n let nextIndex: number;\n const { length } = els;\n const isUp = key === 'ArrowUp';\n if (currentIndex == null) {\n nextIndex = isUp ? length - 1 : 0;\n } else {\n const shiftAmount = key === 'ArrowUp' ? -1 : 1;\n nextIndex = currentIndex + shiftAmount;\n if (nextIndex < 0) {\n nextIndex = length - 1;\n } else if (nextIndex >= length) {\n nextIndex = 0;\n }\n }\n\n const nextEl = els[nextIndex];\n\n if (nextEl) {\n clearKeyFocused();\n nextEl.classList.add('v-option--key-focused');\n nextEl.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n ev.preventDefault();\n }\n };\n\n const choiceKeyHandler = (ev: KeyboardEvent) => {\n const { key } = ev;\n if (!menuOpened.value || !CHOICE_KEY_TYPES.includes(key as any)) return;\n\n const els = getItemElements();\n\n if (!els) return;\n\n const currentEl = els.find((el) =>\n el.classList.contains('v-option--key-focused'),\n );\n\n if (currentEl) {\n const ev = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n currentEl.dispatchEvent(ev);\n ev.preventDefault();\n nextTick(() => {\n currentEl.classList.add('v-option--key-focused');\n });\n }\n };\n\n const keyboardEventHandler = (ev: KeyboardEvent) => {\n if (ARROW_KEY_TYPES.includes(ev.key as any)) return arrowKeyHandler(ev);\n if (CHOICE_KEY_TYPES.includes(ev.key as any)) return choiceKeyHandler(ev);\n };\n\n useKeyboard(\n [\n {\n key: KEYBOARD_EVENT_TYPES,\n handler: keyboardEventHandler,\n },\n ],\n { autorun: true },\n );\n\n ctx.expose({\n control: inputControl,\n focus,\n showMenu,\n closeMenu,\n });\n\n const handleClickLabel = (ev: PointerEvent) => {\n focus();\n };\n\n return () => {\n const children = ctx.slots.default?.() || [];\n const propGroups = inputControl.propGroups.map((group) => (\n <VOptionGroup\n key={group.id}\n groupId={group.id}\n label={group.label(inputControl)}\n disabled={group.disabled}>\n {group.items.map((item) => (\n <VOption\n disabled={item.disabled}\n value={item.value}\n key={item.value}>\n {item.label(inputControl)}\n </VOption>\n ))}\n </VOptionGroup>\n ));\n\n const classes = computed(() => [\n 'v-select',\n control.classes.value,\n {\n 'v-select--multiple': inputControl.multiple,\n },\n ]);\n\n const controlDefaultSlot = () => [\n <select\n class=\"v-select__input__element\"\n name={inputControl.name}\n tabindex={inputControl.tabindex}\n disabled={inputControl.isDisabled}\n multiple={inputControl.multiple}\n onFocus={inputControl.focusHandler}\n onBlur={inputControl.blurHandler}\n v-model={inputControl.value}>\n {inputControl.items.map((item) => (\n <option value={item.propValue} key={item.propValue}>\n {item.renderDefaultSlot()}\n </option>\n ))}\n </select>,\n <div class=\"v-select__selections\">\n <div class=\"v-select__selections__inner\">\n {renderSelections(inputControl.selectedItems)}\n </div>\n </div>,\n ];\n\n const endAdornmentSlot = () => {\n if (inputControl.itemsLoadFailed) {\n return (\n <VButton\n key=\"reload\"\n icon={vui.icon('reload')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.loadItems();\n }}\n />\n );\n }\n\n if (props.clearable && inputControl.value != null) {\n return (\n <VButton\n key=\"clear\"\n icon={vui.icon('clear')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.clear();\n }}\n />\n );\n }\n\n return (\n <VIcon\n key=\"icon\"\n name={iconName}\n rotate={menuOpened.value ? 180 : 0}\n />\n );\n };\n\n const menuActivatorSlot = ({ control: menu }: VStackActivatorPayload) => (\n <VControlField\n class=\"v-select__input\"\n ref={fieldRef}\n loading={inputControl.itemsLoading}\n error={inputControl.itemsLoadFailed}\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n focused={menuOpened.value}\n autoHeight={inputControl.multiple}\n onClick={(ev) => {\n if (inputControl.canOperation && !menu.isActive) {\n let t = ev.target as HTMLElement;\n const count = 0;\n let hit = false;\n while (count < 5) {\n if (t.classList.contains('v-select__input')) {\n hit = true;\n break;\n }\n t = t.parentElement as HTMLElement;\n }\n menu.setActivator(hit ? t : ev).show();\n }\n }}\n v-slots={{\n ...ctx.slots,\n default: withCtx(controlDefaultSlot),\n endAdornment: withCtx(endAdornmentSlot),\n }}\n />\n );\n\n const menuSlots = {\n activator: menuActivatorSlot,\n default: () => (\n <div class={['v-select__body', control.classes.value]}>\n {children}\n {propGroups}\n </div>\n ),\n };\n\n const defaultSlot = () => (\n <VMenu\n width=\"fit\"\n maxWidth=\"fit\"\n closeOnNavigation={props.closeOnNavigation}\n distance={0}\n alwaysRender\n v-model={menuOpened.value}\n ref={menuRef}\n onClose={clearKeyFocused}\n v-slots={withCtxForSlots(menuSlots)}\n />\n );\n\n return (\n <VFormControl\n nodeControl={inputControl}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n hiddenInfo={props.hiddenInfo}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n }}\n />\n );\n };\n },\n});\n","import './VTextField.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createTextInputNodeSettings,\n useTextInputNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n TextInputNodeEmits,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, ExtractPropInput, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VTextCounter } from '../VTextCounter';\nimport { VUI_TEXT_FIELD_SYMBOL } from '../../injections';\n\nconst { props, emits } = createTextInputNodeSettings();\n\nconst slots = defineSlots<FormNodeWrapperSlots & InputBoxSlots>();\n\nfunction createTextFieldProps() {\n return {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n };\n}\n\nexport type TextFieldPropsOptions = ReturnType<typeof createTextFieldProps>;\n\nexport type TextFieldEmits = TextInputNodeEmits;\n\nexport type TextFieldInput = ExtractPropInput<\n ReturnType<typeof createTextFieldProps>\n>;\n\nexport const VTextField = defineComponent({\n name: 'VTextField',\n props: createTextFieldProps(),\n emits,\n slots,\n setup(props, ctx) {\n const inputControl = useTextInputNodeControl(props, ctx, {\n nodeType: VUI_TEXT_FIELD_SYMBOL,\n });\n const control = useControl(props);\n useControlField(props);\n\n const classes = computed(() => ['v-text-field', control.classes.value]);\n\n const handleClickLabel = (ev: PointerEvent) => {\n inputControl.focus();\n };\n\n const defaultSlot = () => (\n <VControlField\n class=\"v-text-field__input\"\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n v-slots={{\n ...ctx.slots,\n default: withCtx(() => [\n inputControl.createInputElement({\n class: 'v-text-field__input__element',\n }),\n inputControl.createDatalist(),\n ]),\n }}\n />\n );\n\n const infoAppendsSlot = () => {\n const { counterResult } = inputControl;\n if (!counterResult) return;\n return <VTextCounter {...counterResult} />;\n };\n\n ctx.expose({\n control: inputControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n // focused={inputControl.focused}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import { defineComponent, PropType, computed } from 'vue';\nimport {\n VTextField,\n TextFieldPropsOptions,\n TextFieldInput,\n TextFieldEmits,\n} from '../VTextField/VTextField';\n\nconst toString = (value?: string | number | null): string => {\n if (value == null) return '';\n return String(value);\n};\n\nconst toNumber = (value?: string | number | null): number | null => {\n if (value == null) return null;\n if (typeof value === 'number') return value;\n if (value.trim() === '') return null;\n return Number(value);\n};\n\nexport const VNumberField = defineComponent({\n name: 'VNumberField',\n props: {\n ...(undefined as unknown as Omit<TextFieldPropsOptions, 'type'>),\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n },\n emits: {\n ...(undefined as unknown as Omit<\n TextFieldEmits,\n 'update:modelValue' | 'change'\n >),\n 'update:modelValue': (value: number | null) => true,\n change: (value: number | null) => true,\n },\n setup(props, ctx) {\n const hasNumberMask = computed(() => {\n const { mask } = ctx.attrs as TextFieldInput;\n return (\n !!mask && typeof mask === 'object' && (mask as any).mask === Number\n );\n });\n\n const inputmode = computed<TextFieldInput['inputmode']>(() => {\n const { inputmode } = ctx.attrs as TextFieldInput;\n if (inputmode) return inputmode;\n return hasNumberMask.value ? 'decimal' : undefined;\n });\n\n const onUpdateModelValue = (value: string) => {\n ctx.emit('update:modelValue', toNumber(value));\n };\n\n const onChange = (value: string) => {\n ctx.emit('change', toNumber(value));\n };\n\n return () => (\n <VTextField\n {...ctx.attrs}\n type={hasNumberMask.value ? 'text' : 'number'}\n inputmode={inputmode.value}\n maskModel=\"typed\"\n modelValue={toString(props.modelValue)}\n onUpdate:modelValue={onUpdateModelValue}\n onChange={onChange}\n v-slots={ctx.slots as any}\n />\n );\n },\n});\n","import './VTextarea.scss';\nimport { defineComponent } from 'vue';\nimport {\n createTextareaNodeSettings,\n useTextareaNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VTextCounter } from '../VTextCounter';\nimport { VUI_TEXTAREA_SYMBOL, useVui } from '../../injections';\n\nconst { props, emits } = createTextareaNodeSettings();\n\nconst slots = defineSlots<FormNodeWrapperSlots & InputBoxSlots>();\n\nexport const VTextarea = defineComponent({\n name: 'VTextarea',\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n },\n emits,\n setup(props, ctx) {\n const vui = useVui();\n const inputControl = useTextareaNodeControl(props, ctx, {\n nodeType: VUI_TEXTAREA_SYMBOL,\n defaultRows: vui.textareaRows,\n });\n const control = useControl(props);\n useControlField(props);\n\n ctx.expose({\n control: inputControl,\n });\n\n const defaultSlot = () => (\n <VControlField\n class=\"v-textarea__input\"\n size={control.size.value}\n autoHeight\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n v-slots={{\n ...ctx.slots,\n default: withCtx(() =>\n inputControl.createInputElement({\n class: 'v-textarea__input__element',\n }),\n ),\n }}\n />\n );\n\n const infoAppendsSlot = () => {\n const { counterResult } = inputControl;\n if (!counterResult) return;\n return <VTextCounter {...counterResult} />;\n };\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n class={['v-textarea', control.classes.value]}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n hiddenInfo={props.hiddenInfo}\n requiredChip={props.requiredChip}\n onClickLabel={(ev) => {\n inputControl.focus();\n }}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import './VFileInput.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFileInputNodeSettings,\n useFileInputNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n FileInputNodeEmits,\n type FileInputNodeControl,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, ExtractPropInput, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { colorSchemeProps } from '@fastkit/vue-color-scheme';\nimport { VUI_FILE_INPUT_SYMBOL, useVui } from '../../injections';\nimport { VButton } from '../VButton';\n\nconst { props, emits } = createFileInputNodeSettings();\n\nconst slots = defineSlots<\n FormNodeWrapperSlots &\n InputBoxSlots & {\n selections?: (control: FileInputNodeControl) => any;\n }\n>();\n\nfunction createFileInputProps() {\n return {\n ...props,\n ...colorSchemeProps(),\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n buttonText: {\n type: String,\n default: 'Choose File',\n },\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n };\n}\n\nexport type FileInputPropsOptions = ReturnType<typeof createFileInputProps>;\n\nexport type FileInputEmits = FileInputNodeEmits;\n\nexport type FileInputInput = ExtractPropInput<\n ReturnType<typeof createFileInputProps>\n>;\n\nexport const VFileInput = defineComponent({\n name: 'VFileInput',\n props: createFileInputProps(),\n emits,\n slots,\n setup(props, ctx) {\n const vui = useVui();\n const inputControl = useFileInputNodeControl(props, ctx, {\n nodeType: VUI_FILE_INPUT_SYMBOL,\n });\n const control = useControl(props);\n useControlField(props);\n\n const classes = computed(() => ['v-file-input', control.classes.value]);\n\n const handleClickLabel = (ev: PointerEvent) => {\n inputControl.focus();\n };\n\n const endAdornmentSlot = () => {\n // }\n if (props.clearable && inputControl.value.length) {\n return (\n <VButton\n key=\"clear\"\n icon={vui.icon('clear')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.clear();\n }}\n />\n );\n }\n };\n\n const showDialog = () => {\n if (inputControl.canOperation) {\n inputControl.inputElement?.click();\n }\n };\n\n const renderSelections = () => {\n if (ctx.slots.selections) {\n return ctx.slots.selections(inputControl);\n }\n\n const { files } = inputControl.selectionContext;\n if (!files.length)\n return (\n <span class=\"v-file-input__placeholder\">\n {inputControl.placeholder || 'No file chosen'}\n </span>\n );\n return files.map((file) => file.truncatedName).join(', ');\n };\n\n const defaultSlot = () => (\n <div class=\"v-file-input__inner\">\n <VButton\n key=\"open\"\n class=\"v-file-input__button\"\n color={'base' as any}\n size={props.size}\n startIcon={vui.icon('fileUpload')}\n variant={vui.setting('containedVariant')}\n onClick={showDialog}>\n {props.buttonText}\n </VButton>\n <VControlField\n class=\"v-file-input__input\"\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n onClick={showDialog}\n autoHeight\n v-slots={{\n ...ctx.slots,\n default: withCtx(() => [\n inputControl.createInputElement({\n class: 'v-file-input__input__element',\n }),\n <div class=\"v-file-input__selections\">{renderSelections()}</div>,\n ]),\n endAdornment: withCtx(endAdornmentSlot),\n }}\n />\n </div>\n );\n\n ctx.expose({\n control: inputControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n // focused={inputControl.focused}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n // infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import { defineComponent } from 'vue';\nimport {\n FormGroupControl,\n createFormGroupSettings,\n useFormGroup,\n FormNodeErrorSlotsSource,\n} from '@fastkit/vue-form-control';\nimport { DefineSlotsType, defineSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_FORM_GROUP_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormGroupSettings();\n\nexport type VFormGroupSlots = DefineSlotsType<{\n default?: (form: FormGroupControl) => any;\n}>;\n\nexport const formGroupSlots = defineSlots<\n VFormGroupSlots & FormNodeErrorSlotsSource\n>();\n\nexport function createVFormGroupProps() {\n return {\n ...props,\n ...createControlProps(),\n ...formGroupSlots(),\n };\n}\n\nexport const VFormGroup = defineComponent({\n name: 'VFormGroup',\n inheritAttrs: false,\n props: createVFormGroupProps(),\n emits,\n slots: formGroupSlots,\n setup(props, ctx) {\n const nodeControl = useFormGroup(props, ctx as any, {\n nodeType: VUI_FORM_GROUP_SYMBOL,\n });\n useControl(props);\n\n ctx.expose({\n control: nodeControl,\n });\n\n return () => ctx.slots.default?.(nodeControl);\n },\n});\n","import {\n defineComponent,\n computed,\n type RenderFunction,\n getCurrentInstance,\n} from 'vue';\nimport {\n VueForm,\n createFormSettings,\n useForm,\n} from '@fastkit/vue-form-control';\nimport { DefineSlotsType, defineSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_FORM_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormSettings({\n nodeType: VUI_FORM_SYMBOL,\n});\n\n/**\n * @TODO Externalize\n */\nfunction useRender(render: RenderFunction) {\n const vm = getCurrentInstance() as any;\n vm.render = render;\n}\n\nexport type VFormSlots = DefineSlotsType<{\n default?: (form: VueForm) => any;\n}>;\n\nexport const formSlots = defineSlots<VFormSlots>();\n\nexport function createVFormProps() {\n return {\n ...props,\n ...createControlProps(),\n ...formSlots(),\n };\n}\n\nexport const VForm = defineComponent({\n name: 'VForm',\n props: createVFormProps(),\n emits,\n slots: formSlots,\n setup(props, ctx) {\n const nodeControl = useForm(props, ctx as any, {\n nodeType: VUI_FORM_SYMBOL,\n });\n const classes = computed(() => [\n 'v-form',\n {\n 'v-form--valid': nodeControl.valid,\n 'v-form--invalid': nodeControl.invalid,\n 'v-form--disabled': nodeControl.isDisabled,\n 'v-form--validating': nodeControl.validating,\n 'v-form--pending': nodeControl.pending,\n 'v-form--sending': nodeControl.sending,\n },\n ]);\n useControl(props);\n\n useRender(() => (\n <form class={classes.value} {...nodeControl.formAttrs}>\n {ctx.slots.default?.(nodeControl)}\n </form>\n ));\n\n return {\n control: nodeControl,\n };\n },\n});\n","import './VTab.scss';\n\nimport {\n defineComponent,\n PropType,\n computed,\n ComponentPublicInstance,\n} from 'vue';\nimport { RouteLocationRaw, RouterLink } from 'vue-router';\nimport { RawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport interface VTabExpose {\n value: string;\n active: boolean;\n}\n\nexport interface VTabRef extends ComponentPublicInstance, VTabExpose {}\n\nexport const VTab = defineComponent({\n name: 'VTab',\n props: {\n value: {\n type: String,\n required: true,\n },\n active: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n icon: [String, Function] as PropType<RawIconProp>,\n },\n emits: {\n click: (ev: PointerEvent) => true,\n },\n setup(props, ctx) {\n const classesRef = computed(() => ({\n 'v-tab--active': props.active,\n }));\n\n const exposeValues: VTabExpose = {\n value: props.value,\n active: props.active,\n };\n\n ctx.expose(exposeValues);\n\n return () => {\n const { to, value, icon, active } = props;\n const classes = ['v-tab', classesRef.value];\n\n const children = (\n <span class=\"v-tab__content\">\n {icon &&\n resolveRawIconProp(active, icon, {\n class: 'v-tab__icon',\n })}\n {ctx.slots.default?.()}\n </span>\n );\n\n if (to) {\n const replace = typeof to === 'string' ? undefined : to.replace;\n return (\n <RouterLink class={classes} to={to} replace={replace}>\n {children}\n </RouterLink>\n );\n }\n return (\n <button\n class={classes}\n type=\"button\"\n value={value}\n onClick={(ev) => {\n ctx.emit('click', ev);\n }}>\n {children}\n </button>\n );\n };\n },\n});\n","import './VTabs.scss';\nimport {\n defineComponent,\n VNodeChild,\n ref,\n PropType,\n computed,\n watch,\n onBeforeUnmount,\n onBeforeUpdate,\n onMounted,\n} from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { RouteLocationRaw, RouteLocation } from 'vue-router';\nimport { VScroller, ScrollResult } from '@fastkit/vue-scroller';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { isPromise } from '@fastkit/helpers';\nimport { VTab, VTabRef } from './VTab';\nimport { useVui } from '../../injections';\nimport { VuiService } from '../../service';\nimport { RawIconProp } from '../VIcon';\n\nexport interface VTabsItemLabelSlotCtx {\n value: string;\n active: boolean;\n vui: VuiService;\n}\n\nexport type VTabsItemLabelSlot = (ctx: VTabsItemLabelSlotCtx) => VNodeChild;\n\nexport type VTabsRouterHandler = (value: string) => RouteLocationRaw;\n\nexport type VTabsGuard = (\n nextValue: string,\n oldValue: string,\n) => boolean | void | undefined | Promise<boolean | void | undefined>;\n\nexport interface VTabsItem {\n value: string;\n icon?: RawIconProp;\n label?: VNodeChild | VTabsItemLabelSlot;\n}\n\nconst slots = defineSlots<{\n item?: (ctx: VTabsItemLabelSlotCtx) => any;\n}>();\n\nexport const VTabs = defineComponent({\n name: 'VTabs',\n props: {\n modelValue: String,\n\n items: {\n type: Array as PropType<VTabsItem[]>,\n required: true,\n },\n\n /**\n * 自動スクロールする際の余剰オフセット幅(px)\n */\n autoScrollOffset: {\n type: Number,\n default: 20,\n },\n\n /**\n * ルーター同期する場合設定する\n */\n router: Function as PropType<VTabsRouterHandler>,\n\n /**\n * ルーティング連携を行う際に、クエリベースのURLマッチングを行う\n * タブのURLが /page1?tab=xxx のようになる時に設定する\n */\n withQuery: Boolean,\n color: String as PropType<ScopeName>,\n onBeforeChange: Function as PropType<VTabsGuard>,\n ...slots(),\n },\n emits: {\n 'update:modelValue': (newValue: string) => true,\n change: (newValue: string) => true,\n },\n slots,\n setup(props, ctx) {\n const vui = useVui();\n\n const internalValueRef = ref<string>(null as any);\n const ScrollerRef = VScroller.$ref();\n const elRef = ref<HTMLElement>(null as any);\n let scrollResult: ScrollResult | undefined;\n const tabRefs = ref<VTabRef[]>([]);\n\n const currentRef = computed({\n get: () => internalValueRef.value,\n set: (value) => {\n if (internalValueRef.value !== value) {\n internalValueRef.value = value;\n ctx.emit('update:modelValue', value);\n ctx.emit('change', value);\n }\n },\n });\n\n const colorScope = useScopeColorClass({\n color: () => props.color || vui.setting('tabDefault').color,\n });\n\n const classes = computed(() => [colorScope.value.className]);\n\n const computedItemsRef = computed(() => {\n const current = currentRef.value;\n const { router } = props;\n return props.items.map((item) => {\n const { value } = item;\n const active = current === value;\n let location:\n | {\n to: RouteLocationRaw;\n route: RouteLocation & {\n href: string;\n };\n }\n | undefined;\n\n if (router) {\n const to = router(value);\n const route = vui.router.resolve(to);\n location = { to, route };\n }\n\n return {\n ...item,\n active,\n location,\n };\n });\n });\n\n const setTabRef = (ref: VTabRef) => {\n tabRefs.value.push(ref);\n };\n\n function setupInternalValue(routable?: boolean) {\n let value = props.modelValue;\n if (value == null || value === '') {\n const firstItem = props.items[0];\n if (!firstItem) return;\n value = firstItem.value;\n }\n if (internalValueRef.value !== value) {\n internalValueRef.value = value;\n\n if (routable) {\n const { router } = props;\n if (!router) return;\n const hit = computedItemsRef.value.find(\n (item) => item.value === value,\n );\n if (!hit) return;\n const { location } = hit;\n if (!location) return;\n\n const { to, route } = location;\n if (route.fullPath === vui.location.currentRoute.fullPath) return;\n vui.router[to.replace ? 'replace' : 'push'](to);\n } else if (!props.router && props.modelValue !== value) {\n ctx.emit('update:modelValue', value);\n ctx.emit('change', value);\n }\n }\n }\n\n async function to(value: string) {\n const { value: currentValue } = currentRef;\n if (currentValue === value) {\n return;\n }\n const { onBeforeChange } = props;\n if (onBeforeChange) {\n let result = onBeforeChange(value, currentRef.value);\n if (isPromise(result)) {\n result = await result;\n }\n if (result === false) {\n return;\n }\n }\n currentRef.value = value;\n }\n\n function cancelScroll() {\n if (scrollResult) {\n scrollResult.cancel();\n scrollResult = undefined;\n }\n }\n\n const findTab = (tab: string) => tabRefs.value.find((t) => t.value === tab);\n\n function scrollToTab(tabValue: string) {\n const tab = findTab(tabValue);\n if (!tab) return;\n const $tab = tab.$el as HTMLElement;\n if (!$tab) return;\n\n const scroller = ScrollerRef.instance;\n if (!scroller) return;\n const container = scroller.scroller.element();\n if (!container) return;\n\n const { autoScrollOffset } = props;\n const tabLeft = $tab.offsetLeft;\n const tabWidth = $tab.offsetWidth;\n const tabRight = tabLeft + tabWidth;\n let hiddenLeft = 0;\n let hiddenRight = 0;\n\n const { scrollLeft, offsetWidth: scrollerWidth } = container;\n hiddenLeft = Math.max(scrollLeft - tabLeft, 0);\n hiddenRight = Math.max(tabRight - scrollerWidth - scrollLeft, 0);\n\n if (hiddenLeft > 0) hiddenLeft += autoScrollOffset;\n if (hiddenRight > 0) hiddenRight += autoScrollOffset;\n\n let scrollAmount = 0;\n if (hiddenRight > 0) {\n scrollAmount = hiddenRight;\n }\n if (hiddenLeft > 0) {\n scrollAmount = -hiddenLeft;\n }\n\n if (Math.abs(scrollAmount) > 0) {\n cancelScroll();\n scrollResult = scroller.scroller.by(scrollAmount, 0, {\n duration: 150,\n });\n }\n }\n\n watch(\n () => props.modelValue,\n () => setupInternalValue(true),\n );\n\n watch(\n () => props.items,\n () => setupInternalValue(),\n { deep: true },\n );\n\n watch(\n () => internalValueRef.value,\n (newValue) => {\n scrollToTab(newValue);\n },\n );\n\n vui.location.watchRoute(\n (route) => {\n if (!props.router) return;\n const path = props.withQuery ? route.fullPath : route.path;\n const hit = computedItemsRef.value.find(\n ({ location }) => location && location.route.fullPath === path,\n );\n if (hit) {\n currentRef.value = hit.value;\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n scrollToTab(currentRef.value);\n });\n\n onBeforeUnmount(() => {\n cancelScroll();\n });\n\n onBeforeUpdate(() => {\n tabRefs.value = [];\n });\n\n setupInternalValue();\n\n return () => {\n const items = computedItemsRef.value;\n const itemSlot = ctx.slots.item;\n const children = items.map(({ value, active, label, icon, location }) => {\n if (!label) {\n label = itemSlot;\n }\n\n const children =\n typeof label === 'function' ? label({ value, active, vui }) : label;\n\n const _to = (location && location.to) || undefined;\n\n return (\n <VTab\n value={value}\n to={_to}\n icon={icon}\n active={active}\n ref={setTabRef as any}\n onClick={(e) => {\n if (!e.defaultPrevented) {\n to(value);\n }\n }}>\n {children}\n </VTab>\n );\n });\n\n return (\n <div class={['v-tabs', classes.value]} ref={elRef}>\n <ScrollerRef\n class=\"v-tabs__scroller\"\n containerClass=\"v-tabs__scroller__container\"\n guide>\n <div class=\"v-tabs__content\">{children}</div>\n </ScrollerRef>\n </div>\n );\n };\n },\n});\n","import './VBreadcrumbs.scss';\n\nimport { defineComponent, PropType, VNodeChild, computed } from 'vue';\nimport { VAction, ActionableInheritProps } from '@fastkit/vue-action';\nimport { useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { RawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport interface BreadcrumbsItem extends Pick<\n ActionableInheritProps,\n 'to' | 'disabled'\n> {\n /**\n * \"正確なマッチモード\" を強制する場合true\n */\n // exact?: boolean;\n icon?: RawIconProp;\n text: VNodeChild | ((vui: VuiService) => VNodeChild);\n}\n\nexport type RawBreadcrumbsItem = string | BreadcrumbsItem;\n\nexport const VBreadcrumbs = defineComponent({\n name: 'VBreadcrumbs',\n props: {\n items: {\n type: Array as PropType<BreadcrumbsItem[]>,\n default: () => [],\n },\n divider: [String, Function] as PropType<\n VNodeChild | ((vui: VuiService) => VNodeChild)\n >,\n },\n setup(props, ctx) {\n const vui = useVui();\n\n const computedItemsRef = computed(() => {\n const items: BreadcrumbsItem[] = props.items.map((rawItem) =>\n typeof rawItem === 'string'\n ? {\n text: rawItem,\n }\n : rawItem,\n );\n\n return items.map((item) => {\n const { to, text } = item;\n const {\n disabled = vui.location.match(to) || !vui.location.isAvailable(to),\n } = item;\n return {\n ...item,\n disabled,\n text: typeof text === 'function' ? text(vui) : text,\n };\n });\n });\n\n const lengthRef = computed(() => computedItemsRef.value.length);\n\n const defaultDividerSlot = () => [\n <i class=\"v-breadcrumbs__divider__icon\" />,\n ];\n\n return () => {\n if (lengthRef.value < 1) return;\n\n let dividerSlot: (vui: VuiService) => VNodeChild;\n const propDivider = props.divider;\n if (propDivider) {\n dividerSlot =\n typeof propDivider === 'function' ? propDivider : () => propDivider;\n } else {\n dividerSlot = defaultDividerSlot;\n }\n\n const children: VNodeChild[] = [];\n\n computedItemsRef.value.forEach((item, index) => {\n const { text, icon, disabled, to } = item;\n\n if (index > 0) {\n const divider = dividerSlot(vui);\n if (divider) {\n children.push(\n <li class=\"v-breadcrumbs__divider\" key={`divider-${index}`}>\n {divider}\n </li>,\n );\n }\n }\n const myChildren: VNodeChild[] = [];\n\n if (icon) {\n const $icon = resolveRawIconProp(false, icon, {\n class: 'v-breadcrumbs__icon',\n });\n if ($icon) {\n myChildren.push($icon);\n }\n }\n\n if (text) myChildren.push(text);\n\n const itemChild = to ? (\n <VAction\n class=\"v-breadcrumbs__link\"\n to={to}\n exactActiveClass=\"v-breadcrumbs__link--active\"\n // exact={exact}\n >\n {myChildren}\n </VAction>\n ) : (\n myChildren\n );\n\n children.push(\n <li\n class={[\n 'v-breadcrumbs__item',\n {\n 'v-breadcrumbs__item--disabled': disabled,\n },\n ]}\n key={`link-${index}`}>\n {itemChild}\n </li>,\n );\n });\n\n return (\n <nav class=\"v-breadcrumbs\">\n <ul class=\"v-breadcrumbs__list\">{children}</ul>\n </nav>\n );\n };\n },\n});\n","import './VContentSwitcher.scss';\n\nimport {\n defineComponent,\n PropType,\n ref,\n computed,\n watch,\n Transition,\n} from 'vue';\nimport { getDocumentScroller } from '@fastkit/vue-scroller';\nimport { VTabsItem } from '../VTabs/VTabs';\n\nexport interface ContentSwitcherSeeTopOptions {\n /**\n * スクロールする際のオフセット高px\n */\n offset?: number;\n\n /**\n * スクロール期間\n */\n duration?: number;\n}\n\nexport const VContentSwitcher = defineComponent({\n name: 'VContentSwitcher',\n props: {\n modelValue: String,\n order: {\n type: Array as PropType<(string | VTabsItem)[]>,\n default: () => [],\n },\n autotop: [Boolean, Object] as PropType<\n boolean | ContentSwitcherSeeTopOptions\n >,\n },\n emits: {\n 'update:modelValue': (modelValue: string) => true,\n },\n setup(props, ctx) {\n const internalValueRef = ref('');\n const transitionRef = ref('');\n const elRef = ref<HTMLElement | null>(null);\n const anchorRef = ref<HTMLElement | null>(null);\n const computedOrderRef = computed(() =>\n props.order.map((row) => (typeof row === 'string' ? row : row.value)),\n );\n const currentRef = computed({\n get: () => internalValueRef.value,\n set: (current) => {\n if (internalValueRef.value !== current) {\n internalValueRef.value = current;\n ctx.emit('update:modelValue', current);\n }\n },\n });\n const autotopSettingsRef = computed<\n ContentSwitcherSeeTopOptions | undefined\n >(() => {\n let { autotop: settings } = props;\n if (settings === true) settings = {};\n if (!settings) return;\n return {\n ...settings,\n };\n });\n\n function seeTop(options?: ContentSwitcherSeeTopOptions) {\n const scroller = getDocumentScroller();\n const { value: anchor } = anchorRef;\n if (anchor) {\n scroller.toElement(anchor, options);\n }\n }\n\n function getEl() {\n const el = elRef.value;\n if (!el) {\n throw new Error('missing element');\n }\n return el;\n }\n\n watch(\n () => props.modelValue,\n (value, beforeValue) => {\n if (value == null) return;\n internalValueRef.value = value;\n\n if (beforeValue == null) return;\n\n const order = computedOrderRef.value;\n const index = order.indexOf(value);\n const beforeIndex = order.indexOf(beforeValue);\n\n let transition = 'fade';\n if (index !== -1 && beforeIndex !== -1) {\n if (index > beforeIndex) transition = 'v-content-switcher-next';\n if (index < beforeIndex) transition = 'v-content-switcher-prev';\n }\n transitionRef.value = transition;\n },\n { immediate: true },\n );\n\n watch(currentRef, () => {\n const autotopSettings = autotopSettingsRef.value;\n if (autotopSettings && props.modelValue != null) {\n seeTop(autotopSettings);\n }\n });\n\n return () => {\n const current = currentRef.value;\n const children = ctx.slots.default?.() || [];\n const currentSlot = ctx.slots[current];\n\n if (currentSlot) {\n children.push(\n <div class=\"v-content-switcher__content\" key={current}>\n {currentSlot(this)}\n </div>,\n );\n }\n\n return (\n <div class=\"v-content-switcher\" ref={elRef}>\n <div class=\"v-content-switcher__anchor\" ref={anchorRef} />\n <Transition\n name={transitionRef.value}\n onBeforeLeave={(el) => {\n getEl().style.height = `${(el as HTMLElement).offsetHeight}px`;\n }}\n onEnter={(el) => {\n getEl().style.height = `${(el as HTMLElement).offsetHeight}px`;\n }}\n onAfterEnter={() => {\n getEl().style.height = '';\n }}\n onEnterCancelled={() => {\n getEl().style.height = '';\n }}\n onLeaveCancelled={() => {\n getEl().style.height = '';\n }}>\n {children}\n </Transition>\n </div>\n );\n };\n },\n});\n","import './VDataTable.scss';\n\nimport {\n defineComponent,\n VNodeChild,\n PropType,\n ref,\n computed,\n onMounted,\n watch,\n CSSProperties,\n VNodeArrayChildren,\n withDirectives,\n Transition,\n isVNode,\n HTMLAttributes,\n} from 'vue';\nimport { VNodeChildOrSlot } from '@fastkit/vue-utils';\nimport { resizeDirectiveArgument } from '@fastkit/vue-resize';\nimport { VueAppLayout } from '@fastkit/vue-app-layout';\nimport { ScopeName, toScopeColorClass } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { VSelect } from '../VSelect';\nimport { VPagination } from '../VPagination';\nimport { VCheckbox } from '../VCheckbox';\nimport { VIcon, resolveRawIconProp } from '../VIcon';\nimport { VProgressCircular } from '../loading';\nimport { VPaper } from '../VPaper';\n\nexport type DataTableHeaderAlign = 'left' | 'center' | 'right';\n\nconst DATA_TABLE_DEFAULTS = {\n itemKey: 'id',\n pageQuery: 'page',\n sortQuery: 'sort',\n orderQuery: 'order',\n limitQuery: 'limit',\n defaultOrder: 'ASC',\n ascQueryValue: 'ASC',\n descQueryValue: 'DESC',\n limits: [5, 10, 20, 50, 100],\n limitDefault: 20,\n controlThreshold: 10,\n searchQuery: [] as string | string[],\n};\n\nexport type DataTableDefaults = typeof DATA_TABLE_DEFAULTS;\n\nexport function configureDataTableDefaults(\n defaults: Partial<DataTableDefaults>,\n) {\n Object.assign(DATA_TABLE_DEFAULTS, defaults);\n if (!defaults.defaultOrder && defaults.ascQueryValue) {\n DATA_TABLE_DEFAULTS.defaultOrder = defaults.ascQueryValue;\n }\n}\n\nexport interface DataTableItem {\n [key: string]: any;\n}\n\nexport interface DataTableItemSlotPayload<\n T extends DataTableItem = DataTableItem,\n> {\n key: string;\n item: T;\n /**\n * 選択されている場合true\n */\n selected: boolean;\n}\n\nexport interface DataTableCellSlotPayload<\n T extends DataTableItem = DataTableItem,\n> {\n vui: VuiService;\n item: T;\n /**\n * 選択されている場合true\n */\n selected: boolean;\n}\n\nexport interface DataTableHeader<T extends DataTableItem = DataTableItem> {\n key: number | string;\n label?: VNodeChild | ((vui: VuiService) => VNodeChild);\n sortQuery?: string;\n hidden?: boolean | (() => boolean);\n align?: DataTableHeaderAlign;\n cell?: (payload: DataTableCellSlotPayload<T>) => VNodeChild;\n}\n\nexport interface DataTableRowSettings<T extends DataTableItem = DataTableItem> {\n color?: ScopeName;\n attrs?: HTMLAttributes;\n}\n\nexport type DataTableRowSettingsFn<T extends DataTableItem = DataTableItem> = (\n payload: DataTableItemSlotPayload<T>,\n) => DataTableRowSettings<T>;\n\nexport type RawDataTableRowSettings<T extends DataTableItem = DataTableItem> =\n DataTableRowSettingsFn<T> | DataTableRowSettings<T>;\n\nconst SELECTABLE_HEADER_SYMBOL = '__selectable_header__';\n\nexport const VDataTable = defineComponent({\n name: 'VDataTable',\n props: {\n /** 選択中のkeyの配列 */\n modelValue: {\n type: Array as PropType<string[]>,\n default: () => [],\n },\n\n itemKey: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.itemKey,\n },\n\n /**\n * ページネーションクエリ名\n */\n pageQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.pageQuery,\n },\n\n /**\n * ソートクエリ名\n */\n sortQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.sortQuery,\n },\n\n /**\n * 表示順クエリ名\n */\n orderQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.orderQuery,\n },\n\n /**\n * 検索クエリ名\n */\n searchQuery: {\n type: [String, Array] as PropType<string | string[]>,\n default: () => DATA_TABLE_DEFAULTS.searchQuery,\n },\n\n /**\n * リミット件数クエリ名\n */\n limitQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.limitQuery,\n },\n defaultOrder: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.defaultOrder,\n },\n ascQueryValue: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.ascQueryValue,\n },\n descQueryValue: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.descQueryValue,\n },\n limits: {\n type: Array as PropType<number[]>,\n default: () => DATA_TABLE_DEFAULTS.limits,\n },\n limitDefault: {\n type: Number,\n default: () => DATA_TABLE_DEFAULTS.limitDefault,\n },\n controlThreshold: {\n type: Number,\n default: () => DATA_TABLE_DEFAULTS.controlThreshold,\n },\n headers: {\n type: Array as PropType<DataTableHeader<any>[]>,\n required: true,\n },\n items: {\n type: Array as PropType<DataTableItem[]>,\n default: () => [],\n },\n total: {\n type: Number,\n default: 0,\n },\n selectable: Boolean,\n fixedHeader: Boolean,\n maxHeight: [Number, String],\n // eslint-disable-next-line vue/require-prop-types\n noDataMessage: {} as PropType<VNodeChildOrSlot>,\n // eslint-disable-next-line vue/require-prop-types\n noResultsMessage: {} as PropType<VNodeChildOrSlot>,\n rowSettings: [Object, Function] as PropType<RawDataTableRowSettings>,\n },\n emits: {\n input: (selectedValues: string[]) => true,\n },\n setup(props, ctx) {\n const vui = useVui();\n const bootedRef = ref(false);\n const footerHeightRef = ref(0);\n const internalValues = ref<string[]>(props.modelValue.slice());\n const rowSettings = computed<DataTableRowSettingsFn>(() => {\n const { rowSettings } = props;\n if (!rowSettings) return () => ({});\n return typeof rowSettings === 'function'\n ? rowSettings\n : () => rowSettings;\n });\n const containedVariant = vui.setting('containedVariant');\n\n const sortedItemKeysRef = computed(() =>\n props.items.map((item) => item[props.itemKey]),\n );\n const isEmptyRef = computed(() => props.items.length === 0);\n const headersRef = computed<DataTableHeader[]>(() => {\n const { headers, selectable } = props;\n const ret: DataTableHeader[] = [];\n if (selectable) {\n ret.push({\n key: SELECTABLE_HEADER_SYMBOL,\n });\n }\n ret.push(\n ...headers.filter(\n ({ hidden }) => !(typeof hidden === 'function' ? hidden() : hidden),\n ),\n );\n return ret;\n });\n\n const searchQueryValues = computed<string[]>(() => {\n let { searchQuery } = props;\n if (!searchQuery) {\n return [];\n }\n if (!Array.isArray(searchQuery)) {\n searchQuery = [searchQuery];\n }\n const values: string[] = [];\n searchQuery.forEach((query) => {\n const value = vui.location.getQuery(query);\n if (value == null || value === '') {\n return;\n }\n if (typeof value === 'object' && !Object.keys(value).length) {\n return;\n }\n values.push(value);\n });\n return values;\n });\n\n const emptyMessage = computed(() => {\n let message: VNodeChildOrSlot;\n if (searchQueryValues.value.length) {\n message =\n props.noResultsMessage ||\n vui.setting('noResultsMessage') ||\n 'No search results found.'; // 検索結果が見つかりませんでした。\n } else {\n message =\n props.noDataMessage ||\n vui.setting('noDataMessage') ||\n 'No data was available.'; // データはありませんでした。\n }\n return typeof message === 'function' ? message(vui) : message;\n });\n\n const classesRef = computed(() => [\n {\n 'v-data-table--fixed-header': props.fixedHeader,\n },\n ]);\n\n const layout = VueAppLayout.use();\n\n const bodyInnerStylesRef = computed<CSSProperties | undefined>(() => {\n if (!bootedRef.value) return;\n\n const { fixedHeader, maxHeight } = props;\n const footerHeight = footerHeightRef.value;\n\n const _maxHeight = maxHeight || (fixedHeader ? '100%' : maxHeight);\n\n if (!_maxHeight) {\n return;\n }\n\n return {\n maxHeight: layout.calculateViewHeight(\n _maxHeight,\n -footerHeight - 100,\n 200,\n ),\n };\n });\n\n const defaultOrderQueryRef = computed(() =>\n props.defaultOrder === props.ascQueryValue\n ? props.ascQueryValue\n : props.descQueryValue,\n );\n\n const isTransitioningRef = computed(() =>\n vui.location.isQueryOnlyTransitioning([\n props.pageQuery,\n props.sortQuery,\n props.orderQuery,\n props.limitQuery,\n ]),\n );\n\n const pageRef = computed(() =>\n vui.location.getQuery(props.pageQuery, Number, 1),\n );\n\n const needShowHeaderControlRef = computed(\n () => props.items.length > props.controlThreshold,\n );\n\n const sortByRef = computed({\n get: () => vui.location.getQuery(props.sortQuery),\n set(value) {\n vui.location.pushQuery({\n [props.sortQuery]: value || null,\n [props.pageQuery]: 1,\n });\n },\n });\n\n const ordersRef = computed(() => [\n props.ascQueryValue,\n props.descQueryValue,\n ]);\n\n const usePagingRef = computed(() => props.limits.length > 0);\n\n const orderByRef = computed({\n get: () => {\n const value = vui.location.getQuery(props.orderQuery);\n if (typeof value !== 'string' || !ordersRef.value.includes(value)) {\n return;\n }\n return value;\n },\n set(value) {\n vui.location.pushQuery({\n [props.orderQuery]: value || null,\n [props.pageQuery]: 1,\n });\n },\n });\n\n const offsetRef = computed(() => (pageRef.value - 1) * limitRef.value);\n\n const limitRef = computed({\n get: () =>\n vui.location.getQuery(props.limitQuery, Number, props.limitDefault),\n set: (value) => {\n const page = Math.floor(offsetRef.value / value) + 1;\n vui.location.pushQuery({\n [props.limitQuery]: value,\n [props.pageQuery]: page,\n });\n },\n });\n\n const pageLengthRef = computed(() => {\n const { total } = props;\n const _limit = limitRef.value;\n if (!total) return 0;\n return Math.ceil(total / _limit);\n });\n\n const lengthRef = computed(() => props.items.length);\n\n const isASCRef = computed(() => orderByRef.value === props.ascQueryValue);\n // const isDESCRef = computed(() => orderByRef.value === props.descQueryValue);\n const sortIconRef = computed(() => {\n let icon = vui.icon('sort');\n if (typeof icon === 'string') {\n const name = icon;\n icon = (gen) =>\n gen({\n name,\n rotate: isASCRef.value ? 180 : 0,\n });\n }\n return icon;\n });\n\n const isIndeterminateRef = computed(() => {\n const { length } = internalValues.value;\n return length > 0 && length < sortedItemKeysRef.value.length;\n });\n\n const isAllSelectedRef = computed(\n () => internalValues.value.length === sortedItemKeysRef.value.length,\n );\n\n function setSort(settings: { sort?: string; order?: string }) {\n const { sort, order } = settings;\n if (\n (sort === undefined || sortByRef.value === sort) &&\n (order === undefined || orderByRef.value === order)\n )\n return;\n\n const queries: { [key: string]: string } = {};\n if (sort) {\n queries[props.sortQuery] = sort as string;\n }\n if (order) {\n queries[props.orderQuery] = order as string;\n }\n\n vui.location.pushQuery({\n ...queries,\n ...(usePagingRef.value\n ? {\n [props.pageQuery]: 1,\n }\n : undefined),\n });\n }\n\n function toggleOrderBy() {\n return setSort({\n order:\n orderByRef.value === props.ascQueryValue\n ? props.descQueryValue\n : props.ascQueryValue,\n });\n }\n\n function isSelected(key: string) {\n return internalValues.value.includes(key);\n }\n\n function select(key: string) {\n if (!internalValues.value.includes(key)) {\n const values = internalValues.value.slice();\n values.push(key);\n const sortedKeys = sortedItemKeysRef.value;\n values.sort((a, b) => {\n const ai = sortedKeys.indexOf(a);\n const bi = sortedKeys.indexOf(b);\n if (ai < bi) return -1;\n if (ai > bi) return 1;\n return 0;\n });\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function selectAll() {\n if (!isAllSelectedRef.value) {\n const values = sortedItemKeysRef.value.slice();\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function deselectAll() {\n if (internalValues.value.length) {\n const values: string[] = [];\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function deselect(key: string) {\n const values = internalValues.value.slice();\n const index = values.indexOf(key);\n if (index !== -1) {\n values.splice(index, 1);\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function handleClickSortHeader(header: DataTableHeader, ev: PointerEvent) {\n const { sortQuery } = header;\n if (!sortQuery) return;\n if (sortByRef.value === sortQuery) {\n return toggleOrderBy();\n }\n return setSort({\n sort: sortQuery,\n order: defaultOrderQueryRef.value,\n });\n }\n\n function genPagination() {\n return (\n <VPagination\n class=\"v-data-table__pagination\"\n dense\n align=\"right\"\n routeQuery={props.pageQuery}\n modelValue={pageRef.value}\n length={pageLengthRef.value}\n />\n );\n }\n\n function genControls() {\n const { total } = props;\n const offset = offsetRef.value;\n const length = lengthRef.value;\n\n return (\n <div class=\"v-data-table__controls\">\n <div class=\"v-data-table__controls__info\">\n <small class=\"v-data-table__controls__info__length\">\n {`全 ${total} 件中 ${offset + 1} 件 〜 ${\n offset + length\n } 件を表示`}\n </small>\n </div>\n <div class=\"v-data-table__controls__select-limit\">\n <span class=\"v-data-table__controls__select-limit__prefix\">\n 1ページに\n </span>\n <VSelect\n class=\"v-data-table__controls__select-limit__node\"\n size=\"sm\"\n hiddenInfo\n disabled={isTransitioningRef.value}\n items={props.limits.map((limit) => ({\n label: `${limit}件`,\n value: limit,\n }))}\n v-model={limitRef.value}\n />\n </div>\n <div class=\"v-data-table__controls__pagination\">\n {genPagination()}\n </div>\n </div>\n );\n }\n\n function genTableHeader() {\n const sortBy = sortByRef.value;\n const isIndeterminate = isIndeterminateRef.value;\n const isAllSelected = isAllSelectedRef.value;\n const { defaultOrder, ascQueryValue } = props;\n // const usePaging = usePagingRef.value;\n\n const children = headersRef.value.map((header) => {\n const { label, sortQuery, align, key } = header;\n const headerChildren: VNodeArrayChildren = [];\n if (label != null && typeof label !== 'boolean') {\n let _children = typeof label === 'function' ? label(vui) : label;\n if (\n _children &&\n !Array.isArray(_children) &&\n typeof _children === 'object'\n ) {\n _children = JSON.stringify(_children);\n }\n headerChildren.push(_children);\n }\n if (key === SELECTABLE_HEADER_SYMBOL) {\n headerChildren.push(\n <VCheckbox\n modelValue={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={(ev) => {\n if (isAllSelectedRef.value) {\n deselectAll();\n } else {\n selectAll();\n }\n }}\n />,\n );\n }\n\n const sortActive = sortBy === sortQuery;\n\n if (sortQuery) {\n const isASC = sortActive\n ? isASCRef.value\n : defaultOrder === ascQueryValue;\n headerChildren.unshift(\n <VIcon\n class=\"v-data-table__table__sort-icon v-data-table__table__sort-icon--empty\"\n name=\"$empty\"\n />,\n );\n headerChildren.push(\n resolveRawIconProp(false, sortIconRef.value, {\n class: [\n 'v-data-table__table__sort-icon v-data-table__table__sort-icon--arrow',\n {\n 'v-data-table__table__sort-icon--asc': isASC,\n 'v-data-table__table__sort-icon--desc': !isASC,\n },\n ],\n }),\n // <VIcon\n // class={[\n // 'v-data-table__table__sort-icon v-data-table__table__sort-icon--arrow',\n // {\n // 'v-data-table__table__sort-icon--asc': isASC,\n // 'v-data-table__table__sort-icon--desc': !isASC,\n // },\n // ]}\n // name=\"mdi-chevron-down\"\n // />,\n );\n }\n\n const classes = [\n 'v-data-table__table__cell',\n {\n 'v-data-table__table__cell--active': sortActive,\n },\n ];\n\n if (align) {\n classes.push(`v-data-table__table__cell--${align}`);\n }\n\n return (\n <th\n class={classes}\n key={header.key}\n tabindex={sortQuery ? 0 : undefined}\n onClick={(ev) => {\n if (!sortQuery) return;\n handleClickSortHeader(header, ev);\n }}>\n <div class=\"v-data-table__table__cell__tile\">{headerChildren}</div>\n </th>\n );\n });\n return (\n <thead class=\"v-data-table__table__header\">\n <tr>{children}</tr>\n </thead>\n );\n }\n\n function toggleSelect(key: string) {\n return isSelected(key) ? deselect(key) : select(key);\n }\n\n function defaultItemSlot(payload: DataTableItemSlotPayload) {\n const { key, item, selected } = payload;\n const headers = headersRef.value;\n const children = headers.map((header) => {\n const { cell, align, key: headerKey } = header;\n const cellSlot = cell || ctx.slots.cell;\n let cellChildren: VNodeChild;\n if (cellSlot) {\n const cellPayload: DataTableCellSlotPayload = {\n vui,\n item,\n selected,\n };\n let _children = cellSlot(cellPayload);\n if (\n _children &&\n !Array.isArray(_children) &&\n typeof _children === 'object' &&\n !isVNode(_children)\n ) {\n _children = JSON.stringify(_children);\n }\n cellChildren = _children;\n }\n\n if (!cellChildren) {\n switch (headerKey) {\n case SELECTABLE_HEADER_SYMBOL: {\n cellChildren = [\n <VCheckbox\n modelValue={selected}\n onChange={(ev) => {\n toggleSelect(key);\n }}\n />,\n ];\n break;\n }\n }\n }\n\n const classes = align\n ? {\n [`v-data-table__table__cell--${align}`]: true,\n }\n : undefined;\n\n return (\n <td class={['v-data-table__table__cell', classes]} key={header.key}>\n {cellChildren}\n </td>\n );\n });\n\n const { color, attrs } = rowSettings.value(payload);\n const colorClass = color && toScopeColorClass(color);\n const classes = [\n 'v-data-table__table__item',\n {\n 'v-data-table__table__item--selected': selected,\n },\n ];\n if (colorClass) {\n classes.push(colorClass, containedVariant);\n }\n\n return (\n <tr class={classes} key={key} {...attrs}>\n {children}\n </tr>\n );\n }\n\n function genBody() {\n const { items, itemKey } = props;\n const { item: itemSlot = defaultItemSlot } = ctx.slots;\n\n const children = items.map((item) => {\n const key = item[itemKey];\n const payload: DataTableItemSlotPayload = {\n key,\n item,\n selected: isSelected(key),\n };\n return itemSlot(payload);\n });\n return <tbody class=\"v-data-table__table__body\">{children}</tbody>;\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n internalValues.value = modelValue.slice();\n },\n );\n\n watch(\n () => props.items,\n (items) => {\n internalValues.value = internalValues.value.filter((key) =>\n sortedItemKeysRef.value.includes(key),\n );\n },\n );\n\n onMounted(() => {\n bootedRef.value = true;\n });\n\n return () => {\n const isEmpty = isEmptyRef.value;\n const usePaging = usePagingRef.value;\n return (\n <div class={['v-data-table', classesRef.value]}>\n {!isEmpty && usePaging && needShowHeaderControlRef.value && (\n <div class=\"v-data-table__header\">{genControls()}</div>\n )}\n <div class=\"v-data-table__body container-pull\">\n {isEmpty ? (\n <div class=\"v-data-table__empty--message\">\n {emptyMessage.value}\n </div>\n ) : (\n <VPaper\n class=\"v-data-table__body__inner\"\n style={bodyInnerStylesRef.value}>\n <div class=\"v-data-table__table-wrapper\">\n <table class=\"v-data-table__table\">\n {genTableHeader()}\n {genBody()}\n </table>\n </div>\n </VPaper>\n )}\n <Transition name=\"fade\">\n {isTransitioningRef.value && (\n <div class=\"v-data-table__loading\">\n <VProgressCircular indeterminate />\n </div>\n )}\n </Transition>\n </div>\n {!isEmpty &&\n usePaging &&\n withDirectives(\n <div class=\"v-data-table__footer\">{genControls()}</div>,\n [\n resizeDirectiveArgument(({ height }) => {\n footerHeightRef.value = height;\n }),\n ],\n )}\n </div>\n );\n };\n },\n});\n","import { defineComponent } from 'vue';\nimport { VAppLayout } from '@fastkit/vue-app-layout';\nimport { VDynamicStacks } from '@fastkit/vue-stack';\nimport { useInjectTheme } from '@fastkit/vue-color-scheme';\n\nexport const VApp = defineComponent({\n name: 'VApp',\n setup(_props, ctx) {\n useInjectTheme();\n\n return () => (\n <VDynamicStacks>\n <VAppLayout v-slots={ctx.slots} />\n </VDynamicStacks>\n );\n },\n});\n","import './VToolbar.scss';\nimport { defineComponent, computed } from 'vue';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { createElevationProps, useElevation } from '../../composables';\nimport { useVui } from '../../injections';\n\nexport const VToolbar = defineComponent({\n name: 'VToolbar',\n props: {\n ...createElevationProps(),\n ...colorSchemeProps(),\n dense: Boolean,\n },\n setup(props, ctx) {\n const vui = useVui();\n\n const elevation = useElevation(props, { defaultValue: 4 });\n const dense = computed(() => props.dense);\n const color = useColorClasses({\n color: () => props.color,\n variant: () => props.variant || vui.setting('containedVariant'),\n });\n\n const classes = computed(() => [\n elevation.elevationClassName.value,\n color.colorClasses.value,\n {\n 'v-toolbar--plain': !color.color.value.value,\n 'v-toolbar--dense': dense.value,\n },\n ]);\n\n return () => (\n <div class={['v-toolbar', classes.value]}>{ctx.slots.default?.()}</div>\n );\n },\n});\n","import './VToolbarMenu.scss';\nimport { defineComponent } from 'vue';\nimport { VButton, vueButtonProps } from '../VButton';\nimport { useVui } from '../../injections';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport type VToolbarMenuEdge = 'start' | 'end';\n\nexport const VToolbarMenu = defineComponent({\n name: 'VToolbarMenu',\n inheritAttrs: false,\n props: {} as typeof vueButtonProps,\n setup(props, ctx) {\n const vui = useVui();\n const plain = vui.setting('plainVariant');\n\n return () => {\n const variant = props.variant || plain;\n return (\n <VButton {...ctx.attrs} variant={variant} class={['v-toolbar-menu']}>\n {ctx.slots.default?.()}\n </VButton>\n );\n };\n },\n});\n","import './VToolbarEdge.scss';\nimport { defineComponent, computed, PropType } from 'vue';\nimport { renderSlotOrEmpty } from '@fastkit/vue-utils';\n\nexport type VToolbarEdgeEdge = 'start' | 'end';\n\nexport const VToolbarEdge = defineComponent({\n name: 'VToolbarEdge',\n props: {\n edge: {\n type: String as PropType<VToolbarEdgeEdge>,\n required: true,\n },\n },\n setup(props, ctx) {\n const edge = computed(() => props.edge);\n return () => {\n const children = renderSlotOrEmpty(ctx.slots, 'default');\n const hasChildren = !!children && children.length > 0;\n\n return (\n <div\n class={[\n 'v-toolbar-edge',\n `v-toolbar-edge--${edge.value}`,\n {\n [`v-toolbar-edge--empty`]: !hasChildren,\n },\n ]}>\n {children}\n </div>\n );\n };\n },\n});\n","import './VToolbarTitle.scss';\nimport { defineComponent, computed } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\nexport const VToolbarTitle = defineComponent({\n name: 'VToolbarTitle',\n props: {\n tag: {\n type: String,\n default: 'span',\n },\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n const _TagName = computed(() => props.tag);\n return () => {\n const TagName = _TagName.value as 'span';\n\n return <TagName class=\"v-toolbar-title\">{ctx.slots.default?.()}</TagName>;\n };\n },\n});\n","import {\n type VNodeChild,\n reactive,\n type UnwrapNestedRefs,\n type App,\n} from 'vue';\nimport { ScopeName, ColorVariant } from '@fastkit/color-scheme';\nimport {\n type VueStackService,\n type VStackControl,\n type VStackBuiltinActionType,\n type VStackAction,\n type StackableLauncher,\n VStackBuiltinActions,\n BUILTIN_ACTION_HANDLERS,\n} from '@fastkit/vue-stack';\nimport { type VNodeChildOrSlot, withCtx } from '@fastkit/vue-utils';\nimport { type VueColorSchemePluginSettings } from '@fastkit/vue-color-scheme';\nimport type { Router } from 'vue-router';\nimport { RouterLink, useLink, UseLinkOptions } from 'vue-router';\nimport { setDefaultRouterLink } from '@fastkit/vue-action';\nimport { LocationService } from '@fastkit/vue-location';\nimport {\n VueForm,\n FormNodeWrapperHinttipDelay,\n} from '@fastkit/vue-form-control';\nimport { getDocumentScroller, UseScroller } from '@fastkit/vue-scroller';\nimport { VForm } from './components/VForm';\nimport { VTextField, TextFieldInput } from './components/VTextField';\nimport type { IconName, RawIconProp } from './components/VIcon';\nimport { ControlSize } from './schemes';\nimport { VButton } from './components/VButton';\nimport { VDialog } from './components/VDialog';\nimport { VSnackbar } from './components/VSnackbar';\nimport { VMenu } from './components/VMenu';\nimport { VSheetModal } from './components/VSheetModal';\n\nexport { VuiInjectionKey } from './injections';\n\nexport type UseLinkResult = ReturnType<typeof useLink>;\n\ntype VDialogProps = InstanceType<typeof VDialog>['$props'];\n\nexport interface VuiFormPromptSettings<\n T extends { [key: string]: any } = { [key: string]: any },\n> extends Partial<VDialogProps> {\n state: T;\n size?: ControlSize;\n}\n\nexport interface VuiPromptOptions extends Partial<VDialogProps> {\n input?: Omit<TextFieldInput, 'modelValue'> & { initialValue?: string };\n}\n\nexport type RawVuiPromptOptions = string | VuiPromptOptions;\n\nconst DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP = -20;\nconst DEFAULT_TEXTAREA_ROWS = 3;\n\nexport interface VuiServiceUISettings {\n primaryScope: ScopeName;\n plainVariant: ColorVariant;\n containedVariant: ColorVariant;\n warningScope: ScopeName;\n errorScope: ScopeName;\n buttonDefault: {\n color: ScopeName;\n variant: ColorVariant;\n };\n tabDefault: {\n color: ScopeName;\n };\n dialogOk?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n dialogCancel?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n dialogClose?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n hinttipDelay?: FormNodeWrapperHinttipDelay;\n noDataMessage?: VNodeChildOrSlot;\n noResultsMessage?: VNodeChildOrSlot;\n loadingMessage?: VNodeChildOrSlot;\n failedToLoadDataMessage?: VNodeChildOrSlot;\n}\n\nexport type RawVuiServiceUISettings = Partial<VuiServiceUISettings>;\n\nexport function mergeVuiServiceUISettings(\n base: VuiServiceUISettings,\n overrides?: RawVuiServiceUISettings,\n): VuiServiceUISettings {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceUISettings = {\n ...base,\n };\n Object.entries(overrides).forEach(([key, value]) => {\n if (value) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport interface VuiServiceIconSettings {\n menuDown: IconName;\n navigationExpand: RawIconProp;\n prev: RawIconProp;\n next: RawIconProp;\n sort: RawIconProp;\n editorTextColor: IconName;\n editorformatBold: IconName;\n editorformatUnderline: IconName;\n editorformatItalic: IconName;\n editorformatListBulleted: IconName;\n editorformatListNumbered: IconName;\n editorAlignLeft: IconName;\n editorAlignCenter: IconName;\n editorAlignRight: IconName;\n editorAlignJustify: IconName;\n editorLink: IconName;\n editorLinkOff: IconName;\n editorUndo: IconName;\n editorRedo: IconName;\n hinttip: IconName;\n clear: IconName;\n reload: IconName;\n fileUpload: IconName;\n}\n\nexport type RawVuiServiceIconSettings = Partial<VuiServiceIconSettings>;\n\nexport function mergeVuiServiceIconSettings(\n base: VuiServiceIconSettings,\n overrides?: RawVuiServiceIconSettings,\n): VuiServiceIconSettings {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceIconSettings = {\n ...base,\n };\n Object.entries(overrides).forEach(([key, value]) => {\n if (value) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport type VuiVNodeResolver = () => VNodeChild;\n\nexport interface VuiServiceOptions {\n router: Router;\n RouterLink?: any;\n useLink?: (props: UseLinkOptions) => UseLinkResult;\n colorScheme: VueColorSchemePluginSettings;\n uiSettings: VuiServiceUISettings;\n icons: VuiServiceIconSettings;\n selectionSeparator?: VuiVNodeResolver;\n autoScrollToElementOffsetTop?: number | (() => number | undefined);\n textareaRows?: number;\n requiredChip?: VuiVNodeResolver;\n}\n\nexport interface RawVuiServiceOptions extends Omit<\n Partial<VuiServiceOptions>,\n 'uiSettings' | 'icons'\n> {\n uiSettings?: RawVuiServiceUISettings;\n icons?: RawVuiServiceIconSettings;\n}\n\nexport function mergeVuiServiceOptions(\n base: VuiServiceOptions,\n overrides?: RawVuiServiceOptions,\n): VuiServiceOptions {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceOptions = {\n ...base,\n uiSettings: mergeVuiServiceUISettings(\n base.uiSettings,\n overrides.uiSettings,\n ),\n icons: mergeVuiServiceIconSettings(base.icons, overrides.icons),\n };\n const excludes = ['uiSettings', 'icons'];\n Object.entries(overrides).forEach(([key, value]) => {\n if (value && !excludes.includes(key)) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport class VuiService {\n readonly options: VuiServiceOptions;\n\n readonly selectionSeparator: VuiVNodeResolver;\n\n readonly autoScrollToElementOffsetTop?: number | (() => number | undefined);\n\n readonly textareaRows?: number;\n\n readonly requiredChip?: VuiVNodeResolver;\n\n readonly router: Router;\n\n readonly location: LocationService;\n\n readonly stack: VueStackService;\n\n readonly useLink: typeof useLink;\n\n readonly stackActions: VStackBuiltinActions;\n\n readonly dialog: StackableLauncher<typeof VDialog>;\n\n readonly alert: StackableLauncher<typeof VDialog>;\n\n readonly confirm: StackableLauncher<typeof VDialog, boolean>;\n\n readonly snackbar: StackableLauncher<typeof VSnackbar>;\n\n readonly menu: StackableLauncher<typeof VMenu>;\n\n readonly sheet: StackableLauncher<typeof VSheetModal>;\n\n get scroller(): UseScroller {\n return getDocumentScroller();\n }\n\n constructor(options: VuiServiceOptions, app: App) {\n this.options = options;\n this.configure();\n\n const {\n selectionSeparator = () => ', ',\n autoScrollToElementOffsetTop = DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP,\n textareaRows = DEFAULT_TEXTAREA_ROWS,\n requiredChip = () => '*',\n } = options;\n this.selectionSeparator = selectionSeparator;\n this.autoScrollToElementOffsetTop = autoScrollToElementOffsetTop;\n this.textareaRows = textareaRows;\n this.requiredChip = requiredChip;\n this.router = options.router;\n this.location = LocationService.install(app, {\n router: this.router,\n });\n this.useLink = options.useLink || useLink;\n this.stack = app.config.globalProperties.$vstack;\n const { uiSettings } = options;\n this.stackActions = {\n ok: ({ bindings }) => (\n <VButton {...uiSettings.dialogOk} {...bindings}>\n OK\n </VButton>\n ),\n cancel: ({ bindings }) => (\n <VButton {...uiSettings.dialogCancel} {...bindings}>\n CANCEL\n </VButton>\n ),\n close: ({ bindings }) => (\n <VButton {...uiSettings.dialogClose} {...bindings}>\n CLOSE\n </VButton>\n ),\n };\n\n this.dialog = this.stack.createLauncher(VDialog);\n this.alert = this.stack.createLauncher(VDialog, (props) => {\n const actions = [...(props?.actions || [])];\n if (!actions.length) {\n actions.push(this.stackAction('ok'));\n }\n const backdrop = props?.backdrop == null ? true : props?.backdrop;\n return {\n ...props,\n backdrop,\n actions,\n };\n });\n\n this.confirm = this.stack.createLauncher(VDialog, (props) => {\n const actions = [...(props?.actions || [])];\n if (!actions.length) {\n actions.push(this.stackAction('cancel'), this.stackAction('ok'));\n }\n const backdrop = props?.backdrop == null ? true : props?.backdrop;\n return {\n ...props,\n backdrop,\n actions,\n };\n });\n this.snackbar = this.stack.createLauncher(VSnackbar);\n this.menu = this.stack.createLauncher(VMenu);\n this.sheet = this.stack.createLauncher(VSheetModal);\n }\n\n configure(options?: Partial<VuiServiceOptions>) {\n options && Object.assign(this.options, options);\n setDefaultRouterLink(this.getRouterLink());\n }\n\n getRouterLink() {\n return this.options.RouterLink || RouterLink;\n }\n\n setting<K extends keyof VuiServiceUISettings>(\n key: K,\n ): VuiServiceUISettings[K] {\n return this.options.uiSettings[key] as VuiServiceUISettings[K];\n }\n\n icon<K extends keyof VuiServiceIconSettings>(\n iconType: K,\n ): VuiServiceIconSettings[K] {\n return this.options.icons[iconType] as VuiServiceIconSettings[K];\n }\n\n getAutoScrollToElementOffsetTop() {\n let { autoScrollToElementOffsetTop } = this;\n if (typeof autoScrollToElementOffsetTop === 'function') {\n autoScrollToElementOffsetTop = autoScrollToElementOffsetTop();\n }\n return autoScrollToElementOffsetTop || 0;\n }\n\n getRequiredChip() {\n const { requiredChip } = this;\n return requiredChip && requiredChip();\n }\n\n formPrompt<T extends { [key: string]: any } = { [key: string]: any }>(\n settings: VuiFormPromptSettings<T>,\n slot: (\n state: UnwrapNestedRefs<T>,\n ctx: { form: VueForm; stack: VStackControl },\n ) => VNodeChild,\n ): Promise<T | false | undefined> {\n let form: VueForm | undefined;\n\n const options = {\n dense: true,\n ...settings,\n };\n\n const { size, state } = options;\n\n const _state = reactive(state);\n\n options.actions = options.actions || [\n this.stackAction('cancel', undefined, { size }),\n this.stackAction('ok', undefined, {\n size,\n onClick: () => {\n if (form) {\n const ev = new Event('submit');\n form.handleSubmit(ev);\n }\n },\n }),\n ];\n\n return this.dialog(options, (stack) => (\n <VForm\n disableAutoScroll\n size={size}\n // onVnodeMounted={(vnode) => {\n // form = (vnode.component as any).ctx.form as VueForm;\n // }}\n onVnodeBeforeUnmount={() => {\n form = undefined;\n }}\n onSubmit={(ev) => {\n stack.resolve(_state);\n }}\n v-slots={{\n default: withCtx((_form: VueForm) => {\n form = _form;\n return slot(_state, { form, stack });\n }),\n }}\n />\n ));\n }\n\n prompt(rawOptions: RawVuiPromptOptions = {}) {\n const options: VuiPromptOptions =\n typeof rawOptions === 'string'\n ? {\n input: {\n label: rawOptions,\n },\n }\n : {\n ...rawOptions,\n };\n\n options.input = {\n ...options.input,\n };\n\n options.dense = true;\n\n const { initialValue: value = '' } = options.input;\n const { size } = options.input;\n\n delete options.input.initialValue;\n\n return this.formPrompt(\n {\n size,\n ...options,\n state: {\n input: value,\n },\n },\n (state) => <VTextField {...options.input} v-model={state.input} />,\n ).then((result) => (result ? result.input : result));\n }\n\n stackAction(\n key: VStackBuiltinActionType,\n override?: Partial<VStackAction>,\n attrs?: Record<string, unknown>,\n ) {\n const factory = this.stackActions[key];\n const _onClick = BUILTIN_ACTION_HANDLERS[key];\n const action: VStackAction = {\n key,\n content: ({ control, key }) => {\n const onClick = (ev: PointerEvent) => _onClick(control, ev);\n\n const _attrs: any = {\n disabled: control.guardInProgress,\n ...attrs,\n };\n\n if (key === 'ok' && control.guardInProgress) {\n _attrs.loading = true;\n }\n\n return factory({\n service: this.stack,\n control,\n key,\n bindings: { onClick, ..._attrs },\n });\n },\n ...override,\n };\n return action;\n }\n}\n","import { App } from 'vue';\nimport {\n installVueStackPlugin,\n VueStackServiceOptions,\n} from '@fastkit/vue-stack';\nimport {\n installVueFormPlugin,\n VueFormServiceOptions,\n} from '@fastkit/vue-form-control';\nimport { installBodyScrollLockDirective } from '@fastkit/vue-body-scroll-lock';\nimport { installClickOutsideDirective } from '@fastkit/vue-click-outside';\nimport { installResizeDirective } from '@fastkit/vue-resize';\nimport { VueColorSchemePlugin } from '@fastkit/vue-color-scheme';\nimport { installVueAppLayout } from '@fastkit/vue-app-layout';\nimport { onAppUnmount } from '@fastkit/vue-utils';\nimport { getDocumentScroller } from '@fastkit/vue-scroller';\nimport { setDefaultActionableClassName } from '@fastkit/vue-action';\nimport {\n VuiService,\n VuiServiceOptions,\n RawVuiServiceOptions,\n mergeVuiServiceOptions,\n VuiInjectionKey,\n} from './service';\n\nsetDefaultActionableClassName('clickable');\nconst scroller = getDocumentScroller();\n\nexport interface VuiPluginStackOptions extends VueStackServiceOptions {}\n\nexport interface VuiPluginOptions extends VuiServiceOptions {\n stack?: VuiPluginStackOptions;\n form?: VueFormServiceOptions;\n}\n\nexport interface RawVuiPluginOptions extends RawVuiServiceOptions {\n stack?: VuiPluginStackOptions;\n form?: VueFormServiceOptions;\n}\n\nexport function mergeVuiPluginOptions(\n base: VuiPluginOptions,\n override?: RawVuiPluginOptions,\n): VuiPluginOptions {\n if (!override) return base;\n const merged: VuiPluginOptions = mergeVuiServiceOptions(base, override);\n if (override.stack) {\n merged.stack = {\n ...merged.stack,\n ...override.stack,\n };\n }\n if (override.form) {\n merged.form = {\n ...merged.form,\n ...override.form,\n };\n }\n return merged;\n}\n\ndeclare module 'vue' {\n export interface ComponentCustomProperties {\n $vui: VuiService;\n }\n}\n\nexport class VuiPlugin {\n static install(app: App, opts: VuiPluginOptions) {\n const { colorScheme, stack, form } = opts;\n\n // ColorScheme\n const vueColorSchemePlugin = new VueColorSchemePlugin(colorScheme);\n app.use(vueColorSchemePlugin);\n\n installVueStackPlugin(app, stack);\n installVueFormPlugin(app, {\n scroll: {\n options: {\n behavior: 'smooth',\n },\n\n fn: (el, opts) => {\n if (window.getComputedStyle(el).scrollMargin) return;\n const duration = opts?.behavior === 'smooth' ? undefined : 0;\n return scroller.toElement(el, {\n offset: $vui.getAutoScrollToElementOffsetTop(),\n duration,\n });\n },\n },\n ...form,\n });\n installVueAppLayout(app);\n installBodyScrollLockDirective(app);\n installClickOutsideDirective(app);\n installResizeDirective(app);\n\n // Vui\n const $vui = new VuiService(opts, app);\n app.provide(VuiInjectionKey, $vui);\n app.config.globalProperties.$vui = $vui;\n\n onAppUnmount(app, () => {\n delete (app.config.globalProperties as any).$vui;\n });\n }\n}\n\nexport function installVuiPlugin(app: App, opts: VuiPluginOptions) {\n return app.use(VuiPlugin, opts);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"vui.mjs","names":["update:modelValue","update:modelValue","update:modelValue","update:modelValue"],"sources":["../src/schemes/control.ts","../src/injections.ts","../src/composables/control.ts","../src/components/VIcon/VIcon.tsx","../src/components/VMenu/VMenu.tsx","../src/components/VTooltip/VTooltip.tsx","../src/components/VFormControl/VFormControl.tsx","../src/composables/form-selector.tsx","../src/composables/elevation.ts","../src/components/VDialog/VDialog.tsx","../src/components/VSnackbar/VSnackbar.tsx","../src/components/VSheetModal/VSheetModal.tsx","../src/components/VSkeltonLoader/VSkeltonLoaderBone.tsx","../src/components/VDisabledReason/VDisabledReason.tsx","../src/components/VBusyImage/VBusyImage.tsx","../src/components/VGrid/schemes.ts","../src/components/VGrid/VGridItem.tsx","../src/components/VGrid/VGridContainer.tsx","../src/components/VPaper/VPaper.tsx","../src/components/VAvatar/VAvatar.tsx","../src/components/VChip/VChip.tsx","../src/components/VCard/VCard.tsx","../src/components/VCard/VCardContent.tsx","../src/components/VCard/VCardActions.tsx","../src/components/VButton/VButton.tsx","../src/components/VButton/VButtonGroup.tsx","../src/components/VPagination/VPagination.tsx","../src/components/VListTile/VListTile.tsx","../src/components/VDrawerLayout/VDrawerLayout.tsx","../src/components/VHero/VHero.tsx","../src/components/VNavigation/VNavigationItem.tsx","../src/components/VNavigation/VNavigation.tsx","../src/components/VControlField/VControlField.tsx","../src/components/VTextCounter/VTextCounter.tsx","../src/components/VCheckable/VCheckable.tsx","../src/components/VCheckbox/VCheckbox.tsx","../src/components/VCheckboxGroup/VCheckboxGroup.tsx","../src/components/VRadio/VRadio.tsx","../src/components/VRadioGroup/VRadioGroup.tsx","../src/components/VSwitch/VSwitch.tsx","../src/components/VSwitchGroup/VSwitchGroup.tsx","../src/components/VOption/VOption.tsx","../src/components/VOptionGroup/VOptionGroup.tsx","../src/components/VSelect/VSelect.tsx","../src/components/VTextField/VTextField.tsx","../src/components/VNumberField/VNumberField.tsx","../src/components/VTextarea/VTextarea.tsx","../src/components/VFileInput/VFileInput.tsx","../src/components/VFormGroup/VFormGroup.tsx","../src/components/VForm/VForm.tsx","../src/components/VTabs/VTab.tsx","../src/components/VTabs/VTabs.tsx","../src/components/VBreadcrumbs/VBreadcrumbs.tsx","../src/components/VContentSwitcher/VContentSwitcher.tsx","../src/components/VDataTable/VDataTable.tsx","../src/components/VApp/VApp.tsx","../src/components/VToolbar/VToolbar.tsx","../src/components/VToolbar/VToolbarMenu.tsx","../src/components/VToolbar/VToolbarEdge.tsx","../src/components/VToolbar/VToolbarTitle.tsx","../src/service.tsx","../src/plugin.tsx"],"sourcesContent":["export const CONTROL_SIZES = ['sm', 'md', 'lg'] as const;\n\nexport type ControlSize = (typeof CONTROL_SIZES)[number];\n\nexport const CONTROL_FIELD_VARIANTS = ['outlined', 'filled', 'flat'] as const;\n\nexport type ControlFieldVariant = (typeof CONTROL_FIELD_VARIANTS)[number];\n\nexport const CONTROL_LOADING_SPINNER_SIZES: Record<ControlSize, number> = {\n sm: 16,\n md: 20,\n lg: 24,\n};\n","import { InjectionKey, inject, computed, provide } from 'vue';\nimport type { VuiService } from './service';\nimport type {\n ControlProvider,\n ControlFieldProvider,\n VuiColorProvider,\n} from './composables';\n\nexport const VuiInjectionKey: InjectionKey<VuiService> = Symbol('Vui');\n\nexport const VuiControlInjectionKey: InjectionKey<ControlProvider> =\n Symbol('VuiControl');\n\nexport const VuiControlFieldInjectionKey: InjectionKey<ControlFieldProvider> =\n Symbol('VuiControlField');\n\nexport const VuiColorProviderInjectionKey: InjectionKey<VuiColorProvider> =\n Symbol('VuiColorProvider');\n\nexport const VUI_TEXT_FIELD_SYMBOL = 'vui-text-field';\nexport const VUI_TEXTAREA_SYMBOL = 'vui-textarea';\nexport const VUI_SELECT_SYMBOL = 'vui-select';\nexport const VUI_OPTION_SYMBOL = 'vui-option';\nexport const VUI_CHECKBOX_GROUP_SYMBOL = 'vui-checkbox-group';\nexport const VUI_CHECKBOX_SYMBOL = 'vui-checkbox';\nexport const VUI_RADIO_GROUP_SYMBOL = 'vui-radio-group';\nexport const VUI_RADIO_SYMBOL = 'vui-radio';\nexport const VUI_SWITCH_GROUP_SYMBOL = 'vui-switch-group';\nexport const VUI_SWITCH_SYMBOL = 'vui-switch';\nexport const VUI_FILE_INPUT_SYMBOL = 'vui-file-input';\nexport const VUI_FORM_GROUP_SYMBOL = 'vui-form-group';\nexport const VUI_FORM_SYMBOL = 'vui-form';\n\nexport function useVui() {\n const vui = inject(VuiInjectionKey);\n if (!vui) {\n throw new Error('missing vui service');\n }\n return vui;\n}\n\nexport function useVuiColorProvider(): VuiColorProvider {\n const parent = inject(VuiColorProviderInjectionKey, null);\n if (parent) {\n return parent;\n }\n\n const vui = useVui();\n const primary = computed(() => vui.setting('primaryScope'));\n const error = computed(() => vui.setting('errorScope'));\n const provider: VuiColorProvider = {\n primary,\n error,\n className: (type) => {\n const scope = provider[type].value;\n return `${scope}-scope`;\n },\n };\n\n provide(VuiColorProviderInjectionKey, provider);\n\n return provider;\n}\n","import {\n PropType,\n ExtractPropTypes,\n computed,\n ComputedRef,\n provide,\n inject,\n} from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport {\n ControlSize,\n CONTROL_SIZES,\n ControlFieldVariant,\n CONTROL_FIELD_VARIANTS,\n} from '../schemes';\nimport {\n VuiControlInjectionKey,\n VuiControlFieldInjectionKey,\n} from '../injections';\n\nexport function createControlProps() {\n return createPropsOptions({\n size: {\n type: String as PropType<ControlSize>,\n validator: (value: any) => {\n if (value == null) return true;\n return CONTROL_SIZES.includes(value);\n },\n },\n loading: Boolean,\n });\n}\n\nexport type ControlProps = ExtractPropTypes<\n ReturnType<typeof createControlProps>\n>;\n\nexport interface ControlProvider {\n parentControl: ControlProvider | null;\n size: ComputedRef<ControlSize>;\n classes: ComputedRef<any>;\n}\n\nexport interface UseControlProviderOptions {\n defaultSize?: ControlSize;\n}\n\nexport function useControl(\n props: ControlProps,\n opts: UseControlProviderOptions = {},\n) {\n const { defaultSize = 'md' } = opts;\n const parentControl = inject(VuiControlInjectionKey, null);\n const size = computed(() => {\n const propSize = props.size;\n return propSize || (parentControl ? parentControl.size.value : defaultSize);\n });\n const classes = computed(() => ['v-control', `v-control--${size.value}`]);\n const provider: ControlProvider = {\n parentControl,\n size,\n classes,\n };\n provide(VuiControlInjectionKey, provider);\n return provider;\n}\n\nexport function createControlFieldProviderProps() {\n return createPropsOptions({\n variant: {\n type: String as PropType<ControlFieldVariant>,\n validator: (value: any) => {\n if (value == null) return true;\n return CONTROL_FIELD_VARIANTS.includes(value);\n },\n },\n });\n}\n\nexport type ControlFieldProviderProps = ExtractPropTypes<\n ReturnType<typeof createControlFieldProviderProps>\n>;\n\nexport interface ControlFieldProvider {\n parentControlField: ControlFieldProvider | null;\n variant: ComputedRef<ControlFieldVariant>;\n}\n\nexport interface UseControlFieldProviderOptions {\n defaultVariant?: ControlFieldVariant;\n}\n\nexport function useControlField(\n props: ControlFieldProviderProps,\n opts: UseControlFieldProviderOptions = {},\n) {\n const { defaultVariant = 'flat' } = opts;\n const parentControlField = inject(VuiControlFieldInjectionKey, null);\n const variant = computed(() => {\n const propVariant = props.variant;\n return (\n propVariant ||\n (parentControlField ? parentControlField.variant.value : defaultVariant)\n );\n });\n const provider: ControlFieldProvider = {\n parentControlField,\n variant,\n };\n provide(VuiControlFieldInjectionKey, provider);\n return provider;\n}\n","import './VIcon.scss';\nimport {\n defineComponent,\n PropType,\n computed,\n CSSProperties,\n VNodeChild,\n VNodeProps,\n} from 'vue';\nimport { createPropsOptions, ExtractPropInput } from '@fastkit/vue-utils';\nimport type { IconName } from '@fastkit/icon-font';\n\nexport type { IconName } from '@fastkit/icon-font';\nexport { ICON_NAMES } from '@fastkit/icon-font';\n\ntype IconPropInout = ExtractPropInput<typeof iconProps>;\n\ntype IconGenerator = (input: IconPropInout) => VNodeChild;\n\ntype EmptyIconSymbol = '$empty';\n\ntype ToggleableIconHook = (gen: IconGenerator, ctx: boolean) => VNodeChild;\n\nexport type RawIconProp = IconName | EmptyIconSymbol | ToggleableIconHook;\n\n// export function toRawIconProp<T = void>(\n// prop: RawIconProp<T>,\n// payload: () => T,\n// ): RawIconProp {\n// if (!prop || typeof prop !== 'function') {\n// return prop;\n// }\n// const fn = (gen: IconGenerator): VNodeChild => {\n// const t = payload();\n// return prop(gen, t);\n// };\n// return fn;\n// }\n\n// export const rawRawIconProp = [String, Function] as PropType<RawIconProp>;\nconst _rawIconProp = [String, Function];\n\nexport function rawIconProp() {\n return _rawIconProp as PropType<RawIconProp>;\n}\n\nexport function resolveRawIconProp(\n payload: boolean,\n prop?: RawIconProp,\n extraProps?: Record<string, unknown> & VNodeProps,\n): VNodeChild {\n if (!prop) return;\n\n return typeof prop === 'function' ? (\n prop(\n (input: IconPropInout) => <VIcon {...input} {...(extraProps as any)} />,\n payload,\n )\n ) : (\n <VIcon {...(extraProps as any)} name={prop} />\n );\n}\n\nexport const iconProps = createPropsOptions({\n name: {\n type: String as PropType<IconName | EmptyIconSymbol>,\n required: true,\n },\n rotate: {\n type: Number,\n },\n});\n\nexport const VIcon = defineComponent({\n name: 'VIcon',\n props: {\n ...iconProps,\n },\n emits: {} as {\n click: (ev: PointerEvent) => true;\n },\n setup(props, ctx) {\n const iconName = computed(() => props.name);\n const clickable = computed(\n () => typeof (ctx.attrs as any).onClick !== 'undefined',\n );\n const classes = computed(() => [\n {\n 'v-icon--clickable': clickable.value,\n },\n ]);\n\n const iconAttrs = computed(() => {\n const attrs: {\n class: any;\n style?: CSSProperties;\n } = {\n class: ['v-icon__body icon', `icon-${iconName.value}`],\n };\n const { rotate } = props;\n if (rotate) {\n attrs.style = {\n transform: `rotate(${rotate}deg)`,\n };\n }\n return attrs;\n });\n\n return () => (\n <span class={[`v-icon notranslate`, classes.value]}>\n <i {...iconAttrs.value} />\n </span>\n );\n },\n});\n","import './VMenu.scss';\n\nimport { defineMenuComponent } from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\n\nconst colorProps = colorSchemeProps();\n\nexport const VMenu = defineMenuComponent({\n name: 'VMenu',\n attrs: {\n class: 'v-menu',\n },\n props: {\n ...colorProps,\n },\n setup(ctx) {\n const color = useColorClasses(ctx.props, { useRootThemeDefault: true });\n\n ctx.setupContext.expose({\n menu: ctx,\n });\n\n return (children) => (\n <div class={['v-menu__body', color.colorClasses.value]} {...ctx.attrs}>\n {children}\n </div>\n );\n },\n});\n","import './VTooltip.scss';\n\nimport { defineComponent } from 'vue';\nimport { typedSlotWithCtx } from '@fastkit/vue-utils';\nimport { VMenu } from '../VMenu';\n\nexport const VTooltip = defineComponent({\n name: 'VTooltip',\n inheritAttrs: false,\n setup(_props, ctx) {\n return () => {\n const attrs = {\n ...ctx.attrs,\n };\n\n const defaultSlot = ctx.slots.default;\n if (attrs.openOnHover == null) {\n attrs.openOnHover = true;\n }\n if (attrs.openDelay == null) {\n attrs.openDelay = 200;\n }\n if (attrs.hideOnScroll == null) {\n attrs.hideOnScroll = true;\n }\n\n return (\n <VMenu\n {...attrs}\n scrollLock={false}\n class=\"v-tooltip\"\n v-slots={{\n ...ctx.slots,\n default: typedSlotWithCtx(VMenu, 'default', (payload) => [\n <span class=\"v-tooltip__inner\">{defaultSlot?.(payload)}</span>,\n ]),\n }}\n />\n );\n };\n },\n}) as typeof VMenu;\n","import './VFormControl.scss';\nimport { computed, defineComponent, VNodeChild } from 'vue';\nimport {\n createFormNodeWrapperSettings,\n useFormNodeWrapper,\n FormNodeWrapperSlots,\n FormNodeWrapper,\n RequiredChipSource,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, typedSlotsWithCtx } from '@fastkit/vue-utils';\nimport { useVuiColorProvider, useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { VIcon } from '../VIcon';\nimport { VTooltip } from '../VTooltip';\n\nconst { props, emits } = createFormNodeWrapperSettings();\n\nexport function createRequiredChipRenderer(\n required: () => boolean,\n props: {\n requiredChip?: RequiredChipSource;\n },\n vui: VuiService = useVui(),\n) {\n return () => {\n if (!required()) return;\n let chip: VNodeChild;\n const { requiredChip } = props;\n if (requiredChip === false) return;\n if (requiredChip) {\n if (typeof requiredChip === 'string') {\n chip = requiredChip;\n } else if (typeof requiredChip === 'function') {\n chip = requiredChip();\n }\n }\n if (chip === undefined) {\n chip = vui.getRequiredChip();\n }\n return chip;\n };\n}\n\nconst slots = defineSlots<\n FormNodeWrapperSlots & {\n default?: (formNodeWrapper: FormNodeWrapper) => any;\n }\n>();\n\nexport const VFormControl = defineComponent({\n name: 'VFormControl',\n props: {\n ...props,\n ...slots(),\n error: Boolean,\n },\n emits,\n slots,\n\n setup(props, ctx) {\n const vui = useVui();\n const control = useFormNodeWrapper(props, ctx, {\n hinttipPrepend: () => (\n <VIcon\n class=\"v-form-control__label__hinttip__icon\"\n name={vui.icon('hinttip')}\n />\n ),\n });\n\n const hinttipDelay = computed(() => {\n let { hinttipDelay } = control;\n if (hinttipDelay == null) {\n hinttipDelay = vui.setting('hinttipDelay');\n }\n if (hinttipDelay == null) {\n hinttipDelay = 500;\n }\n return hinttipDelay;\n });\n\n ctx.expose({\n control,\n });\n\n const colorProvider = useVuiColorProvider();\n\n const classes = computed(() => [\n 'v-form-control',\n {\n 'v-form-control--validating': control.validating,\n 'v-form-control--pending': control.pending,\n 'v-form-control--focused': control.focused,\n 'v-form-control--dirty': control.dirty,\n 'v-form-control--pristine': control.pristine,\n 'v-form-control--disabled': control.isDisabled,\n 'v-form-control--readonly': control.isReadonly,\n 'v-form-control--touched': control.touched,\n 'v-form-control--untouched': control.untouched,\n 'v-form-control--invalid': control.invalid,\n 'v-form-control--valid': control.valid,\n },\n colorProvider.className(\n props.error\n ? 'error'\n : control.invalid && !control.isReadonly\n ? 'error'\n : 'primary',\n ),\n ]);\n\n const getRequiredChip = createRequiredChipRenderer(\n () => control.isRequired,\n props,\n vui,\n );\n\n const handleClick = (ev: PointerEvent) =>\n ctx.emit('clickLabel', ev, control);\n\n return () => {\n const label = control.renderLabel();\n const message = control.renderMessage();\n const appends = control.renderInfoAppends();\n const hinttip = control.renderHinttip();\n const _hinttipDelay = hinttipDelay.value;\n\n return (\n <div class={classes.value}>\n {label && (\n <label class=\"v-form-control__label\" onClick={handleClick}>\n {label}\n {getRequiredChip()}\n {hinttip && (\n <VTooltip\n y=\"top\"\n openOnHover={_hinttipDelay !== 'click'}\n openDelay={\n typeof _hinttipDelay === 'number'\n ? _hinttipDelay\n : undefined\n }\n v-slots={typedSlotsWithCtx(VTooltip, {\n activator: (tooltip) => (\n <a\n class=\"v-form-control__label__hinttip\"\n href=\"javascript:void(0)\"\n {...tooltip.attrs}>\n {hinttip.tip}\n </a>\n ),\n })}>\n <div class=\"v-form-control__label__hinttip__hint\">\n {hinttip.hint}\n </div>\n </VTooltip>\n )}\n </label>\n )}\n <div class=\"v-form-control__body\">\n {ctx.slots.default?.(control)}\n {!props.hiddenInfo && (\n <div class=\"v-form-control__info\">\n {!!message && (\n <div class=\"v-form-control__message\">{message}</div>\n )}\n {!!appends && (\n <div class=\"v-form-control__appends\">{appends}</div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n };\n },\n});\n","import './form-selector.scss';\nimport { VNodeChild, defineComponent, PropType, computed } from 'vue';\nimport {\n createFormNodeWrapperProps,\n createFormSelectorSettings,\n FormNodeWrapperSlots,\n useFormSelectorControl,\n FormSelectorControl,\n ResolvedFormSelectorItem,\n FormNodeControl,\n} from '@fastkit/vue-form-control';\nimport {\n withCtx,\n defineSlots,\n TypedSlot,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n} from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from './control';\nimport { VFormControl } from '../components/VFormControl';\nimport { useVui } from '../injections';\nimport { VProgressCircular } from '../components/loading';\nimport { CONTROL_LOADING_SPINNER_SIZES } from '../schemes';\n\nexport interface DefineFormSelectorComponentOptions {\n name: string;\n defaultMultiple?: boolean;\n nodeType: string;\n className: string;\n itemRenderer: (ctx: {\n control: FormSelectorControl;\n selected: boolean;\n attrs: ResolvedFormSelectorItem & {\n modelValue: boolean;\n key: string | number;\n };\n slots: {\n default: TypedSlot<FormNodeControl>;\n };\n }) => VNodeChild;\n}\n\nconst slots = defineSlots<\n FormNodeWrapperSlots & {\n default?: () => any;\n }\n>();\n\nexport function defineFormSelectorComponent(\n opts: DefineFormSelectorComponentOptions,\n) {\n const { itemRenderer, defaultMultiple, nodeType, className } = opts;\n const { props, emits } = createFormSelectorSettings({\n defaultMultiple,\n });\n\n return defineComponent({\n name: opts.name,\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlProps(),\n stacked: {\n type: Boolean,\n default: true,\n },\n // eslint-disable-next-line vue/require-prop-types\n loadingMessage: {} as PropType<VNodeChildOrSlot>,\n // eslint-disable-next-line vue/require-prop-types\n failedToLoadItemsMessage: {} as PropType<VNodeChildOrSlot>,\n ...slots(),\n },\n emits,\n slots,\n setup(props, ctx) {\n const selectorControl = useFormSelectorControl(props, ctx, {\n nodeType,\n defaultMultiple,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-form-selector',\n className,\n {\n ...control.classes.value,\n 'v-form-selector--stacked': props.stacked,\n },\n ]);\n const vui = useVui();\n const loadingMessageRef = computed<VNodeChild | undefined>(() => {\n const slot = resolveVNodeChildOrSlots(\n props.loadingMessage,\n vui.setting('loadingMessage'),\n 'Loading...',\n );\n return slot && slot(vui);\n });\n const failedToLoadItemsMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.failedToLoadItemsMessage,\n vui.setting('failedToLoadDataMessage'),\n 'Failed to load data.',\n );\n return slot && slot(vui);\n });\n\n const defaultSlot = () => (\n <div class=\"v-form-selector__body\">\n {selectorControl.itemsLoadFailed && (\n <div\n key=\"failed\"\n class=\"v-form-selector__placeholder v-form-selector__placeholder--error\">\n {failedToLoadItemsMessageRef.value}\n </div>\n )}\n {selectorControl.itemsLoading && (\n <div key=\"loading\" class=\"v-form-selector__placeholder\">\n <VProgressCircular\n indeterminate\n class=\"mr-1\"\n size={CONTROL_LOADING_SPINNER_SIZES[control.size.value || 'md']}\n />\n\n {loadingMessageRef.value}\n </div>\n )}\n {selectorControl.propGroups.map((group) => {\n const { items } = group;\n return (\n <>\n {items.map((attrs) => {\n const selected = selectorControl.isSelected(attrs.value);\n return itemRenderer({\n selected,\n control: selectorControl,\n attrs: {\n ...attrs,\n modelValue: selected,\n key: attrs.value,\n },\n slots: {\n default: () => attrs.label(selectorControl),\n },\n });\n })}\n </>\n );\n })}\n {ctx.slots.default?.()}\n </div>\n );\n\n ctx.expose({\n control: selectorControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={selectorControl}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n error={selectorControl.itemsLoadFailed}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n }}\n />\n );\n },\n });\n}\n","import { PropType, ExtractPropTypes, computed } from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport { VuiElevationValue } from '../schemes';\n\nexport function createElevationProps() {\n return createPropsOptions({\n elevation: Number as PropType<VuiElevationValue>,\n });\n}\n\nexport type ElevationProps = ExtractPropTypes<\n ReturnType<typeof createElevationProps>\n>;\n\nexport interface UseElevationOptions {\n defaultValue?: VuiElevationValue;\n}\n\nexport function useElevation(\n props: ElevationProps,\n opts: UseElevationOptions = {},\n) {\n const elevationValue = computed(() =>\n props.elevation == null ? opts.defaultValue : props.elevation,\n );\n const elevationClassName = computed(() => {\n const v = elevationValue.value;\n return v == null ? undefined : `elevation-${v}`;\n });\n return {\n elevationValue,\n elevationClassName,\n };\n}\n","import './VDialog.scss';\n\nimport {\n defineDialogComponent,\n createStackActionProps,\n useStackAction,\n} from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\nconst colorProps = colorSchemeProps();\n\nexport const VDialog = defineDialogComponent({\n name: 'VDialog',\n props: {\n ...createStackActionProps(),\n ...colorProps,\n dense: Boolean,\n },\n setup(ctx) {\n const { props, control } = ctx;\n const vui = useVui();\n const actionControl = useStackAction(props, control, {\n resolver: (actions) => {\n if (actions.length === 0) {\n return [vui.stackAction('close')];\n }\n return actions;\n },\n });\n const color = useColorClasses(props, { useRootThemeDefault: true });\n\n return (children) => {\n const { $actions } = actionControl;\n return (\n <div\n class={[\n 'v-dialog',\n color.colorClasses.value,\n props.dense && 'v-dialog--dense',\n ]}>\n <div class=\"v-dialog__body\">{children}</div>\n {$actions.length > 0 && (\n <div class=\"v-dialog__actions\">{$actions}</div>\n )}\n </div>\n );\n };\n },\n});\n","import './VSnackbar.scss';\n\nimport {\n defineSnackbarComponent,\n createStackActionProps,\n useStackAction,\n} from '@fastkit/vue-stack';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\nconst colorProps = colorSchemeProps();\n\nexport const VSnackbar = defineSnackbarComponent({\n name: 'VSnackbar',\n props: {\n ...createStackActionProps(),\n ...colorProps,\n },\n setup(ctx) {\n const { props, control } = ctx;\n const vui = useVui();\n const actionControl = useStackAction(props, control, {\n resolver: (actions) => {\n if (actions.length === 0) {\n return [vui.stackAction('close')];\n }\n return actions;\n },\n });\n const color = useColorClasses(props, { useRootThemeDefault: true });\n\n return (children) => {\n const { $actions } = actionControl;\n return (\n <div class={['v-snackbar', color.colorClasses.value]} {...ctx.attrs}>\n <div class=\"v-snackbar__inner\">\n <div class=\"v-snackbar__body\">{children}</div>\n {$actions.length > 0 && (\n <div class=\"v-snackbar__actions\">{$actions}</div>\n )}\n </div>\n </div>\n );\n };\n },\n});\n","import './VSheetModal.scss';\nimport { defineComponent, PropType, VNodeChild, computed } from 'vue';\nimport {\n createStackableDefine,\n VStackSlots,\n VStackControl,\n useStackControl,\n} from '@fastkit/vue-stack';\n\nconst { props, emits } = createStackableDefine({\n defaultTransition: 'v-sheet-modal',\n defaultFocusTrap: true,\n defaultFocusRestorable: true,\n defaultScrollLock: true,\n});\n\nexport interface VSheetModalSlots extends VStackSlots {\n header?: (control: VStackControl) => VNodeChild;\n}\n\nexport const sheetModalProps = {\n ...props,\n header: Function as PropType<(control: VStackControl) => VNodeChild>,\n 'v-slots': undefined as unknown as PropType<VSheetModalSlots>,\n};\n\nconst SHEET_STACK_TYPE = Symbol('VSheetModal');\n\nexport const VSheetModal = defineComponent({\n name: 'VSheetModal',\n inheritAttrs: false,\n props: sheetModalProps,\n emits,\n setup(props, ctx) {\n const stackControl = useStackControl(props, ctx, {\n stackType: SHEET_STACK_TYPE,\n });\n const hasActiveChild = computed(() => {\n const myIndex = stackControl.zIndex;\n const stacks = stackControl.$service\n .getActiveStacks()\n .filter((stack) => stack.stackType === SHEET_STACK_TYPE);\n return stacks.some((stack) => stack.zIndex > myIndex);\n });\n return {\n stackControl,\n hasActiveChild,\n };\n },\n render() {\n const { render } = this.stackControl;\n const headerSlot = this.$slots.header || this.header;\n return render((children) => (\n <div\n class={[\n 'v-sheet-modal',\n {\n 'v-sheet-modal--has-active-child': this.hasActiveChild,\n },\n ]}\n tabindex=\"0\">\n {headerSlot && (\n <div class=\"v-sheet-modal__header\">\n {headerSlot(this.stackControl)}\n </div>\n )}\n <div class=\"v-sheet-modal__scroller\">{children}</div>\n </div>\n ));\n },\n});\n","import './VSkeltonLoaderBone.scss';\n\nimport { defineComponent } from 'vue';\n\nexport const VSkeltonLoaderBone = defineComponent({\n name: 'VSkeltonLoaderBone',\n inheritAttrs: false,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n },\n setup(props, ctx) {\n return () => {\n const TagName = props.tag as 'div';\n return (\n <TagName {...ctx.attrs} class=\"v-skelton-loader-bone\">\n {ctx.slots.default?.()}\n </TagName>\n );\n };\n },\n});\n","import './VDisabledReason.scss';\nimport {\n type PropType,\n type ExtractPublicPropTypes,\n type VNodeChild,\n} from 'vue';\nimport {\n defineDisabledReasonComponent,\n DISABLED_REASON_BASE_PROPS,\n} from '@fastkit/vue-disabled-reason';\nimport { createMenuProps } from '@fastkit/vue-stack';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport {\n registerActionableAttrsResolver,\n registerActionableRenderWrapper,\n type ActionableCustomProps as _ActionableCustomProps,\n} from '@fastkit/vue-action';\nimport { VTooltip } from '../VTooltip';\n\nconst menuProps = createMenuProps();\n\n/**\n * Display type\n *\n * Currently, only tooltip is supported\n */\nexport type DisabledReasonType = 'tooltip';\n\nexport const DISABLED_REASON_PROPS = {\n ...menuProps,\n ...createPropsOptions({\n /**\n * Display type\n *\n * Currently, only tooltip is supported\n *\n * @see {@link DisabledReasonType}\n */\n type: {\n type: String as PropType<DisabledReasonType>,\n default: 'tooltip' satisfies DisabledReasonType,\n },\n }),\n};\n\nexport interface DisabledReasonInput extends ExtractPublicPropTypes<\n typeof DISABLED_REASON_PROPS & typeof DISABLED_REASON_BASE_PROPS\n> {}\n\nexport const VDisabledReason = defineDisabledReasonComponent({\n name: 'VDisabledReason',\n props: DISABLED_REASON_PROPS,\n setup(api) {\n return (reason) => {\n const { type: _type, ...tooltipProps } = api.props;\n return (\n <VTooltip\n {...tooltipProps}\n disabled={!reason || !api.disabled}\n v-slots={{\n activator: ({ attrs }) => (\n <span\n class=\"v-disabled-reason\"\n // If tabindex is 0 or greater, enable pointer-events via CSS\n tabindex={api.disabled ? 0 : -1}\n {...attrs}\n />\n ),\n default: () => reason,\n }}\n />\n );\n };\n },\n});\n\n// Customize '@fastkit/vue-action' so that when the custom attribute\n// \"disabledReason\" is set, it wraps the element with `VDisabledReason`\n// to display the reason for being disabled.\n\n// 1. Extend the '@fastkit/vue-action' interface\ndeclare module '@fastkit/vue-action' {\n interface ActionableCustomProps {\n /**\n * Reason why this element is disabled.\n *\n * If set, hovering over the disabled element will display the reason\n * using `VDisabledReason`.\n */\n disabledReason: PropType<string | (() => VNodeChild) | DisabledReasonInput>;\n }\n}\n\n// 2. Handle `disabledReason` as a custom attribute of '@fastkit/vue-action'\nregisterActionableAttrsResolver((attrs, ctx) => {\n const disabledReason = ctx.getAttr('disabledReason');\n if (disabledReason) {\n // Remove disabledReason from the original attrs\n // (to prevent adding unnecessary attributes to the element)\n delete attrs.disabledReason;\n return [\n undefined,\n {\n disabledReason,\n },\n ];\n }\n});\n\n// 3. Register a custom render wrapper for '@fastkit/vue-action'\nregisterActionableRenderWrapper((customProps, currentNode) => {\n const { disabledReason } = customProps;\n const disabledReasonInput =\n typeof disabledReason === 'string' || typeof disabledReason === 'function'\n ? { reason: disabledReason }\n : disabledReason;\n\n if (disabledReasonInput) {\n return (\n <VDisabledReason {...disabledReasonInput}>{currentNode}</VDisabledReason>\n );\n }\n return currentNode;\n});\n","import './VBusyImage.scss';\n\nimport {\n defineComponent,\n HTMLAttributes,\n ImgHTMLAttributes,\n PropType,\n computed,\n ref,\n watch,\n onMounted,\n onBeforeUnmount,\n CSSProperties,\n} from 'vue';\nimport { IN_WINDOW } from '@fastkit/helpers';\nimport { loadImage } from '@fastkit/dom';\nimport { defineSlots } from '@fastkit/vue-utils';\n\nexport declare type ImgHTMLAttributesPropOptions = {\n [K in keyof ImgHTMLAttributes]-?: PropType<ImgHTMLAttributes[K]>;\n};\n\nconst IMAGE_ATTRS = [\n 'alt',\n 'crossorigin',\n 'decoding',\n 'sizes',\n 'src',\n 'srcset',\n 'usemap',\n] as const;\n\nexport function splitAttrs(attrs: ImgHTMLAttributes): {\n el: HTMLAttributes;\n img: ImgHTMLAttributes;\n} {\n const el: HTMLAttributes = { ...attrs };\n const img: ImgHTMLAttributes = {};\n\n for (const ATTR of IMAGE_ATTRS) {\n const value = attrs[ATTR];\n if (value != null) {\n img[ATTR] = value as any;\n }\n }\n\n return {\n el,\n img,\n };\n}\n\nexport type BusyImageLoadState = 'pending' | 'loading' | 'loaded' | 'error';\n\nexport type BusyImageSizeValue = number | string;\n\nconst NUMBERISH_PROP = [Number, String] as PropType<BusyImageSizeValue>;\n\nconst DEFAULT_HEIGHT = 150;\n\nconst resolveBusyImageSizeValue = (\n source?: BusyImageSizeValue,\n): string | undefined => {\n if (source == null) return;\n return isNaN(source as number) ? String(source) : `${source}px`;\n};\n\nexport interface BusyImageRect {\n width?: string;\n height?: string;\n}\n\nexport interface BusyImageRects {\n placeholder: BusyImageRect;\n main: BusyImageRect;\n}\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\n/**\n * 画像表示用コンポーネント\n * <img /> タグのように振る舞うが、ローディング表示や、表示サイズの調整など、ちょっといい感じにやるためのコンポーネント\n */\nexport const VBusyImage = defineComponent({\n name: 'VBusyImage',\n props: {\n ...(undefined as unknown as ImgHTMLAttributesPropOptions),\n aspectRatio: String,\n width: NUMBERISH_PROP,\n height: NUMBERISH_PROP,\n cover: Boolean,\n ...slots(),\n },\n emits: {\n load: (ev: Event) => true,\n error: (ev: Event) => true,\n },\n slots,\n setup(props, ctx) {\n const loadStateRef = ref<BusyImageLoadState>(\n props.cover && isAvailableSrc(ctx.attrs.src as any)\n ? 'loading'\n : 'pending',\n );\n const attrsRef = computed(() => splitAttrs(ctx.attrs));\n const isPendingRef = computed(() => loadStateRef.value === 'pending');\n const isLoadingRef = computed(() => loadStateRef.value === 'loading');\n const isLoadedRef = computed(() => loadStateRef.value === 'loaded');\n const isErrorRef = computed(() => loadStateRef.value === 'error');\n const classesRef = computed(() => [\n `v-busy-image--${loadStateRef.value}`,\n {\n 'v-busy-image--cover': props.cover,\n 'v-busy-image--clickable': typeof ctx.attrs.onClick === 'function',\n },\n ]);\n const nodeRef = ref<HTMLImageElement>();\n const coverImageRef = ref<HTMLImageElement>();\n const rectsRef = computed<BusyImageRects>(() => {\n const placeholder: BusyImageRect = {};\n const main: BusyImageRect = {};\n const { cover } = props;\n let { width, height } = props;\n\n if (height == null && cover) {\n height = DEFAULT_HEIGHT;\n }\n\n if (width == null && cover) {\n width = height;\n }\n\n width = resolveBusyImageSizeValue(width);\n height = resolveBusyImageSizeValue(height);\n\n main.width = width;\n main.height = height;\n\n placeholder.width = width;\n placeholder.height = height;\n\n if (placeholder.height == null) {\n placeholder.height = resolveBusyImageSizeValue(DEFAULT_HEIGHT);\n }\n\n if (placeholder.width == null) {\n placeholder.width = placeholder.height;\n }\n\n return {\n placeholder,\n main,\n };\n });\n\n const currentRectRef = computed<BusyImageRect>(() =>\n isLoadedRef.value ? rectsRef.value.main : rectsRef.value.placeholder,\n );\n\n const stylesRef = computed<CSSProperties>(() => {\n const { value: coverImage } = coverImageRef;\n const coverSrc = coverImage && coverImage.src;\n const styles: CSSProperties = {\n ...currentRectRef.value,\n };\n if (coverSrc) {\n styles.backgroundImage = `url(${coverSrc})`;\n }\n return styles;\n });\n\n let booted = false;\n const mounted = ref(false);\n\n watch(\n () =>\n [ctx.attrs.src as string | null | undefined, mounted.value] as const,\n ([src, _mounted], before) => {\n if (!_mounted) return;\n if (src === before?.[0] && !props.cover && !isPendingRef.value) return;\n\n coverImageRef.value = undefined;\n if (isAvailableSrc(src)) {\n loadStateRef.value = 'loading';\n if (props.cover) {\n loadImage(src)\n .then((image) => {\n coverImageRef.value = image;\n setManualState('load');\n })\n .catch((_err) => {\n setManualState('error');\n // eslint-disable-next-line no-console\n console.error(_err);\n });\n }\n } else {\n loadStateRef.value = 'pending';\n }\n },\n { immediate: IN_WINDOW },\n );\n\n const setManualState = (loadType: 'load' | 'error') => {\n loadStateRef.value = loadType === 'load' ? 'loaded' : 'error';\n\n const ev = new Event(loadType, {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n\n ctx.emit(loadType as any, ev);\n };\n\n onMounted(() => {\n mounted.value = true;\n if (booted || props.cover) return;\n\n const image = nodeRef.value;\n if (!image) return;\n\n const loadType = imageIsReady(image);\n\n if (loadType) {\n setManualState(loadType);\n }\n });\n\n onBeforeUnmount(() => {\n coverImageRef.value = undefined;\n });\n\n const handleLoad = (ev: Event) => {\n booted = true;\n loadStateRef.value = 'loaded';\n ctx.emit('load', ev);\n };\n\n const handleError = (ev: Event) => {\n booted = true;\n loadStateRef.value = 'error';\n ctx.emit('error', ev);\n };\n\n ctx.expose({\n state: loadStateRef,\n isPending: isPendingRef,\n isLoading: isLoadingRef,\n isLoaded: isLoadedRef,\n isError: isErrorRef,\n });\n\n return () => {\n const { el: elAttrs, img: imgAttrs } = attrsRef.value;\n const styles = stylesRef.value;\n const children = ctx.slots.default?.();\n\n return (\n <span\n class={['v-busy-image', classesRef.value]}\n {...elAttrs}\n style={styles}>\n {!props.cover && (\n <img\n key=\"img\"\n ref={nodeRef}\n class=\"v-busy-image__node\"\n {...imgAttrs}\n onLoad={handleLoad}\n onError={handleError}\n />\n )}\n {!!children && <span class=\"v-busy-image__slot\">{children}</span>}\n </span>\n );\n };\n },\n});\n\nfunction imageIsReady(image: HTMLImageElement): 'load' | 'error' | false {\n if (!image.complete) return false;\n return image.naturalWidth + image.naturalHeight > 0 ? 'load' : 'error';\n}\n\nfunction isAvailableSrc(src: string | null | undefined): src is string {\n return typeof src === 'string' && src !== '';\n}\n","import { PropType } from 'vue';\nimport { MediaMatchKey } from '@fastkit/media-match';\n\nexport type RawGridValue<T extends number | string = number | string> =\n T | Partial<Record<MediaMatchKey, T>> | undefined;\n\nexport type RawGridValueProp<T extends number | string = number | string> =\n PropType<RawGridValue<T>>;\n\nexport function extractRawGridValueClasses<\n T extends number | string = number | string,\n>(\n value: NonNullable<RawGridValue<T>>,\n prefix: string,\n getter?: (value: T) => string,\n): string | string[] {\n if (typeof value !== 'object')\n return `${prefix}${getter ? getter(value) : value}`;\n return Object.entries(value).map(\n ([breakpoint, breakpointValue]) =>\n `${prefix}${\n getter ? getter(breakpointValue) : breakpointValue\n }--${breakpoint}`,\n );\n}\n\n// export const DEFAULT_MEDIA_MATCH_KEY = MEDIA_MATCH_CONDITIONS[0].key;\n","import './VGridItem.scss';\n\nimport { defineComponent, computed } from 'vue';\nimport { RawGridValueProp, extractRawGridValueClasses } from './schemes';\n\nexport type GridItemNumberSizeValue =\n 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport type GridItemSizeValue = GridItemNumberSizeValue | 'auto';\n\n// type MQSizeProps = Record<\n// MediaMatchKey,\n// PropType<GridItemSizeValue | undefined>\n// >;\n\nexport type GridItemAlignValue =\n | 'flex-start'\n | 'flex-end'\n | 'start'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'center'\n | 'self-start'\n | 'self-end';\n\nexport type GridItemJustifyValue =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'stretch';\n\nexport const VGridItem = defineComponent({\n name: 'VGridItem',\n inheritAttrs: false,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n // ...(undefined as unknown as MQSizeProps),\n size: undefined as unknown as RawGridValueProp<GridItemSizeValue>,\n align: undefined as unknown as RawGridValueProp<GridItemAlignValue>,\n justify: undefined as unknown as RawGridValueProp<GridItemJustifyValue>,\n order: undefined as unknown as RawGridValueProp<number | string>,\n },\n setup(props, ctx) {\n const data = computed(() => {\n const classes: any[] = [];\n\n const attrs = {\n ...ctx.attrs,\n };\n\n const { size, align, justify, order } = props;\n\n delete attrs.size;\n delete attrs.align;\n delete attrs.justify;\n delete attrs.order;\n\n size != null &&\n classes.push(extractRawGridValueClasses(size, 'grid-size-'));\n align && classes.push(extractRawGridValueClasses(align, 'self-align-'));\n justify &&\n classes.push(extractRawGridValueClasses(justify, 'self-justify-'));\n order != null &&\n classes.push(extractRawGridValueClasses(order, 'order-'));\n\n // MEDIA_MATCH_CONDITIONS.forEach(({ key }) => {\n // const v = attrs[key];\n // delete attrs[key];\n // if (v != null) {\n // classes.push(`grid-size-${v}--${key}`);\n // }\n // });\n\n return {\n classes,\n attrs,\n };\n });\n\n return () => {\n const TagName = props.tag as 'div';\n const { classes, attrs } = data.value;\n\n return (\n <TagName\n class={['v-grid-item grid-item', classes]}\n {...attrs}\n v-slots={ctx.slots}\n />\n );\n };\n },\n});\n","import './VGridContainer.scss';\n\nimport { defineComponent, computed } from 'vue';\nimport { RawGridValueProp, extractRawGridValueClasses } from './schemes';\n\nexport type GridContainerSpacingValue =\n | 0\n | 0.5\n | 1\n | 1.5\n | 2\n | 2.5\n | 3\n | 3.5\n | 4\n | 4.5\n | 5\n | 5.5\n | 6\n | 6.5\n | 7\n | 7.5\n | 8\n | 8.5\n | 9\n | 9.5\n | 10;\n\nfunction spacingValueToString(value: GridContainerSpacingValue): string {\n return Number.isInteger(value) ? String(value) : `${value}h`;\n}\n\nexport type GridContainerDirectionValue =\n 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nexport type GridContainerWrapValue = 'wrap' | 'nowrap' | 'wrap-reverse';\n\nexport type GridContainerAlignContentValue =\n | 'flex-start'\n | 'flex-end'\n | 'start'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'center'\n | 'self-start'\n | 'self-end';\n\nexport type GridContainerJustifyContentValue =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n | 'stretch';\n\nexport const VGridContainer = defineComponent({\n name: 'VGridContainer',\n inheritAttrs: false,\n props: {\n wrapperTag: {\n type: String,\n default: 'div',\n },\n tag: {\n type: String,\n default: 'div',\n },\n spacing:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n spacingX:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n spacingY:\n undefined as unknown as RawGridValueProp<GridContainerSpacingValue>,\n direction:\n undefined as unknown as RawGridValueProp<GridContainerDirectionValue>,\n wrap: undefined as unknown as RawGridValueProp<GridContainerWrapValue>,\n alignContent:\n undefined as unknown as RawGridValueProp<GridContainerAlignContentValue>,\n justifyContent:\n undefined as unknown as RawGridValueProp<GridContainerJustifyContentValue>,\n },\n setup(props, ctx) {\n const data = computed(() => {\n const classes: any[] = [];\n\n const attrs = {\n ...ctx.attrs,\n };\n\n const {\n spacing,\n spacingX,\n spacingY,\n direction,\n wrap,\n alignContent,\n justifyContent,\n } = props;\n const wrapperClass = attrs.class;\n const wrapperStyle = attrs.style as any;\n\n delete attrs.class;\n delete attrs.style;\n delete attrs.spacing;\n delete attrs.spacingX;\n delete attrs.spacingY;\n delete attrs.direction;\n delete attrs.wrap;\n delete attrs.alignContent;\n delete attrs.justifyContent;\n\n // spacingX = mergeSpacing(spacing, spacingX);\n // spacingY = mergeSpacing(spacing, spacingY);\n // if (!spacingX) {\n // spacingX = spacing;\n // }\n\n // align &&\n // classes.push(extractRawGridItemValueClasses(align, 'self-align-'));\n // justify &&\n // classes.push(extractRawGridItemValueClasses(justify, 'self-justify-'));\n spacing != null &&\n classes.push(\n extractRawGridValueClasses(\n spacing,\n 'grid-spacing-',\n spacingValueToString,\n ),\n );\n spacingX != null &&\n classes.push(\n extractRawGridValueClasses(\n spacingX,\n 'grid-spacing-x-',\n spacingValueToString,\n ),\n );\n spacingY != null &&\n classes.push(\n extractRawGridValueClasses(\n spacingY,\n 'grid-spacing-y-',\n spacingValueToString,\n ),\n );\n\n direction &&\n classes.push(extractRawGridValueClasses(direction, 'direction-'));\n wrap && classes.push(extractRawGridValueClasses(wrap, ''));\n alignContent &&\n classes.push(extractRawGridValueClasses(alignContent, 'align-'));\n justifyContent &&\n classes.push(extractRawGridValueClasses(justifyContent, 'justify-'));\n\n return {\n wrapperClass,\n wrapperStyle,\n classes,\n attrs,\n };\n });\n\n return () => {\n const WrapperTag = props.wrapperTag as 'div';\n const TagName = props.tag as 'div';\n const { wrapperClass, wrapperStyle, classes, attrs } = data.value;\n\n return (\n <WrapperTag\n class={['v-grid-container-wrapper', wrapperClass]}\n style={wrapperStyle}>\n <TagName\n class={['v-grid-container grid-container', classes]}\n {...attrs}\n v-slots={ctx.slots}\n />\n </WrapperTag>\n );\n };\n },\n});\n","import './VPaper.scss';\nimport { defineComponent, computed, PropType, VNodeProps } from 'vue';\nimport { renderSlotOrEmpty, defineSlots } from '@fastkit/vue-utils';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { createElevationProps, useElevation } from '../../composables';\n\nexport const paperBaseSlots = defineSlots<{\n header?: () => void;\n default?: () => void;\n footer?: () => void;\n}>();\n\nexport function createPaperBaseProps() {\n return {\n color: String as PropType<ScopeName>,\n tag: {\n type: [String, Object] as PropType<any>,\n default: 'div',\n },\n ...paperBaseSlots(),\n };\n}\n\ntype ARGS = Record<string, unknown> & VNodeProps;\n\nexport function createPaperProps() {\n return {\n ...createElevationProps(),\n ...createPaperBaseProps(),\n square: Boolean,\n headerProps: Object as PropType<ARGS>,\n bodyProps: Object as PropType<ARGS>,\n footerProps: Object as PropType<ARGS>,\n innerClass: [String, Array, Object] as PropType<any>,\n };\n}\n\nexport const VPaper = defineComponent({\n name: 'VPaper',\n inheritAttrs: false,\n props: createPaperProps(),\n slots: paperBaseSlots,\n setup(props, ctx) {\n const tag = computed(() => props.tag);\n const elevation = useElevation(props, { defaultValue: 1 });\n const scope = useScopeColorClass(props);\n const classes = computed(() => [\n elevation.elevationClassName.value,\n scope.value.className,\n {\n 'v-paper--plain': !scope.value.value,\n 'v-paper--has-color': !!scope.value.value || !!ctx.attrs.disabled,\n 'v-paper--square': props.square,\n },\n ]);\n const headerProps = computed<any>(() => props.headerProps);\n const bodyProps = computed<any>(() => props.bodyProps);\n const footerProps = computed<any>(() => props.footerProps);\n\n return () => {\n const TagName = tag.value as 'div';\n const header = renderSlotOrEmpty(ctx.slots, 'header');\n const footer = renderSlotOrEmpty(ctx.slots, 'footer');\n return (\n <TagName class={['v-paper', classes.value]} {...ctx.attrs}>\n <div class={['v-paper__inner', props.innerClass]}>\n {header && (\n <div class=\"v-paper__header\" {...headerProps.value}>\n {header}\n </div>\n )}\n <div class=\"v-paper__body\" {...bodyProps.value}>\n {ctx.slots.default?.()}\n </div>\n {footer && (\n <div class=\"v-paper__footer\" {...footerProps.value}>\n {footer}\n </div>\n )}\n </div>\n </TagName>\n );\n };\n },\n});\n","import './VAvatar.scss';\nimport { defineComponent, computed, PropType } from 'vue';\nimport { actionableInheritProps, useActionable } from '@fastkit/vue-action';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport { VBusyImage } from '../VBusyImage';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport const AVATAR_SIZES = ['sm', 'md', 'lg'] as const;\n\nexport type AvatarSize = (typeof AVATAR_SIZES)[number];\n\nexport function createAvatarProps() {\n return {\n ...colorSchemeProps(),\n ...actionableInheritProps,\n size: {\n type: [String, Number] as PropType<AvatarSize | number>,\n default: 'md',\n },\n tile: Boolean,\n rounded: Boolean,\n disabled: Boolean,\n src: String,\n };\n}\n\nexport const VAvatar = defineComponent({\n name: 'VAvatar',\n inheritAttrs: false,\n props: createAvatarProps(),\n setup(props, ctx) {\n const vui = useVui();\n const defaults = vui.setting('buttonDefault');\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () => props.variant || defaults.variant,\n });\n\n const classes = computed(() => {\n const { size } = props;\n return [\n {\n 'v-avatar--tile': props.tile,\n 'v-avatar--rounded': props.rounded,\n },\n typeof size === 'string' && `v-avatar--${size}`,\n ];\n });\n\n const styles = computed(() => {\n const { size } = props;\n if (typeof size !== 'number') return;\n\n return {\n '--avatar-size': `${size}px`,\n };\n });\n\n const actionable = useActionable(ctx, {\n attrs: () => ({\n class: ['v-avatar', classes.value, color.colorClasses.value],\n style: styles.value,\n }),\n actionableClass: () => 'v-avatar--clickable',\n linkFallbackTag: 'div',\n });\n\n return () => {\n const { src } = props;\n return actionable.render(\n (!!src && <VBusyImage class=\"v-avatar__image\" src={src} cover />) ||\n ctx.slots.default?.(),\n );\n };\n },\n});\n","import './VChip.scss';\nimport { defineComponent, computed, PropType, VNodeChild } from 'vue';\nimport { actionableInheritProps, useActionable } from '@fastkit/vue-action';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport type { IconName } from '../VIcon';\nimport { VIcon } from '../VIcon';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport const CHIP_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nexport type ChipSize = (typeof CHIP_SIZES)[number];\n\nexport type VChipIcon = () => VNodeChild;\n\nexport type RawVChipIcon = IconName | VChipIcon;\n\nexport function createChipProps() {\n return {\n ...colorSchemeProps(),\n ...actionableInheritProps,\n size: {\n type: String as PropType<ChipSize>,\n default: 'md',\n },\n startIcon: [String, Function] as PropType<RawVChipIcon>,\n endIcon: [String, Function] as PropType<RawVChipIcon>,\n label: Boolean,\n disabled: Boolean,\n };\n}\n\nfunction resolveRawVChipIcon(\n raw: RawVChipIcon | undefined,\n type: 'start' | 'end',\n): VChipIcon | undefined {\n if (!raw) return;\n if (typeof raw === 'function') {\n return () => {\n const child = raw();\n if (child == null) return;\n return (\n <span class={['v-chip__icon', `v-chip__icon--${type}`]}>{child}</span>\n );\n };\n }\n return () => (\n <VIcon class={['v-chip__icon', `v-chip__icon--${type}`]} name={raw} />\n );\n}\n\nexport const VChip = defineComponent({\n name: 'VChip',\n inheritAttrs: false,\n props: createChipProps(),\n setup(props, ctx) {\n const vui = useVui();\n const defaults = vui.setting('buttonDefault');\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () => props.variant || defaults.variant,\n });\n const startIcon = computed(() => {\n const _icon = resolveRawVChipIcon(props.startIcon, 'start');\n return _icon && _icon();\n });\n const endIcon = computed(() => {\n const _icon = resolveRawVChipIcon(props.endIcon, 'end');\n return _icon && _icon();\n });\n\n const classes = computed(() => {\n const { size } = props;\n return [\n {\n 'v-chip--label': props.label,\n },\n typeof size === 'string' && `v-chip--${size}`,\n ];\n });\n\n const actionable = useActionable(ctx, {\n attrs: () => ({\n class: ['v-chip', classes.value, color.colorClasses.value],\n }),\n actionableClass: () => 'v-chip--clickable',\n linkFallbackTag: 'div',\n });\n\n return () =>\n actionable.render([\n startIcon.value,\n <span class=\"v-chip__content\">{ctx.slots.default?.()}</span>,\n endIcon.value,\n ]);\n },\n});\n","import './VCard.scss';\nimport { defineComponent, computed } from 'vue';\nimport { actionableInheritProps, VAction } from '@fastkit/vue-action';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\nimport { VPaper, createPaperProps } from '../VPaper';\n\nexport function createCardProps() {\n return {\n ...createPaperProps(),\n ...actionableInheritProps,\n disabled: Boolean,\n };\n}\n\nexport const VCard = defineComponent({\n name: 'VCard',\n inheritAttrs: false,\n props: createCardProps(),\n setup(props, ctx) {\n const _props = computed(() => props);\n const data = computed(() => {\n const attrs = {\n ..._props.value,\n ...ctx.attrs,\n class: ['v-card', ctx.attrs.class],\n tag: VAction,\n linkFallbackTag: 'div',\n };\n if (props.disabled) {\n attrs.disabled = 'disabled' as any;\n delete (attrs as any).onClick;\n delete (attrs as any).href;\n delete (attrs as any).to;\n } else {\n delete (attrs as any).disabled;\n }\n return { attrs };\n });\n\n return () => <VPaper {...data.value.attrs} v-slots={ctx.slots} />;\n },\n});\n","import './VCardContent.scss';\nimport { defineComponent } from 'vue';\n\nexport const VCardContent = defineComponent({\n name: 'VCardContent',\n setup(_props, ctx) {\n return () => <div class=\"v-card-content\">{ctx.slots.default?.()}</div>;\n },\n});\n","import './VCardActions.scss';\nimport { defineComponent } from 'vue';\n\nexport const VCardActions = defineComponent({\n name: 'VCardActions',\n setup(_props, ctx) {\n return () => <div class=\"v-card-actions\">{ctx.slots.default?.()}</div>;\n },\n});\n","import './VButton.scss';\nimport {\n defineComponent,\n ExtractPropTypes,\n computed,\n PropType,\n VNodeChild,\n} from 'vue';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport {\n ExtractPropInput,\n createPropsOptions,\n withCtx,\n} from '@fastkit/vue-utils';\nimport { VAction, actionableInheritProps } from '@fastkit/vue-action';\nimport { useVui } from '../../injections';\nimport { createControlProps, useControl } from '../../composables';\nimport { VProgressCircular } from '../loading';\nimport { ControlSize } from '../../schemes/control';\nimport { VIcon } from '../VIcon';\nimport type { IconName } from '../VIcon';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport type VButtonSpacer = 'left' | 'right';\n\nexport type RawVButtonSpacer = boolean | VButtonSpacer;\n\nexport type VButtonIcon = () => VNodeChild;\n\nexport type RawVButtonIcon = IconName | VButtonIcon;\n\nexport const BUTTON_ALIGNS = ['left', 'center', 'right'] as const;\n\nexport type VButtonAlign = (typeof BUTTON_ALIGNS)[number];\n\nfunction resolveRawVButtonIcon(\n raw?: RawVButtonIcon,\n type: 'main' | 'start' | 'end' = 'main',\n): VButtonIcon | undefined {\n if (!raw) return;\n return typeof raw === 'function'\n ? raw\n : () => (\n <VIcon\n class={['v-button__icon', `v-button__icon--${type}`]}\n name={raw}\n />\n );\n}\n\nexport const vueButtonProps = createPropsOptions({\n ...colorSchemeProps(),\n ...actionableInheritProps,\n spacer: [Boolean, String] as PropType<RawVButtonSpacer>,\n rounded: Boolean,\n icon: [String, Function] as PropType<RawVButtonIcon>,\n startIcon: [String, Function] as PropType<RawVButtonIcon>,\n endIcon: [String, Function] as PropType<RawVButtonIcon>,\n align: {\n type: String as PropType<VButtonAlign>,\n default: 'center',\n },\n ...createControlProps(),\n});\n\nexport type VButtonProps = ExtractPropInput<typeof vueButtonProps>;\n\nexport type VButtonResolvedProps = ExtractPropTypes<typeof vueButtonProps>;\n\nconst LOADING_SIZE_MAP: Record<ControlSize, number> = {\n sm: 14,\n md: 20,\n lg: 28,\n};\n\nexport const VButton = defineComponent({\n name: 'VButton',\n inheritAttrs: false,\n props: vueButtonProps,\n setup(props, ctx) {\n const vui = useVui();\n const control = useControl(props);\n const defaults = vui.setting('buttonDefault');\n const icon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.icon);\n return _icon && _icon();\n });\n const startIcon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.startIcon, 'start');\n return _icon && _icon();\n });\n const endIcon = computed(() => {\n const _icon = resolveRawVButtonIcon(props.endIcon, 'end');\n return _icon && _icon();\n });\n const color = useColorClasses({\n color: () => props.color || defaults.color,\n variant: () =>\n props.variant ||\n (icon.value ? vui.setting('plainVariant') : defaults.variant),\n });\n const isPlain = computed(\n () =>\n color.variant.value.value === vui.setting('plainVariant') &&\n color.color.value.value === defaults.color,\n );\n const isLoading = computed(() => props.loading);\n // const isDisabled = computed(() => props.disabled);\n // const isRounded = computed(() =>\n // props.rounded != null ? props.rounded : !!icon.value,\n // );\n\n const spacer = computed<VButtonSpacer | undefined>(() => {\n const _spacer = props.spacer;\n if (!_spacer) return;\n return _spacer === true ? 'left' : _spacer;\n });\n\n const classes = computed(() => [\n color.colorClasses.value,\n spacer.value ? `v-button--spacer-${spacer.value}` : undefined,\n `v-button--${control.size.value}`,\n `v-button--align-${props.align}`,\n {\n 'v-button--loading': isLoading.value,\n 'v-button--icon': !!icon.value,\n 'v-button--rounded': props.rounded,\n 'v-button--plain': isPlain.value,\n },\n ]);\n\n return () => (\n <VAction\n {...ctx.attrs}\n class={['v-button', classes.value]}\n guardInProgressClass=\"v-button--guard-in-progress\"\n v-slots={{\n default: withCtx(() => (\n <>\n <span class=\"v-button__content\">\n {startIcon.value}\n {ctx.slots.default?.()}\n {icon.value}\n {endIcon.value}\n </span>\n {isLoading.value && (\n <VProgressCircular\n class=\"v-button__loading\"\n indeterminate\n size={LOADING_SIZE_MAP[control.size.value]}\n />\n )}\n </>\n )),\n }}\n />\n );\n },\n});\n","import './VButtonGroup.scss';\n\nimport { defineComponent, isVNode, cloneVNode, VNodeChild, VNode } from 'vue';\nimport { colorSchemeProps } from '@fastkit/vue-color-scheme';\nimport { renderSlotOrEmpty, isFragment } from '@fastkit/vue-utils';\nimport { createControlProps } from '../../composables';\nimport { VButton } from './VButton';\n\ntype VButtonGroupChild =\n | {\n isButton: true;\n node: VNode;\n }\n | {\n isButton: false;\n node: VNodeChild;\n };\n\nexport const VButtonGroup = defineComponent({\n name: 'VButtonGroup',\n props: {\n ...colorSchemeProps(),\n ...createControlProps(),\n disabled: Boolean,\n },\n setup(props, ctx) {\n return () => {\n let hasIcon = false;\n let buttonLength = 0;\n\n let tmp = renderSlotOrEmpty(ctx.slots) || [];\n\n if (tmp.length === 1 && isFragment(tmp[0])) {\n tmp = tmp[0].children as any;\n }\n\n const children: VButtonGroupChild[] = tmp.map((node) => {\n if (!isVNode(node) || node.type !== VButton) {\n return {\n isButton: false,\n node,\n };\n }\n\n buttonLength++;\n\n if (!hasIcon && node.props && !!node.props.icon) {\n hasIcon = true;\n }\n\n return {\n isButton: true,\n node,\n };\n });\n\n let buttonIndex = 0;\n\n const $children = children.map((child) => {\n if (child.isButton) {\n buttonIndex++;\n\n const hasLeft = buttonIndex > 1;\n const hasRight = buttonIndex < buttonLength;\n\n const childProps = child.node.props;\n\n return cloneVNode(child.node, {\n ...props,\n ...childProps,\n rounded: false,\n class: [\n 'v-button-group__item',\n {\n 'v-button--icon': hasIcon,\n 'v-button-group__item--has-left': hasLeft,\n 'v-button-group__item--has-right': hasRight,\n },\n ],\n });\n }\n return child.node;\n });\n return (\n <div\n class={['v-button-group', { 'v-button-group--has-icon': hasIcon }]}>\n {$children}\n </div>\n );\n };\n },\n});\n","import './VPagination.scss';\n\nimport {\n defineComponent,\n PropType,\n ref,\n watch,\n computed,\n withDirectives,\n} from 'vue';\nimport {\n createPropsOptions,\n rawNumberPropType,\n resolveNumberish,\n} from '@fastkit/vue-utils';\nimport { isPromise } from '@fastkit/helpers';\nimport { useRouter, RouterLink } from 'vue-router';\nimport { resizeDirectiveArgument } from '@fastkit/vue-resize';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { resolveRawIconProp } from '../VIcon';\nimport { useVui } from '../../injections';\n\nexport type VPaginationGuard = (\n page: number,\n) => boolean | void | Promise<boolean | void>;\n\nexport const PAGINATION_ALIGNS = ['left', 'center', 'right'] as const;\n\nexport type VPaginationAlign = (typeof PAGINATION_ALIGNS)[number];\n\nexport function paginationProps() {\n return createPropsOptions({\n /**\n * Active Pages\n */\n modelValue: {\n type: rawNumberPropType,\n default: 1,\n },\n\n /**\n * Total number of pages\n */\n length: {\n type: rawNumberPropType,\n default: 0,\n },\n\n /**\n * Maximum number of links to display.\n */\n totalVisible: rawNumberPropType,\n\n /**\n * true when narrowing\n */\n dense: Boolean,\n disabled: Boolean,\n align: {\n type: String as PropType<VPaginationAlign>,\n default: 'center',\n },\n\n /**\n * To synchronize with a query, use the query name\n */\n routeQuery: String,\n beforeChange: Function as PropType<VPaginationGuard>,\n color: String as PropType<ScopeName>,\n });\n}\n\ntype ItemSource = number | 'prev' | 'next' | 'truncate';\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n props: paginationProps(),\n emits: {\n change: (page: number) => true,\n 'update:modelValue': (page: number) => true,\n },\n setup(props, ctx) {\n const vui = useVui();\n const elRef = ref<HTMLElement | null>(null);\n const router = useRouter();\n const internalValue = ref(1);\n const containerWidth = ref(0);\n const itemSize = ref(0);\n const capacityLength = computed(() => {\n const _itemSize = itemSize.value;\n if (!_itemSize) return 0;\n return Math.floor(containerWidth.value / _itemSize);\n });\n const colorScope = useScopeColorClass({\n color: () => props.color || vui.setting('primaryScope'),\n });\n const computedLength = computed(() => resolveNumberish(props.length));\n const computedTotalVisible = computed(() =>\n resolveNumberish(props.totalVisible),\n );\n const computedNumbersLength = computed(() => capacityLength.value - 2 - 2);\n const computedPage = computed(() => {\n const { routeQuery } = props;\n if (routeQuery) {\n return vui.location.getQuery(routeQuery, Number, 1);\n }\n return internalValue.value;\n });\n\n const _range = (from: number, to: number) => {\n const range: number[] = [];\n\n from = from > 0 ? from : 1;\n\n for (let i = from; i <= to; i++) {\n range.push(i);\n }\n\n return range;\n };\n\n const computedItems = computed<ItemSource[]>(() => {\n const maxButtons = computedNumbersLength.value;\n const totalVisible = computedTotalVisible.value;\n const length = computedLength.value;\n const pageValue = computedPage.value;\n\n const maxLength = Math.min(\n Math.max(0, totalVisible || 0) || length,\n Math.max(0, maxButtons) || length,\n length,\n );\n if (length <= maxLength) {\n return _range(1, length);\n }\n const even = maxLength % 2 === 0 ? 1 : 0;\n const left = Math.floor(maxLength / 2);\n const right = length - left + 1 + even;\n\n if (pageValue > left && pageValue < right) {\n const start = pageValue - left + 2;\n const end = pageValue + left - 2 - even;\n\n return [1, 'truncate', ..._range(start, end), 'truncate', length];\n }\n if (pageValue === left) {\n const end = pageValue + left - 1 - even;\n return [..._range(1, end), 'truncate', length];\n }\n if (pageValue === right) {\n const start = pageValue - left + 1;\n return [1, 'truncate', ..._range(start, length)];\n }\n return [..._range(1, left), 'truncate', ..._range(right, length)];\n });\n\n const isActive = computed(() => computedLength.value > 1);\n\n const isTransitioning = computed(() => {\n const { routeQuery } = props;\n return vui.location.isQueryOnlyTransitioning(routeQuery);\n });\n\n const isDisabled = computed(() => props.disabled || isTransitioning.value);\n\n const classes = computed(() => [\n {\n 'v-pagination--disabled': isDisabled.value,\n 'v-pagination--dense': props.dense,\n [`v-pagination--${props.align}`]: true,\n },\n colorScope.value.className,\n ]);\n\n async function setPage(value: number | string) {\n if (isDisabled.value) return;\n const { beforeChange, routeQuery } = props;\n const newPage = resolveNumberish(value);\n if (computedPage.value === newPage) return;\n if (beforeChange) {\n try {\n let result = beforeChange(newPage);\n if (isPromise(result)) result = await result;\n if (result === false) return;\n } catch (e) {\n // noop\n }\n }\n if (routeQuery) {\n const to = createRoutableLocationByPage(newPage, routeQuery);\n return router.push(to).then((failure) => {\n !failure && ctx.emit('change', newPage);\n });\n }\n internalValue.value = newPage;\n (ctx as any).emit('update:modelValue', newPage);\n ctx.emit('change', newPage);\n }\n\n function createPageInfo(source: ItemSource): {\n number: boolean;\n page: number | undefined;\n active: boolean;\n disabled: boolean;\n } {\n const currentPage = computedPage.value;\n const length = computedLength.value;\n let number: boolean;\n let page: number | undefined;\n let active: boolean;\n let disabled: boolean;\n\n if (typeof source === 'number') {\n number = true;\n page = source;\n active = currentPage === page;\n disabled = false;\n } else if (source === 'truncate') {\n number = false;\n active = false;\n disabled = false;\n } else {\n number = false;\n const isPrev = source === 'prev';\n const amount = isPrev ? -1 : 1;\n page = currentPage + amount;\n active = false;\n disabled = page < 1 || page > length;\n }\n\n return {\n number,\n page,\n active,\n disabled,\n };\n }\n\n function createRoutableLocationByPage(page: number, routeQuery: string) {\n return vui.location.getQueryMergedLocation({\n [routeQuery]: page,\n });\n }\n\n function genItem(source: ItemSource, index: number) {\n const { number, page, active, disabled } = createPageInfo(source);\n const type = number ? 'num' : source;\n const classes = [\n 'v-pagination__item',\n {\n [`v-pagination__item--${type}`]: true,\n 'v-pagination__item--active': active,\n 'v-pagination__item--disabled': disabled,\n },\n ];\n const children = number\n ? page\n : (() => {\n if (type === 'truncate') {\n return <span>...</span>;\n }\n\n const isPrev = type === 'prev';\n const icon = isPrev ? vui.icon('prev') : vui.icon('next');\n return resolveRawIconProp(false, icon, {\n class: 'v-pagination__item__icon',\n });\n })();\n\n const onClick = (ev: PointerEvent) => {\n ev.preventDefault();\n if (page === undefined || active || disabled) return;\n setPage(page);\n };\n\n const key = `${source}-${index}`;\n\n const { routeQuery } = props;\n\n if (page !== undefined && routeQuery) {\n const to = createRoutableLocationByPage(page, routeQuery);\n return (\n <RouterLink\n class={classes}\n to={to}\n key={key}\n // event=\"\"\n // nativeOn={\n // page === undefined\n // ? undefined\n // : {\n // click: onClick,\n // }\n // }\n >\n {children}\n </RouterLink>\n );\n }\n return (\n <button\n class={classes}\n type=\"button\"\n value={page}\n onClick={onClick}\n key={key}>\n {children}\n </button>\n );\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n internalValue.value = resolveNumberish(modelValue);\n },\n { immediate: true },\n );\n\n return () => {\n if (!isActive.value) return undefined;\n const $items = [\n 'prev' as const,\n ...computedItems.value,\n 'next' as const,\n ].map((i, index) => genItem(i, index));\n\n return withDirectives(\n <nav class={['v-pagination', classes.value]} ref={elRef}>\n {$items}\n </nav>,\n [\n resizeDirectiveArgument(({ width }) => {\n const el = elRef.value;\n if (el) {\n const style = window.getComputedStyle(el, 'before');\n\n const width = style.getPropertyValue('width');\n const margin = style.getPropertyValue('margin');\n const size = parseFloat(width) + parseFloat(margin) * 0.5;\n itemSize.value = size;\n }\n containerWidth.value = width;\n }),\n ],\n );\n };\n },\n});\n","import './VListTile.scss';\nimport {\n defineComponent,\n computed,\n PropType,\n VNodeChild,\n ComputedRef,\n watch,\n} from 'vue';\nimport { createPropsOptions } from '@fastkit/vue-utils';\nimport { actionableInheritProps, VAction } from '@fastkit/vue-action';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\nimport { rawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport function createListTileProps() {\n const icon = rawIconProp();\n return {\n ...actionableInheritProps,\n ...createPropsOptions({\n startIcon: icon,\n endIcon: icon,\n linkFallbackTag: {\n type: String,\n default: 'div',\n },\n startIconEmptySpace: Boolean,\n color: String as PropType<ScopeName>,\n exactMatch: Boolean,\n }),\n };\n}\n\nexport const listTileEmits = {\n changeActive: (isActive: boolean) => true,\n};\n\nexport const VListTile = defineComponent({\n name: 'VListTile',\n inheritAttrs: false,\n props: createListTileProps(),\n emits: {\n ...listTileEmits,\n },\n setup(props, ctx) {\n const vui = useVui();\n const startIcon: ComputedRef<VNodeChild> = computed(() => {\n let icon = resolveRawIconProp(false, props.startIcon);\n if (!icon && props.startIconEmptySpace) {\n icon = resolveRawIconProp(false, '$empty');\n }\n return icon;\n });\n const endIcon: ComputedRef<VNodeChild> = computed(() =>\n resolveRawIconProp(false, props.endIcon),\n );\n\n const hasTo = computed(() => !!ctx.attrs.to);\n\n const link = vui.useLink({ to: (ctx.attrs.to as any) || '' });\n\n const isActive = computed(() => {\n if (!hasTo.value) return false;\n return props.exactMatch ? link.isExactActive.value : link.isActive.value;\n });\n\n const color = useScopeColorClass(props);\n const classes: ComputedRef<any[]> = computed(() => {\n const _color = color.value;\n const hasColor = !!_color.value;\n\n return [\n color.value.className,\n {\n 'v-list-tile--plain': !hasColor,\n 'v-list-tile--has-color': hasColor,\n 'v-list-tile--active': isActive.value,\n },\n ];\n });\n\n watch(\n () => isActive.value,\n (isActive) => {\n ctx.emit('changeActive', isActive);\n },\n {\n immediate: true,\n },\n );\n\n return () => {\n const _startIcon = startIcon.value;\n const _endIcon = endIcon.value;\n\n return (\n <VAction\n {...ctx.attrs}\n class={['v-list-tile', classes.value]}\n actionableClass=\"v-list-tile--clickable\">\n {_startIcon && (\n <span class=\"v-list-tile__icon v-list-tile__icon--start\">\n {_startIcon}\n </span>\n )}\n <span class=\"v-list-tile__body\">{ctx.slots.default?.()}</span>\n {_endIcon && (\n <span class=\"v-list-tile__icon v-list-tile__icon--end\">\n {_endIcon}\n </span>\n )}\n </VAction>\n );\n };\n },\n});\n","import './VDrawerLayout.scss';\nimport { defineComponent, computed } from 'vue';\nimport { createPaperBaseProps, paperBaseSlots, VPaper } from '../VPaper';\n\nexport const VDrawerLayout = defineComponent({\n name: 'VDrawerLayout',\n props: {\n ...createPaperBaseProps(),\n },\n slots: paperBaseSlots,\n setup(props, ctx) {\n return () => {\n const paperProps = computed(() => ({\n color: props.color,\n tag: props.tag,\n }));\n\n return (\n <VPaper\n class=\"v-drawer-layout\"\n innerClass=\"v-drawer-layout__inner\"\n {...paperProps.value}\n square\n headerProps={{\n class: 'v-drawer-layout__header',\n }}\n bodyProps={{\n class: 'v-drawer-layout__body',\n }}\n footerProps={{\n class: 'v-drawer-layout__footer',\n }}\n v-slots={ctx.slots}></VPaper>\n );\n };\n },\n});\n","import './VHero.scss';\nimport { defineComponent, PropType } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { toScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { VAppContainer } from '@fastkit/vue-app-layout';\n\nconst slots = defineSlots<{\n default?: () => void;\n adornment?: () => void;\n}>();\n\nexport const VHero = defineComponent({\n name: 'VHero',\n props: {\n color: {\n type: String as PropType<ScopeName>,\n default: 'primary',\n },\n tag: {\n type: String,\n default: 'header',\n },\n hTag: {\n type: String,\n default: 'h1',\n },\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n return () => {\n const TagName = props.tag as 'header';\n const HTagName = props.hTag as 'h1';\n const adornment = ctx.slots.adornment?.();\n\n return (\n <VAppContainer pulled>\n <TagName class={['v-hero', toScopeColorClass(props.color)]}>\n <HTagName class=\"v-hero__title\">{ctx.slots.default?.()}</HTagName>\n {adornment && <div class=\"v-hero__adornment\">{adornment}</div>}\n </TagName>\n </VAppContainer>\n );\n };\n },\n});\n","import './VNavigationItem.scss';\nimport {\n defineComponent,\n computed,\n VNodeChild,\n PropType,\n VNodeProps,\n Fragment,\n ref,\n watch,\n} from 'vue';\nimport { ExtractPropInput } from '@fastkit/vue-utils';\nimport { VExpandTransition } from '@fastkit/vue-transitions';\nimport { ScopeName } from '@fastkit/color-scheme';\n\n// @TODO Unable to resolve dts for `actionableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useRoute, RouteLocationRaw } from 'vue-router';\nimport { useVui } from '../../injections';\nimport { createListTileProps, listTileEmits, VListTile } from '../VListTile';\n\nexport function createNavigationItemProps() {\n return {\n ...createListTileProps(),\n match: [String, Array] as PropType<string | string[]>,\n depth: {\n type: Number,\n default: 0,\n },\n nested: Boolean,\n color: String as PropType<ScopeName>,\n };\n}\n\nexport interface NavigationItemInput extends ExtractPropInput<\n ReturnType<typeof createNavigationItemProps>\n> {\n key: string | number;\n label: VNodeChild | (() => VNodeChild);\n children?: NavigationItemInput[];\n}\n\nexport function resolveNavigationItemInput(input: NavigationItemInput) {\n let { label } = input;\n const props: NavigationItemInput = {\n ...input,\n };\n if (typeof label === 'function') {\n label = label();\n }\n delete (props as NavigationItemInput).label;\n\n return {\n label,\n props,\n };\n}\n\nexport function renderNavigationItemInput(\n input: NavigationItemInput,\n extraProps?: Record<string, unknown> & VNodeProps,\n) {\n const { label, props } = resolveNavigationItemInput(input);\n return (\n <VNavigationItem {...{ ...props, ...(extraProps as any) }}>\n {label}\n </VNavigationItem>\n );\n}\n\nconst TRIM_END_SLASH_RE = /\\/$/;\n\nfunction trimEndSlash<T extends string | undefined>(source: T) {\n return source ? source.replace(TRIM_END_SLASH_RE, '') : source;\n}\n\nexport const VNavigationItem = defineComponent({\n name: 'VNavigationItem',\n inheritAttrs: false,\n props: {\n ...createNavigationItemProps(),\n children: Array as PropType<NavigationItemInput[]>,\n },\n emits: {\n ...listTileEmits,\n },\n setup(props, ctx) {\n const vui = useVui();\n const opened = ref(false);\n\n const children = computed(() => {\n const c = props.children;\n return c && c.length ? c : undefined;\n });\n\n const to = computed(() => ctx.attrs.to);\n\n const match = computed<string[] | undefined>(() => {\n const { match } = props;\n\n const { to } = ctx.attrs;\n if (match) {\n return (Array.isArray(match) ? match : [match]).map(trimEndSlash);\n }\n if (!to) return;\n const toPath = typeof to === 'string' ? to : (to as any).path;\n if (!toPath) return;\n return [trimEndSlash(toPath)];\n });\n\n const classes = computed(() => [\n {\n 'v-navigation-item--opened': opened.value,\n [`v-navigation-item--depth-${props.depth}`]: props.depth > 0,\n },\n ]);\n\n const route = useRoute();\n\n watch(\n () => route.path,\n (newPath) => {\n const c = children.value;\n const m = match.value;\n\n if (!c || !m || !m.length) {\n return;\n }\n\n const trimmedNewPath = trimEndSlash(newPath);\n if (m.some((_) => trimmedNewPath.match(_))) {\n open();\n } else {\n close();\n }\n },\n { immediate: true },\n );\n\n const _props = computed(() => {\n const c = children.value;\n let { endIcon } = props;\n if (c && !endIcon) {\n endIcon = vui.icon('navigationExpand');\n if (typeof endIcon === 'string') {\n const name = endIcon;\n endIcon = (gen) =>\n gen({\n name,\n rotate: opened.value ? 180 : 0,\n });\n }\n }\n\n const __props: any = {\n ...props,\n endIcon,\n };\n\n delete __props.children;\n\n return {\n ...__props,\n };\n });\n\n function open() {\n if (!children.value) return;\n opened.value = true;\n }\n\n function close() {\n opened.value = false;\n }\n\n function toggle() {\n return opened.value ? close() : open();\n }\n\n const onClick = (ev: PointerEvent) => {\n if (!to.value) {\n return toggle();\n }\n };\n\n const onChangeActive = (isActive: boolean) => {\n ctx.emit('changeActive', isActive);\n };\n\n ctx.expose({\n close,\n });\n\n return () => {\n const _children = children.value;\n const fallbackTag = _children ? 'button' : undefined;\n\n return (\n <Fragment>\n <VListTile\n {...ctx.attrs}\n {..._props.value}\n fallbackTag={fallbackTag}\n endIcon={_props.value.endIcon}\n class={['v-navigation-item', classes.value]}\n onClick={onClick}\n onChangeActive={onChangeActive}>\n {ctx.slots.default?.()}\n </VListTile>\n {_children && (\n <VExpandTransition>\n <div class=\"v-navigation-item__expand\" v-show={opened.value}>\n {_children.map((child) =>\n renderNavigationItemInput(\n {\n color: props.color,\n ...child,\n },\n {\n startIconEmptySpace: _props.value.startIconEmptySpace,\n depth: props.nested ? props.depth + 1 : props.depth,\n },\n ),\n )}\n </div>\n </VExpandTransition>\n )}\n </Fragment>\n );\n };\n },\n});\n","import './VNavigation.scss';\nimport {\n defineComponent,\n computed,\n PropType,\n VNodeChild,\n onBeforeUpdate,\n ref,\n} from 'vue';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { createPropsOptions, ExtractPropInput } from '@fastkit/vue-utils';\nimport {\n NavigationItemInput,\n renderNavigationItemInput,\n} from './VNavigationItem';\n\nexport function createNavigationProps() {\n return createPropsOptions({\n items: {\n type: Array as PropType<NavigationItemInput[]>,\n required: true,\n },\n color: String as PropType<ScopeName>,\n startIconEmptySpace: {\n type: Boolean,\n default: true,\n },\n caption: [String, Function] as PropType<VNodeChild | (() => VNodeChild)>,\n });\n}\n\nexport type NavigationInput = ExtractPropInput<\n ReturnType<typeof createNavigationProps>\n>;\n\nexport const VNavigation = defineComponent({\n name: 'VNavigation',\n props: createNavigationProps(),\n setup(props, ctx) {\n const items = computed(() => props.items);\n const color = useScopeColorClass(props);\n const classes = computed(() => [color.value.className]);\n const startIconEmptySpace = computed(() => props.startIconEmptySpace);\n const caption = computed(() => {\n const c = props.caption;\n return typeof c === 'function' ? c() : c;\n });\n const itemsRef = ref<{ key: string | number; ref: any }[]>([]);\n\n onBeforeUpdate(() => {\n itemsRef.value = [];\n });\n\n function setItemRef(item: NavigationItemInput, itemRef: any) {\n itemsRef.value.push({ key: item.key, ref: itemRef });\n }\n\n function onItemActivated(item: NavigationItemInput) {\n itemsRef.value.forEach(({ key, ref }) => {\n if (key === item.key) return;\n ref.close();\n });\n }\n\n return () => {\n const $caption = caption.value;\n return (\n <nav class={['v-navigation', classes.value]}>\n {!!$caption && <div class=\"v-navigation__caption\">{$caption}</div>}\n {items.value.map((item) =>\n renderNavigationItemInput(item, {\n class: 'v-navigation__item',\n startIconEmptySpace: startIconEmptySpace.value,\n\n ref: (ref: any) => {\n setItemRef(item, ref);\n },\n onChangeActive: (isActive: boolean) => {\n if (isActive /* && item.children && item.children.length */) {\n onItemActivated(item);\n }\n },\n }),\n )}\n </nav>\n );\n };\n },\n});\n","import './VControlField.scss';\nimport { computed, PropType, ref, defineComponent, VNodeChild } from 'vue';\nimport { useParentFormNode } from '@fastkit/vue-form-control';\nimport {\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n TypedSlot,\n createPropsOptions,\n defineSlots,\n DefineSlotsType,\n} from '@fastkit/vue-utils';\nimport { DISABLED_REASON_CONTAINER_BIND } from '@fastkit/vue-disabled-reason';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { useVuiColorProvider } from '../../injections';\nimport { VProgressCircular } from '../loading';\nimport { CONTROL_LOADING_SPINNER_SIZES } from '../../schemes';\n\nconst ADORNMENT_POSITIONS = ['start', 'end'] as const;\n\nexport type AdornmentPosition = (typeof ADORNMENT_POSITIONS)[number];\n\nexport function createControlFieldProps() {\n return {\n ...createPropsOptions({\n startAdornment: {} as PropType<VNodeChildOrSlot>,\n endAdornment: {} as PropType<VNodeChildOrSlot>,\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n }),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n };\n}\n\n// export const inputBoxSlots = {\n// default: () => true,\n// startAdornment: () => true,\n// endAdornment: () => true,\n// };\nexport type InputBoxSlots = DefineSlotsType<{\n default?: () => any;\n startAdornment?: () => any;\n endAdornment?: () => any;\n}>;\n\nconst slots = defineSlots<InputBoxSlots>();\n\ntype ResolvedSlots = Partial<Record<AdornmentPosition, TypedSlot<void>>>;\n\nexport const VControlField = defineComponent({\n name: 'VControlField',\n props: {\n ...createControlFieldProps(),\n focused: Boolean,\n autoHeight: Boolean,\n ...slots(),\n error: Boolean,\n },\n emits: {\n click: (ev: PointerEvent) => true,\n },\n slots,\n setup(props, ctx) {\n const parentNode = useParentFormNode();\n const control = useControl(props);\n const inputBox = useControlField(props);\n const hostElRef = ref<HTMLElement | null>(null);\n\n const disabled = computed(() => !!parentNode && parentNode.isDisabled);\n const invalid = computed(() => !!parentNode && parentNode.invalid);\n const autoHeight = computed(() => props.autoHeight);\n const readonly = computed(() => !!parentNode && parentNode.isReadonly);\n // const computedTabindex = computed(() =>\n // disabled.value ? -1 : props.tabindex,\n // );\n // const isOutlined = computed(() => inputBox.variant.value === 'outlined');\n const colorProvider = useVuiColorProvider();\n\n const classes = computed(() => {\n const _classes = [\n 'v-control-field',\n `v-control-field--${inputBox.variant.value}`,\n {\n 'v-control-field--disabled': disabled.value,\n 'v-control-field--invalid': invalid.value || props.error,\n 'v-control-field--readonly': readonly.value,\n 'v-control-field--focused': props.focused,\n 'v-control-field--auto-height': autoHeight.value,\n },\n control.classes.value,\n colorProvider.className(\n props.error\n ? 'error'\n : invalid.value && !readonly.value\n ? 'error'\n : 'primary',\n ),\n ];\n return _classes;\n });\n\n const resolvedSlots = computed(() => {\n const _slots: ResolvedSlots = {};\n ADORNMENT_POSITIONS.forEach((position) => {\n const key = `${position}Adornment` as const;\n _slots[position] = resolveVNodeChildOrSlots(props[key], ctx.slots[key]);\n });\n return _slots;\n });\n\n const renderAdornment = (position: AdornmentPosition) => {\n let child: VNodeChild | undefined;\n if (position === 'end' && props.loading) {\n child = (\n <VProgressCircular\n indeterminate\n size={CONTROL_LOADING_SPINNER_SIZES[props.size || 'md']}\n />\n );\n } else {\n child = resolvedSlots.value[position]?.();\n }\n if (!child) return;\n return (\n <div\n class={[\n 'v-control-field__adornment',\n `v-control-field__adornment--${position}`,\n ]}>\n {child}\n </div>\n );\n };\n\n const handleClick = (ev: PointerEvent) => ctx.emit('click', ev);\n\n return () => (\n <div\n class={classes.value}\n onClick={handleClick}\n // tabindex={this.computedTabindex}\n ref={hostElRef}\n {...DISABLED_REASON_CONTAINER_BIND}>\n {renderAdornment('start')}\n <div class=\"v-control-field__body\">{ctx.slots.default?.()}</div>\n {renderAdornment('end')}\n </div>\n );\n },\n});\n","import './VTextCounter.scss';\nimport { defineComponent } from 'vue';\n\nexport const VTextCounter = defineComponent({\n name: 'VTextCounter',\n props: {\n length: {\n type: Number,\n required: true,\n },\n maxlength: {\n type: Number,\n required: true,\n },\n },\n render() {\n return (\n <span class=\"v-text-counter\">{`${this.length} / ${this.maxlength}`}</span>\n );\n },\n});\n","import './VCheckable.scss';\nimport { computed, defineComponent } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { FormNodeErrorSlotsSource } from '@fastkit/vue-form-control';\nimport { DISABLED_REASON_CONTAINER_BIND } from '@fastkit/vue-disabled-reason';\nimport { useVuiColorProvider } from '../../injections';\n\nexport const CHECKABLE_SLOTS = defineSlots<\n {\n input?: () => any;\n faux?: () => any;\n icon?: () => any;\n label?: () => any;\n } & FormNodeErrorSlotsSource\n>();\n\nexport const VCheckable = defineComponent({\n name: 'VCheckable',\n props: {\n invalid: Boolean,\n disabled: Boolean,\n readonly: Boolean,\n checked: Boolean,\n ...CHECKABLE_SLOTS(),\n // autoWidth: Boolean,\n },\n slots: CHECKABLE_SLOTS,\n setup(props, ctx) {\n const colorProvider = useVuiColorProvider();\n const invalid = computed(() => props.invalid);\n const disabled = computed(() => props.disabled);\n const readonly = computed(() => props.readonly);\n const checked = computed(() => props.checked);\n // const autoWidth = computed(() => props.autoWidth);\n const classes = computed(() => [\n {\n 'v-checkable--invalid': invalid.value,\n 'v-checkable--disabled': disabled.value,\n 'v-checkable--readonly': readonly.value,\n 'v-checkable--checked': checked.value,\n 'v-checkable--custom-icon': !!ctx.slots.icon,\n disabled: disabled.value,\n },\n colorProvider.className(invalid.value ? 'error' : 'primary'),\n ]);\n\n return () => (\n <label\n class={['v-checkable', classes.value]}\n {...DISABLED_REASON_CONTAINER_BIND}>\n <span class=\"v-checkable__faux\">\n {ctx.slots.input?.()}\n {ctx.slots.icon ? (\n ctx.slots.icon()\n ) : (\n <span class=\"v-checkable__faux__icon\">{ctx.slots.faux?.()}</span>\n )}\n </span>\n <span class=\"v-checkable__label\">{ctx.slots.label?.()}</span>\n </label>\n );\n },\n});\n","import './VCheckbox.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport {\n VUI_CHECKBOX_GROUP_SYMBOL,\n VUI_CHECKBOX_SYMBOL,\n} from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VCheckbox = defineComponent({\n name: 'VCheckbox',\n props: {\n ...props,\n ...createControlProps(),\n indeterminate: Boolean,\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_CHECKBOX_SYMBOL,\n parentNodeType: VUI_CHECKBOX_GROUP_SYMBOL,\n });\n\n const control = useControl(props);\n const isIndeterminate = computed(() => props.indeterminate);\n const classes = computed(() => [\n 'v-checkbox',\n {\n 'v-checkbox--selected': nodeControl.selected,\n 'v-checkbox--indeterminate': isIndeterminate.value,\n },\n control.classes.value,\n ]);\n const api = nodeControl.extend({\n get isIndeterminate() {\n return isIndeterminate.value;\n },\n });\n\n ctx.expose({\n control: api,\n });\n\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'checkbox' }),\n faux: () => <span class=\"v-checkbox__faux\"></span>,\n label: () => ctx.slots.default?.(),\n };\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected || isIndeterminate.value}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_CHECKBOX_GROUP_SYMBOL } from '../../injections';\nimport { VCheckbox } from '../VCheckbox';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VCheckboxGroup = defineFormSelectorComponent({\n name: 'VCheckboxGroup',\n defaultMultiple: true,\n nodeType: VUI_CHECKBOX_GROUP_SYMBOL,\n className: 'v-checkbox-group',\n itemRenderer: ({ attrs, slots }) => <VCheckbox {...attrs}>{slots}</VCheckbox>,\n});\n","import './VRadio.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL } from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VRadio = defineComponent({\n name: 'VRadio',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_RADIO_SYMBOL,\n parentNodeType: VUI_RADIO_GROUP_SYMBOL,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-radio',\n {\n 'v-radio--selected': nodeControl.selected,\n },\n control.classes.value,\n ]);\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'radio' }),\n faux: () => <span class=\"v-radio__faux\"></span>,\n label: () => ctx.slots.default?.(),\n };\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_RADIO_GROUP_SYMBOL } from '../../injections';\nimport { VRadio } from '../VRadio';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VRadioGroup = defineFormSelectorComponent({\n name: 'VRadioGroup',\n nodeType: VUI_RADIO_GROUP_SYMBOL,\n className: 'v-radio-group',\n itemRenderer: ({ attrs, slots }) => <VRadio {...attrs}>{slots}</VRadio>,\n});\n","import './VSwitch.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { withCtxForSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL } from '../../injections';\nimport { VCheckable } from '../VCheckable';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VSwitch = defineComponent({\n name: 'VSwitch',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_SWITCH_SYMBOL,\n parentNodeType: VUI_SWITCH_GROUP_SYMBOL,\n });\n const control = useControl(props);\n if (typeof window !== 'undefined') {\n (window as any).yy = {};\n (window as any).yy[String(Date.now())] = nodeControl;\n }\n\n const classes = computed(() => [\n 'v-switch',\n {\n 'v-switch--selected': nodeControl.selected,\n 'v-switch--disabled': nodeControl.isDisabled,\n },\n control.classes.value,\n ]);\n\n const slots = {\n input: () => nodeControl.createInputElement({ type: 'checkbox' }),\n icon: () => (\n <span class=\"v-switch__faux\">\n <span class=\"v-switch__faux__pin\"></span>\n </span>\n ),\n label: () => ctx.slots.default?.(),\n };\n\n ctx.expose({\n control: nodeControl,\n });\n\n return () => (\n <VCheckable\n class={classes.value}\n checked={nodeControl.selected}\n invalid={nodeControl.invalid}\n disabled={nodeControl.isDisabled}\n readonly={nodeControl.isReadonly}\n v-slots={withCtxForSlots(slots)}\n />\n );\n },\n});\n","import { VUI_SWITCH_GROUP_SYMBOL } from '../../injections';\nimport { VSwitch } from '../VSwitch';\nimport { defineFormSelectorComponent } from '../../composables';\n\nexport const VSwitchGroup = defineFormSelectorComponent({\n name: 'VSwitchGroup',\n defaultMultiple: true,\n nodeType: VUI_SWITCH_GROUP_SYMBOL,\n className: 'v-switch-group',\n itemRenderer: ({ attrs, slots }) => <VSwitch {...attrs}>{slots}</VSwitch>,\n});\n","import './VOption.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFormSelectorItemSettings,\n useFormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_SELECT_SYMBOL, VUI_OPTION_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormSelectorItemSettings();\n\nexport const VOption = defineComponent({\n name: 'VOption',\n props: {\n ...props,\n ...createControlProps(),\n },\n emits,\n setup(props, ctx) {\n const nodeControl = useFormSelectorItemControl(props, ctx, {\n nodeType: VUI_OPTION_SYMBOL,\n parentNodeType: VUI_SELECT_SYMBOL,\n });\n const control = useControl(props);\n const classes = computed(() => [\n 'v-option',\n {\n 'v-option--selected': nodeControl.selected,\n 'v-option--has-not-value': !nodeControl.hasValue,\n 'v-option--disabled': nodeControl.isDisabled,\n },\n control.classes.value,\n ]);\n\n return () => (\n <label\n class={classes.value}\n onClick={nodeControl.handleClickElement}\n tabindex={nodeControl.tabindex}\n data-value={nodeControl.propValue}\n aria-disabled={nodeControl.isDisabled}>\n <span class=\"v-option__label\">{ctx.slots.default?.()}</span>\n </label>\n );\n },\n});\n","import './VOptionGroup.scss';\nimport { computed, PropType, defineComponent } from 'vue';\nimport {\n createFormSelectorItemGroupProps,\n useFormSelectorItemGroupControl,\n FormSelectorItemGroupControl,\n} from '@fastkit/vue-form-control';\nimport {\n defineSlots,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n} from '@fastkit/vue-utils';\nimport { VUI_SELECT_SYMBOL } from '../../injections';\n\nconst slots = defineSlots<{\n label?: (control: FormSelectorItemGroupControl) => any;\n default?: () => any;\n}>();\n\nexport const VOptionGroup = defineComponent({\n name: 'VOptionGroup',\n props: {\n ...createFormSelectorItemGroupProps(),\n // eslint-disable-next-line vue/require-prop-types\n label: {} as PropType<VNodeChildOrSlot<FormSelectorItemGroupControl>>,\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n const groupControl = useFormSelectorItemGroupControl(props, ctx, {\n parentNodeType: VUI_SELECT_SYMBOL,\n });\n const labelSlot = computed(() =>\n resolveVNodeChildOrSlots(props.label, ctx.slots.label),\n );\n const classes = computed(() => [\n 'v-option-group',\n {\n 'v-option-group--disabled': groupControl.isDisabled,\n },\n ]);\n\n ctx.expose({\n control: groupControl,\n });\n\n return () => {\n const label = labelSlot.value?.(groupControl);\n return (\n <div class={classes}>\n {!!label && <div class=\"v-option-group__label\">{label}</div>}\n {ctx.slots.default?.()}\n </div>\n );\n };\n },\n});\n","import './VSelect.scss';\nimport {\n ref,\n Ref,\n VNodeChild,\n defineComponent,\n PropType,\n computed,\n nextTick,\n} from 'vue';\nimport {\n createFormSelectorSettings,\n useFormSelectorControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n FormSelectorItemControl,\n} from '@fastkit/vue-form-control';\nimport {\n defineSlots,\n createPropsOptions,\n VNodeChildOrSlot,\n resolveVNodeChildOrSlots,\n withCtxForSlots,\n withCtx,\n} from '@fastkit/vue-utils';\nimport { useKeyboard } from '@fastkit/vue-keyboard';\nimport { VStackActivatorPayload, MenuAPI } from '@fastkit/vue-stack';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VUI_SELECT_SYMBOL, useVui } from '../../injections';\nimport { VIcon } from '../VIcon';\nimport { VMenu } from '../VMenu';\nimport { VOptionGroup } from '../VOptionGroup';\nimport { VOption } from '../VOption';\nimport { VButton } from '../VButton';\n\nexport const ARROW_KEY_TYPES = useKeyboard.Key(['ArrowUp', 'ArrowDown']);\n\nexport const CHOICE_KEY_TYPES = useKeyboard.Key(['Enter', ' ']);\n\nexport const KEYBOARD_EVENT_TYPES = useKeyboard.Key([\n ...ARROW_KEY_TYPES,\n ...CHOICE_KEY_TYPES,\n]);\n\nconst { props, emits } = createFormSelectorSettings({\n defaultValidateTiming: 'blur',\n});\n\nconst slots = defineSlots<\n FormNodeWrapperSlots &\n InputBoxSlots & {\n selection?: (ctx: {\n item: FormSelectorItemControl;\n index: number;\n }) => any;\n }\n>();\n\nexport const VSelect = defineComponent({\n name: 'VSelect',\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n ...createPropsOptions({\n placeholder: String,\n loadingMessage: {} as PropType<VNodeChildOrSlot>,\n failedToLoadItemsMessage: {} as PropType<VNodeChildOrSlot>,\n }),\n closeOnNavigation: Boolean,\n },\n emits,\n slots,\n setup(props, ctx) {\n const menuRef: Ref<{ menu: MenuAPI } | null> = ref(null);\n const menuOpened = ref(false);\n const showMenu = () => {\n menuOpened.value = true;\n };\n const closeMenu = () => {\n menuOpened.value = false;\n };\n const inputControl = useFormSelectorControl(props, ctx, {\n nodeType: VUI_SELECT_SYMBOL,\n onSelectItem: (item) => {\n closeMenu();\n },\n });\n const control = useControl(props);\n useControlField(props);\n const vui = useVui();\n const iconName = vui.icon('menuDown');\n const fieldRef = ref<HTMLElement | null>(null);\n const loadingMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.loadingMessage,\n vui.setting('loadingMessage'),\n 'Loading...',\n );\n return slot && slot(vui);\n });\n const failedToLoadItemsMessageRef = computed(() => {\n const slot = resolveVNodeChildOrSlots(\n props.failedToLoadItemsMessage,\n vui.setting('failedToLoadDataMessage'),\n 'Failed to load data.',\n );\n return slot && slot(vui);\n });\n\n const focus = (opts?: FocusOptions): void => {\n fieldRef.value?.focus?.(opts);\n };\n\n const renderSelections = (selectedItems: FormSelectorItemControl[]) => {\n const selectionSlot = ctx.slots.selection;\n const children: VNodeChild[] = [];\n if (inputControl.itemsLoadFailed) {\n children.push(\n <span class=\"v-select__placeholder\">\n {failedToLoadItemsMessageRef.value}\n </span>,\n );\n } else if (inputControl.itemsLoading) {\n children.push(\n <span class=\"v-select__placeholder\">{loadingMessageRef.value}</span>,\n );\n } else if (selectedItems.length) {\n selectedItems.forEach((item, index) => {\n if (index > 0) {\n children.push(vui.selectionSeparator());\n }\n const child = selectionSlot\n ? selectionSlot({ item, index })\n : item.renderDefaultSlot();\n children.push(child);\n });\n } else if (props.placeholder != null) {\n children.push(\n <span class=\"v-select__placeholder\">{props.placeholder}</span>,\n );\n }\n\n return children;\n };\n\n const clearKeyFocused = () => {\n const menu = menuRef.value?.menu;\n if (!menu) return;\n const bodyEl = menu.bodyRef.value;\n if (!bodyEl) return;\n\n const els = Array.from(\n bodyEl.querySelectorAll('.v-option'),\n ) as HTMLElement[];\n\n els.forEach((el) => el.classList.remove('v-option--key-focused'));\n };\n\n const getItemElements = (): HTMLElement[] | void => {\n const menu = menuRef.value?.menu;\n if (!menu) return;\n\n const bodyEl = menu.bodyRef.value;\n\n if (!bodyEl) return;\n\n const els = (\n Array.from(bodyEl.querySelectorAll('.v-option')) as HTMLElement[]\n ).filter((el) => {\n if (el.tabIndex === -1) return false;\n const disabled = el.getAttribute('disabled');\n const ariaDisabled = el.getAttribute('aria-disabled');\n if (ariaDisabled === 'true') return false;\n return disabled == null || disabled === '';\n });\n\n if (!els.length) return;\n\n return els;\n };\n\n const arrowKeyHandler = (ev: KeyboardEvent) => {\n const { key } = ev;\n if (!menuOpened.value || !ARROW_KEY_TYPES.includes(key as any)) return;\n\n const els = getItemElements();\n\n if (!els) return;\n\n const currentEl = els.find((el) =>\n el.classList.contains('v-option--key-focused'),\n );\n const currentIndex = currentEl && els.indexOf(currentEl);\n let nextIndex: number;\n const { length } = els;\n const isUp = key === 'ArrowUp';\n if (currentIndex == null) {\n nextIndex = isUp ? length - 1 : 0;\n } else {\n const shiftAmount = key === 'ArrowUp' ? -1 : 1;\n nextIndex = currentIndex + shiftAmount;\n if (nextIndex < 0) {\n nextIndex = length - 1;\n } else if (nextIndex >= length) {\n nextIndex = 0;\n }\n }\n\n const nextEl = els[nextIndex];\n\n if (nextEl) {\n clearKeyFocused();\n nextEl.classList.add('v-option--key-focused');\n nextEl.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n ev.preventDefault();\n }\n };\n\n const choiceKeyHandler = (ev: KeyboardEvent) => {\n const { key } = ev;\n if (!menuOpened.value || !CHOICE_KEY_TYPES.includes(key as any)) return;\n\n const els = getItemElements();\n\n if (!els) return;\n\n const currentEl = els.find((el) =>\n el.classList.contains('v-option--key-focused'),\n );\n\n if (currentEl) {\n const ev = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n currentEl.dispatchEvent(ev);\n ev.preventDefault();\n nextTick(() => {\n currentEl.classList.add('v-option--key-focused');\n });\n }\n };\n\n const keyboardEventHandler = (ev: KeyboardEvent) => {\n if (ARROW_KEY_TYPES.includes(ev.key as any)) return arrowKeyHandler(ev);\n if (CHOICE_KEY_TYPES.includes(ev.key as any)) return choiceKeyHandler(ev);\n };\n\n useKeyboard(\n [\n {\n key: KEYBOARD_EVENT_TYPES,\n handler: keyboardEventHandler,\n },\n ],\n { autorun: true },\n );\n\n ctx.expose({\n control: inputControl,\n focus,\n showMenu,\n closeMenu,\n });\n\n const handleClickLabel = (ev: PointerEvent) => {\n focus();\n };\n\n return () => {\n const children = ctx.slots.default?.() || [];\n const propGroups = inputControl.propGroups.map((group) => (\n <VOptionGroup\n key={group.id}\n groupId={group.id}\n label={group.label(inputControl)}\n disabled={group.disabled}>\n {group.items.map((item) => (\n <VOption\n disabled={item.disabled}\n value={item.value}\n key={item.value}>\n {item.label(inputControl)}\n </VOption>\n ))}\n </VOptionGroup>\n ));\n\n const classes = computed(() => [\n 'v-select',\n control.classes.value,\n {\n 'v-select--multiple': inputControl.multiple,\n },\n ]);\n\n const controlDefaultSlot = () => [\n <select\n class=\"v-select__input__element\"\n name={inputControl.name}\n tabindex={inputControl.tabindex}\n disabled={inputControl.isDisabled}\n multiple={inputControl.multiple}\n onFocus={inputControl.focusHandler}\n onBlur={inputControl.blurHandler}\n v-model={inputControl.value}>\n {inputControl.items.map((item) => (\n <option value={item.propValue} key={item.propValue}>\n {item.renderDefaultSlot()}\n </option>\n ))}\n </select>,\n <div class=\"v-select__selections\">\n <div class=\"v-select__selections__inner\">\n {renderSelections(inputControl.selectedItems)}\n </div>\n </div>,\n ];\n\n const endAdornmentSlot = () => {\n if (inputControl.itemsLoadFailed) {\n return (\n <VButton\n key=\"reload\"\n icon={vui.icon('reload')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.loadItems();\n }}\n />\n );\n }\n\n if (props.clearable && inputControl.value != null) {\n return (\n <VButton\n key=\"clear\"\n icon={vui.icon('clear')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.clear();\n }}\n />\n );\n }\n\n return (\n <VIcon\n key=\"icon\"\n name={iconName}\n rotate={menuOpened.value ? 180 : 0}\n />\n );\n };\n\n const menuActivatorSlot = ({ control: menu }: VStackActivatorPayload) => (\n <VControlField\n class=\"v-select__input\"\n ref={fieldRef}\n loading={inputControl.itemsLoading}\n error={inputControl.itemsLoadFailed}\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n focused={menuOpened.value}\n autoHeight={inputControl.multiple}\n onClick={(ev) => {\n if (inputControl.canOperation && !menu.isActive) {\n let t = ev.target as HTMLElement;\n const count = 0;\n let hit = false;\n while (count < 5) {\n if (t.classList.contains('v-select__input')) {\n hit = true;\n break;\n }\n t = t.parentElement as HTMLElement;\n }\n menu.setActivator(hit ? t : ev).show();\n }\n }}\n v-slots={{\n ...ctx.slots,\n default: withCtx(controlDefaultSlot),\n endAdornment: withCtx(endAdornmentSlot),\n }}\n />\n );\n\n const menuSlots = {\n activator: menuActivatorSlot,\n default: () => (\n <div class={['v-select__body', control.classes.value]}>\n {children}\n {propGroups}\n </div>\n ),\n };\n\n const defaultSlot = () => (\n <VMenu\n width=\"fit\"\n maxWidth=\"fit\"\n closeOnNavigation={props.closeOnNavigation}\n distance={0}\n alwaysRender\n v-model={menuOpened.value}\n ref={menuRef}\n onClose={clearKeyFocused}\n v-slots={withCtxForSlots(menuSlots)}\n />\n );\n\n return (\n <VFormControl\n nodeControl={inputControl}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n hiddenInfo={props.hiddenInfo}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n }}\n />\n );\n };\n },\n});\n","import './VTextField.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createTextInputNodeSettings,\n useTextInputNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n TextInputNodeEmits,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, ExtractPropInput, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VTextCounter } from '../VTextCounter';\nimport { VUI_TEXT_FIELD_SYMBOL } from '../../injections';\n\nconst { props, emits } = createTextInputNodeSettings();\n\nconst slots = defineSlots<FormNodeWrapperSlots & InputBoxSlots>();\n\nfunction createTextFieldProps() {\n return {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n };\n}\n\nexport type TextFieldPropsOptions = ReturnType<typeof createTextFieldProps>;\n\nexport type TextFieldEmits = TextInputNodeEmits;\n\nexport type TextFieldInput = ExtractPropInput<\n ReturnType<typeof createTextFieldProps>\n>;\n\nexport const VTextField = defineComponent({\n name: 'VTextField',\n props: createTextFieldProps(),\n emits,\n slots,\n setup(props, ctx) {\n const inputControl = useTextInputNodeControl(props, ctx, {\n nodeType: VUI_TEXT_FIELD_SYMBOL,\n });\n const control = useControl(props);\n useControlField(props);\n\n const classes = computed(() => ['v-text-field', control.classes.value]);\n\n const handleClickLabel = (ev: PointerEvent) => {\n inputControl.focus();\n };\n\n const defaultSlot = () => (\n <VControlField\n class=\"v-text-field__input\"\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n v-slots={{\n ...ctx.slots,\n default: withCtx(() => [\n inputControl.createInputElement({\n class: 'v-text-field__input__element',\n }),\n inputControl.createDatalist(),\n ]),\n }}\n />\n );\n\n const infoAppendsSlot = () => {\n const { counterResult } = inputControl;\n if (!counterResult) return;\n return <VTextCounter {...counterResult} />;\n };\n\n ctx.expose({\n control: inputControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n // focused={inputControl.focused}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import { defineComponent, PropType, computed } from 'vue';\nimport {\n VTextField,\n TextFieldPropsOptions,\n TextFieldInput,\n TextFieldEmits,\n} from '../VTextField/VTextField';\n\nconst toString = (value?: string | number | null): string => {\n if (value == null) return '';\n return String(value);\n};\n\nconst toNumber = (value?: string | number | null): number | null => {\n if (value == null) return null;\n if (typeof value === 'number') return value;\n if (value.trim() === '') return null;\n return Number(value);\n};\n\nexport const VNumberField = defineComponent({\n name: 'VNumberField',\n props: {\n ...(undefined as unknown as Omit<TextFieldPropsOptions, 'type'>),\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n },\n emits: {\n ...(undefined as unknown as Omit<\n TextFieldEmits,\n 'update:modelValue' | 'change'\n >),\n 'update:modelValue': (value: number | null) => true,\n change: (value: number | null) => true,\n },\n setup(props, ctx) {\n const hasNumberMask = computed(() => {\n const { mask } = ctx.attrs as TextFieldInput;\n return (\n !!mask && typeof mask === 'object' && (mask as any).mask === Number\n );\n });\n\n const inputmode = computed<TextFieldInput['inputmode']>(() => {\n const { inputmode } = ctx.attrs as TextFieldInput;\n if (inputmode) return inputmode;\n return hasNumberMask.value ? 'decimal' : undefined;\n });\n\n const onUpdateModelValue = (value: string) => {\n ctx.emit('update:modelValue', toNumber(value));\n };\n\n const onChange = (value: string) => {\n ctx.emit('change', toNumber(value));\n };\n\n return () => (\n <VTextField\n {...ctx.attrs}\n type={hasNumberMask.value ? 'text' : 'number'}\n inputmode={inputmode.value}\n maskModel=\"typed\"\n modelValue={toString(props.modelValue)}\n onUpdate:modelValue={onUpdateModelValue}\n onChange={onChange}\n v-slots={ctx.slots as any}\n />\n );\n },\n});\n","import './VTextarea.scss';\nimport { defineComponent } from 'vue';\nimport {\n createTextareaNodeSettings,\n useTextareaNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { VTextCounter } from '../VTextCounter';\nimport { VUI_TEXTAREA_SYMBOL, useVui } from '../../injections';\n\nconst { props, emits } = createTextareaNodeSettings();\n\nconst slots = defineSlots<FormNodeWrapperSlots & InputBoxSlots>();\n\nexport const VTextarea = defineComponent({\n name: 'VTextarea',\n props: {\n ...props,\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n },\n emits,\n setup(props, ctx) {\n const vui = useVui();\n const inputControl = useTextareaNodeControl(props, ctx, {\n nodeType: VUI_TEXTAREA_SYMBOL,\n defaultRows: vui.textareaRows,\n });\n const control = useControl(props);\n useControlField(props);\n\n ctx.expose({\n control: inputControl,\n });\n\n const defaultSlot = () => (\n <VControlField\n class=\"v-textarea__input\"\n size={control.size.value}\n autoHeight\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n v-slots={{\n ...ctx.slots,\n default: withCtx(() =>\n inputControl.createInputElement({\n class: 'v-textarea__input__element',\n }),\n ),\n }}\n />\n );\n\n const infoAppendsSlot = () => {\n const { counterResult } = inputControl;\n if (!counterResult) return;\n return <VTextCounter {...counterResult} />;\n };\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n class={['v-textarea', control.classes.value]}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n hiddenInfo={props.hiddenInfo}\n requiredChip={props.requiredChip}\n onClickLabel={(ev) => {\n inputControl.focus();\n }}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import './VFileInput.scss';\nimport { defineComponent, computed } from 'vue';\nimport {\n createFileInputNodeSettings,\n useFileInputNodeControl,\n createFormNodeWrapperProps,\n FormNodeWrapperSlots,\n FileInputNodeEmits,\n type FileInputNodeControl,\n} from '@fastkit/vue-form-control';\nimport { defineSlots, ExtractPropInput, withCtx } from '@fastkit/vue-utils';\nimport { VFormControl } from '../VFormControl';\nimport {\n VControlField,\n createControlFieldProps,\n InputBoxSlots,\n} from '../VControlField';\nimport {\n createControlProps,\n useControl,\n createControlFieldProviderProps,\n useControlField,\n} from '../../composables';\nimport { colorSchemeProps } from '@fastkit/vue-color-scheme';\nimport { VUI_FILE_INPUT_SYMBOL, useVui } from '../../injections';\nimport { VButton } from '../VButton';\n\nconst { props, emits } = createFileInputNodeSettings();\n\nconst slots = defineSlots<\n FormNodeWrapperSlots &\n InputBoxSlots & {\n selections?: (control: FileInputNodeControl) => any;\n }\n>();\n\nfunction createFileInputProps() {\n return {\n ...props,\n ...colorSchemeProps(),\n ...createFormNodeWrapperProps(),\n ...createControlFieldProps(),\n ...createControlFieldProviderProps(),\n ...createControlProps(),\n ...slots(),\n buttonText: {\n type: String,\n default: 'Choose File',\n },\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n };\n}\n\nexport type FileInputPropsOptions = ReturnType<typeof createFileInputProps>;\n\nexport type FileInputEmits = FileInputNodeEmits;\n\nexport type FileInputInput = ExtractPropInput<\n ReturnType<typeof createFileInputProps>\n>;\n\nexport const VFileInput = defineComponent({\n name: 'VFileInput',\n props: createFileInputProps(),\n emits,\n slots,\n setup(props, ctx) {\n const vui = useVui();\n const inputControl = useFileInputNodeControl(props, ctx, {\n nodeType: VUI_FILE_INPUT_SYMBOL,\n });\n const control = useControl(props);\n useControlField(props);\n\n const classes = computed(() => ['v-file-input', control.classes.value]);\n\n const handleClickLabel = (ev: PointerEvent) => {\n inputControl.focus();\n };\n\n const endAdornmentSlot = () => {\n // }\n if (props.clearable && inputControl.value.length) {\n return (\n <VButton\n key=\"clear\"\n icon={vui.icon('clear')}\n rounded\n onClick={(ev) => {\n ev.stopPropagation();\n inputControl.clear();\n }}\n />\n );\n }\n };\n\n const showDialog = () => {\n if (inputControl.canOperation) {\n inputControl.inputElement?.click();\n }\n };\n\n const renderSelections = () => {\n if (ctx.slots.selections) {\n return ctx.slots.selections(inputControl);\n }\n\n const { files } = inputControl.selectionContext;\n if (!files.length)\n return (\n <span class=\"v-file-input__placeholder\">\n {inputControl.placeholder || 'No file chosen'}\n </span>\n );\n return files.map((file) => file.truncatedName).join(', ');\n };\n\n const defaultSlot = () => (\n <div class=\"v-file-input__inner\">\n <VButton\n key=\"open\"\n class=\"v-file-input__button\"\n color={'base' as any}\n size={props.size}\n startIcon={vui.icon('fileUpload')}\n variant={vui.setting('containedVariant')}\n onClick={showDialog}>\n {props.buttonText}\n </VButton>\n <VControlField\n class=\"v-file-input__input\"\n startAdornment={props.startAdornment}\n endAdornment={props.endAdornment}\n size={control.size.value}\n onClick={showDialog}\n autoHeight\n v-slots={{\n ...ctx.slots,\n default: withCtx(() => [\n inputControl.createInputElement({\n class: 'v-file-input__input__element',\n }),\n <div class=\"v-file-input__selections\">{renderSelections()}</div>,\n ]),\n endAdornment: withCtx(endAdornmentSlot),\n }}\n />\n </div>\n );\n\n ctx.expose({\n control: inputControl,\n });\n\n return () => (\n <VFormControl\n nodeControl={inputControl}\n // focused={inputControl.focused}\n hiddenInfo={props.hiddenInfo}\n class={classes.value}\n label={props.label}\n hint={props.hint}\n hinttip={props.hinttip}\n requiredChip={props.requiredChip}\n onClickLabel={handleClickLabel}\n v-slots={{\n ...ctx.slots,\n default: withCtx(defaultSlot),\n // infoAppends: withCtx(infoAppendsSlot),\n }}\n />\n );\n },\n});\n","import { defineComponent } from 'vue';\nimport {\n FormGroupControl,\n createFormGroupSettings,\n useFormGroup,\n FormNodeErrorSlotsSource,\n} from '@fastkit/vue-form-control';\nimport { DefineSlotsType, defineSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_FORM_GROUP_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormGroupSettings();\n\nexport type VFormGroupSlots = DefineSlotsType<{\n default?: (form: FormGroupControl) => any;\n}>;\n\nexport const formGroupSlots = defineSlots<\n VFormGroupSlots & FormNodeErrorSlotsSource\n>();\n\nexport function createVFormGroupProps() {\n return {\n ...props,\n ...createControlProps(),\n ...formGroupSlots(),\n };\n}\n\nexport const VFormGroup = defineComponent({\n name: 'VFormGroup',\n inheritAttrs: false,\n props: createVFormGroupProps(),\n emits,\n slots: formGroupSlots,\n setup(props, ctx) {\n const nodeControl = useFormGroup(props, ctx as any, {\n nodeType: VUI_FORM_GROUP_SYMBOL,\n });\n useControl(props);\n\n ctx.expose({\n control: nodeControl,\n });\n\n return () => ctx.slots.default?.(nodeControl);\n },\n});\n","import {\n defineComponent,\n computed,\n type RenderFunction,\n getCurrentInstance,\n} from 'vue';\nimport {\n VueForm,\n createFormSettings,\n useForm,\n} from '@fastkit/vue-form-control';\nimport { DefineSlotsType, defineSlots } from '@fastkit/vue-utils';\nimport { createControlProps, useControl } from '../../composables';\nimport { VUI_FORM_SYMBOL } from '../../injections';\n\nconst { props, emits } = createFormSettings({\n nodeType: VUI_FORM_SYMBOL,\n});\n\n/**\n * @TODO Externalize\n */\nfunction useRender(render: RenderFunction) {\n const vm = getCurrentInstance() as any;\n vm.render = render;\n}\n\nexport type VFormSlots = DefineSlotsType<{\n default?: (form: VueForm) => any;\n}>;\n\nexport const formSlots = defineSlots<VFormSlots>();\n\nexport function createVFormProps() {\n return {\n ...props,\n ...createControlProps(),\n ...formSlots(),\n };\n}\n\nexport const VForm = defineComponent({\n name: 'VForm',\n props: createVFormProps(),\n emits,\n slots: formSlots,\n setup(props, ctx) {\n const nodeControl = useForm(props, ctx as any, {\n nodeType: VUI_FORM_SYMBOL,\n });\n const classes = computed(() => [\n 'v-form',\n {\n 'v-form--valid': nodeControl.valid,\n 'v-form--invalid': nodeControl.invalid,\n 'v-form--disabled': nodeControl.isDisabled,\n 'v-form--validating': nodeControl.validating,\n 'v-form--pending': nodeControl.pending,\n 'v-form--sending': nodeControl.sending,\n },\n ]);\n useControl(props);\n\n useRender(() => (\n <form class={classes.value} {...nodeControl.formAttrs}>\n {ctx.slots.default?.(nodeControl)}\n </form>\n ));\n\n return {\n control: nodeControl,\n };\n },\n});\n","import './VTab.scss';\n\nimport {\n defineComponent,\n PropType,\n computed,\n ComponentPublicInstance,\n} from 'vue';\nimport { RouteLocationRaw, RouterLink } from 'vue-router';\nimport { RawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport interface VTabExpose {\n value: string;\n active: boolean;\n}\n\nexport interface VTabRef extends ComponentPublicInstance, VTabExpose {}\n\nexport const VTab = defineComponent({\n name: 'VTab',\n props: {\n value: {\n type: String,\n required: true,\n },\n active: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n icon: [String, Function] as PropType<RawIconProp>,\n },\n emits: {\n click: (ev: PointerEvent) => true,\n },\n setup(props, ctx) {\n const classesRef = computed(() => ({\n 'v-tab--active': props.active,\n }));\n\n const exposeValues: VTabExpose = {\n value: props.value,\n active: props.active,\n };\n\n ctx.expose(exposeValues);\n\n return () => {\n const { to, value, icon, active } = props;\n const classes = ['v-tab', classesRef.value];\n\n const children = (\n <span class=\"v-tab__content\">\n {icon &&\n resolveRawIconProp(active, icon, {\n class: 'v-tab__icon',\n })}\n {ctx.slots.default?.()}\n </span>\n );\n\n if (to) {\n const replace = typeof to === 'string' ? undefined : to.replace;\n return (\n <RouterLink class={classes} to={to} replace={replace}>\n {children}\n </RouterLink>\n );\n }\n return (\n <button\n class={classes}\n type=\"button\"\n value={value}\n onClick={(ev) => {\n ctx.emit('click', ev);\n }}>\n {children}\n </button>\n );\n };\n },\n});\n","import './VTabs.scss';\nimport {\n defineComponent,\n VNodeChild,\n ref,\n PropType,\n computed,\n watch,\n onBeforeUnmount,\n onBeforeUpdate,\n onMounted,\n} from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\nimport { RouteLocationRaw, RouteLocation } from 'vue-router';\nimport { VScroller, ScrollResult } from '@fastkit/vue-scroller';\nimport { useScopeColorClass, ScopeName } from '@fastkit/vue-color-scheme';\nimport { isPromise } from '@fastkit/helpers';\nimport { VTab, VTabRef } from './VTab';\nimport { useVui } from '../../injections';\nimport { VuiService } from '../../service';\nimport { RawIconProp } from '../VIcon';\n\nexport interface VTabsItemLabelSlotCtx {\n value: string;\n active: boolean;\n vui: VuiService;\n}\n\nexport type VTabsItemLabelSlot = (ctx: VTabsItemLabelSlotCtx) => VNodeChild;\n\nexport type VTabsRouterHandler = (value: string) => RouteLocationRaw;\n\nexport type VTabsGuard = (\n nextValue: string,\n oldValue: string,\n) => boolean | void | undefined | Promise<boolean | void | undefined>;\n\nexport interface VTabsItem {\n value: string;\n icon?: RawIconProp;\n label?: VNodeChild | VTabsItemLabelSlot;\n}\n\nconst slots = defineSlots<{\n item?: (ctx: VTabsItemLabelSlotCtx) => any;\n}>();\n\nexport const VTabs = defineComponent({\n name: 'VTabs',\n props: {\n modelValue: String,\n\n items: {\n type: Array as PropType<VTabsItem[]>,\n required: true,\n },\n\n /**\n * 自動スクロールする際の余剰オフセット幅(px)\n */\n autoScrollOffset: {\n type: Number,\n default: 20,\n },\n\n /**\n * ルーター同期する場合設定する\n */\n router: Function as PropType<VTabsRouterHandler>,\n\n /**\n * ルーティング連携を行う際に、クエリベースのURLマッチングを行う\n * タブのURLが /page1?tab=xxx のようになる時に設定する\n */\n withQuery: Boolean,\n color: String as PropType<ScopeName>,\n onBeforeChange: Function as PropType<VTabsGuard>,\n ...slots(),\n },\n emits: {\n 'update:modelValue': (newValue: string) => true,\n change: (newValue: string) => true,\n },\n slots,\n setup(props, ctx) {\n const vui = useVui();\n\n const internalValueRef = ref<string>(null as any);\n const ScrollerRef = VScroller.$ref();\n const elRef = ref<HTMLElement>(null as any);\n let scrollResult: ScrollResult | undefined;\n const tabRefs = ref<VTabRef[]>([]);\n\n const currentRef = computed({\n get: () => internalValueRef.value,\n set: (value) => {\n if (internalValueRef.value !== value) {\n internalValueRef.value = value;\n ctx.emit('update:modelValue', value);\n ctx.emit('change', value);\n }\n },\n });\n\n const colorScope = useScopeColorClass({\n color: () => props.color || vui.setting('tabDefault').color,\n });\n\n const classes = computed(() => [colorScope.value.className]);\n\n const computedItemsRef = computed(() => {\n const current = currentRef.value;\n const { router } = props;\n return props.items.map((item) => {\n const { value } = item;\n const active = current === value;\n let location:\n | {\n to: RouteLocationRaw;\n route: RouteLocation & {\n href: string;\n };\n }\n | undefined;\n\n if (router) {\n const to = router(value);\n const route = vui.router.resolve(to);\n location = { to, route };\n }\n\n return {\n ...item,\n active,\n location,\n };\n });\n });\n\n const setTabRef = (ref: VTabRef) => {\n tabRefs.value.push(ref);\n };\n\n function setupInternalValue(routable?: boolean) {\n let value = props.modelValue;\n if (value == null || value === '') {\n const firstItem = props.items[0];\n if (!firstItem) return;\n value = firstItem.value;\n }\n if (internalValueRef.value !== value) {\n internalValueRef.value = value;\n\n if (routable) {\n const { router } = props;\n if (!router) return;\n const hit = computedItemsRef.value.find(\n (item) => item.value === value,\n );\n if (!hit) return;\n const { location } = hit;\n if (!location) return;\n\n const { to, route } = location;\n if (route.fullPath === vui.location.currentRoute.fullPath) return;\n vui.router[to.replace ? 'replace' : 'push'](to);\n } else if (!props.router && props.modelValue !== value) {\n ctx.emit('update:modelValue', value);\n ctx.emit('change', value);\n }\n }\n }\n\n async function to(value: string) {\n const { value: currentValue } = currentRef;\n if (currentValue === value) {\n return;\n }\n const { onBeforeChange } = props;\n if (onBeforeChange) {\n let result = onBeforeChange(value, currentRef.value);\n if (isPromise(result)) {\n result = await result;\n }\n if (result === false) {\n return;\n }\n }\n currentRef.value = value;\n }\n\n function cancelScroll() {\n if (scrollResult) {\n scrollResult.cancel();\n scrollResult = undefined;\n }\n }\n\n const findTab = (tab: string) => tabRefs.value.find((t) => t.value === tab);\n\n function scrollToTab(tabValue: string) {\n const tab = findTab(tabValue);\n if (!tab) return;\n const $tab = tab.$el as HTMLElement;\n if (!$tab) return;\n\n const scroller = ScrollerRef.instance;\n if (!scroller) return;\n const container = scroller.scroller.element();\n if (!container) return;\n\n const { autoScrollOffset } = props;\n const tabLeft = $tab.offsetLeft;\n const tabWidth = $tab.offsetWidth;\n const tabRight = tabLeft + tabWidth;\n let hiddenLeft = 0;\n let hiddenRight = 0;\n\n const { scrollLeft, offsetWidth: scrollerWidth } = container;\n hiddenLeft = Math.max(scrollLeft - tabLeft, 0);\n hiddenRight = Math.max(tabRight - scrollerWidth - scrollLeft, 0);\n\n if (hiddenLeft > 0) hiddenLeft += autoScrollOffset;\n if (hiddenRight > 0) hiddenRight += autoScrollOffset;\n\n let scrollAmount = 0;\n if (hiddenRight > 0) {\n scrollAmount = hiddenRight;\n }\n if (hiddenLeft > 0) {\n scrollAmount = -hiddenLeft;\n }\n\n if (Math.abs(scrollAmount) > 0) {\n cancelScroll();\n scrollResult = scroller.scroller.by(scrollAmount, 0, {\n duration: 150,\n });\n }\n }\n\n watch(\n () => props.modelValue,\n () => setupInternalValue(true),\n );\n\n watch(\n () => props.items,\n () => setupInternalValue(),\n { deep: true },\n );\n\n watch(\n () => internalValueRef.value,\n (newValue) => {\n scrollToTab(newValue);\n },\n );\n\n vui.location.watchRoute(\n (route) => {\n if (!props.router) return;\n const path = props.withQuery ? route.fullPath : route.path;\n const hit = computedItemsRef.value.find(\n ({ location }) => location && location.route.fullPath === path,\n );\n if (hit) {\n currentRef.value = hit.value;\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n scrollToTab(currentRef.value);\n });\n\n onBeforeUnmount(() => {\n cancelScroll();\n });\n\n onBeforeUpdate(() => {\n tabRefs.value = [];\n });\n\n setupInternalValue();\n\n return () => {\n const items = computedItemsRef.value;\n const itemSlot = ctx.slots.item;\n const children = items.map(({ value, active, label, icon, location }) => {\n if (!label) {\n label = itemSlot;\n }\n\n const children =\n typeof label === 'function' ? label({ value, active, vui }) : label;\n\n const _to = (location && location.to) || undefined;\n\n return (\n <VTab\n value={value}\n to={_to}\n icon={icon}\n active={active}\n ref={setTabRef as any}\n onClick={(e) => {\n if (!e.defaultPrevented) {\n to(value);\n }\n }}>\n {children}\n </VTab>\n );\n });\n\n return (\n <div class={['v-tabs', classes.value]} ref={elRef}>\n <ScrollerRef\n class=\"v-tabs__scroller\"\n containerClass=\"v-tabs__scroller__container\"\n guide>\n <div class=\"v-tabs__content\">{children}</div>\n </ScrollerRef>\n </div>\n );\n };\n },\n});\n","import './VBreadcrumbs.scss';\n\nimport { defineComponent, PropType, VNodeChild, computed } from 'vue';\nimport { VAction, ActionableInheritProps } from '@fastkit/vue-action';\nimport { useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { RawIconProp, resolveRawIconProp } from '../VIcon';\n\nexport interface BreadcrumbsItem extends Pick<\n ActionableInheritProps,\n 'to' | 'disabled'\n> {\n /**\n * \"正確なマッチモード\" を強制する場合true\n */\n // exact?: boolean;\n icon?: RawIconProp;\n text: VNodeChild | ((vui: VuiService) => VNodeChild);\n}\n\nexport type RawBreadcrumbsItem = string | BreadcrumbsItem;\n\nexport const VBreadcrumbs = defineComponent({\n name: 'VBreadcrumbs',\n props: {\n items: {\n type: Array as PropType<BreadcrumbsItem[]>,\n default: () => [],\n },\n divider: [String, Function] as PropType<\n VNodeChild | ((vui: VuiService) => VNodeChild)\n >,\n },\n setup(props, ctx) {\n const vui = useVui();\n\n const computedItemsRef = computed(() => {\n const items: BreadcrumbsItem[] = props.items.map((rawItem) =>\n typeof rawItem === 'string'\n ? {\n text: rawItem,\n }\n : rawItem,\n );\n\n return items.map((item) => {\n const { to, text } = item;\n const {\n disabled = vui.location.match(to) || !vui.location.isAvailable(to),\n } = item;\n return {\n ...item,\n disabled,\n text: typeof text === 'function' ? text(vui) : text,\n };\n });\n });\n\n const lengthRef = computed(() => computedItemsRef.value.length);\n\n const defaultDividerSlot = () => [\n <i class=\"v-breadcrumbs__divider__icon\" />,\n ];\n\n return () => {\n if (lengthRef.value < 1) return;\n\n let dividerSlot: (vui: VuiService) => VNodeChild;\n const propDivider = props.divider;\n if (propDivider) {\n dividerSlot =\n typeof propDivider === 'function' ? propDivider : () => propDivider;\n } else {\n dividerSlot = defaultDividerSlot;\n }\n\n const children: VNodeChild[] = [];\n\n computedItemsRef.value.forEach((item, index) => {\n const { text, icon, disabled, to } = item;\n\n if (index > 0) {\n const divider = dividerSlot(vui);\n if (divider) {\n children.push(\n <li class=\"v-breadcrumbs__divider\" key={`divider-${index}`}>\n {divider}\n </li>,\n );\n }\n }\n const myChildren: VNodeChild[] = [];\n\n if (icon) {\n const $icon = resolveRawIconProp(false, icon, {\n class: 'v-breadcrumbs__icon',\n });\n if ($icon) {\n myChildren.push($icon);\n }\n }\n\n if (text) myChildren.push(text);\n\n const itemChild = to ? (\n <VAction\n class=\"v-breadcrumbs__link\"\n to={to}\n exactActiveClass=\"v-breadcrumbs__link--active\"\n // exact={exact}\n >\n {myChildren}\n </VAction>\n ) : (\n myChildren\n );\n\n children.push(\n <li\n class={[\n 'v-breadcrumbs__item',\n {\n 'v-breadcrumbs__item--disabled': disabled,\n },\n ]}\n key={`link-${index}`}>\n {itemChild}\n </li>,\n );\n });\n\n return (\n <nav class=\"v-breadcrumbs\">\n <ul class=\"v-breadcrumbs__list\">{children}</ul>\n </nav>\n );\n };\n },\n});\n","import './VContentSwitcher.scss';\n\nimport {\n defineComponent,\n PropType,\n ref,\n computed,\n watch,\n Transition,\n} from 'vue';\nimport { getDocumentScroller } from '@fastkit/vue-scroller';\nimport { VTabsItem } from '../VTabs/VTabs';\n\nexport interface ContentSwitcherSeeTopOptions {\n /**\n * スクロールする際のオフセット高px\n */\n offset?: number;\n\n /**\n * スクロール期間\n */\n duration?: number;\n}\n\nexport const VContentSwitcher = defineComponent({\n name: 'VContentSwitcher',\n props: {\n modelValue: String,\n order: {\n type: Array as PropType<(string | VTabsItem)[]>,\n default: () => [],\n },\n autotop: [Boolean, Object] as PropType<\n boolean | ContentSwitcherSeeTopOptions\n >,\n },\n emits: {\n 'update:modelValue': (modelValue: string) => true,\n },\n setup(props, ctx) {\n const internalValueRef = ref('');\n const transitionRef = ref('');\n const elRef = ref<HTMLElement | null>(null);\n const anchorRef = ref<HTMLElement | null>(null);\n const computedOrderRef = computed(() =>\n props.order.map((row) => (typeof row === 'string' ? row : row.value)),\n );\n const currentRef = computed({\n get: () => internalValueRef.value,\n set: (current) => {\n if (internalValueRef.value !== current) {\n internalValueRef.value = current;\n ctx.emit('update:modelValue', current);\n }\n },\n });\n const autotopSettingsRef = computed<\n ContentSwitcherSeeTopOptions | undefined\n >(() => {\n let { autotop: settings } = props;\n if (settings === true) settings = {};\n if (!settings) return;\n return {\n ...settings,\n };\n });\n\n function seeTop(options?: ContentSwitcherSeeTopOptions) {\n const scroller = getDocumentScroller();\n const { value: anchor } = anchorRef;\n if (anchor) {\n scroller.toElement(anchor, options);\n }\n }\n\n function getEl() {\n const el = elRef.value;\n if (!el) {\n throw new Error('missing element');\n }\n return el;\n }\n\n watch(\n () => props.modelValue,\n (value, beforeValue) => {\n if (value == null) return;\n internalValueRef.value = value;\n\n if (beforeValue == null) return;\n\n const order = computedOrderRef.value;\n const index = order.indexOf(value);\n const beforeIndex = order.indexOf(beforeValue);\n\n let transition = 'fade';\n if (index !== -1 && beforeIndex !== -1) {\n if (index > beforeIndex) transition = 'v-content-switcher-next';\n if (index < beforeIndex) transition = 'v-content-switcher-prev';\n }\n transitionRef.value = transition;\n },\n { immediate: true },\n );\n\n watch(currentRef, () => {\n const autotopSettings = autotopSettingsRef.value;\n if (autotopSettings && props.modelValue != null) {\n seeTop(autotopSettings);\n }\n });\n\n return () => {\n const current = currentRef.value;\n const children = ctx.slots.default?.() || [];\n const currentSlot = ctx.slots[current];\n\n if (currentSlot) {\n children.push(\n <div class=\"v-content-switcher__content\" key={current}>\n {currentSlot(this)}\n </div>,\n );\n }\n\n return (\n <div class=\"v-content-switcher\" ref={elRef}>\n <div class=\"v-content-switcher__anchor\" ref={anchorRef} />\n <Transition\n name={transitionRef.value}\n onBeforeLeave={(el) => {\n getEl().style.height = `${(el as HTMLElement).offsetHeight}px`;\n }}\n onEnter={(el) => {\n getEl().style.height = `${(el as HTMLElement).offsetHeight}px`;\n }}\n onAfterEnter={() => {\n getEl().style.height = '';\n }}\n onEnterCancelled={() => {\n getEl().style.height = '';\n }}\n onLeaveCancelled={() => {\n getEl().style.height = '';\n }}>\n {children}\n </Transition>\n </div>\n );\n };\n },\n});\n","import './VDataTable.scss';\n\nimport {\n defineComponent,\n VNodeChild,\n PropType,\n ref,\n computed,\n onMounted,\n watch,\n CSSProperties,\n VNodeArrayChildren,\n withDirectives,\n Transition,\n isVNode,\n HTMLAttributes,\n} from 'vue';\nimport { VNodeChildOrSlot } from '@fastkit/vue-utils';\nimport { resizeDirectiveArgument } from '@fastkit/vue-resize';\nimport { VueAppLayout } from '@fastkit/vue-app-layout';\nimport { ScopeName, toScopeColorClass } from '@fastkit/vue-color-scheme';\nimport { useVui } from '../../injections';\nimport type { VuiService } from '../../service';\nimport { VSelect } from '../VSelect';\nimport { VPagination } from '../VPagination';\nimport { VCheckbox } from '../VCheckbox';\nimport { VIcon, resolveRawIconProp } from '../VIcon';\nimport { VProgressCircular } from '../loading';\nimport { VPaper } from '../VPaper';\n\nexport type DataTableHeaderAlign = 'left' | 'center' | 'right';\n\nconst DATA_TABLE_DEFAULTS = {\n itemKey: 'id',\n pageQuery: 'page',\n sortQuery: 'sort',\n orderQuery: 'order',\n limitQuery: 'limit',\n defaultOrder: 'ASC',\n ascQueryValue: 'ASC',\n descQueryValue: 'DESC',\n limits: [5, 10, 20, 50, 100],\n limitDefault: 20,\n controlThreshold: 10,\n searchQuery: [] as string | string[],\n};\n\nexport type DataTableDefaults = typeof DATA_TABLE_DEFAULTS;\n\nexport function configureDataTableDefaults(\n defaults: Partial<DataTableDefaults>,\n) {\n Object.assign(DATA_TABLE_DEFAULTS, defaults);\n if (!defaults.defaultOrder && defaults.ascQueryValue) {\n DATA_TABLE_DEFAULTS.defaultOrder = defaults.ascQueryValue;\n }\n}\n\nexport interface DataTableItem {\n [key: string]: any;\n}\n\nexport interface DataTableItemSlotPayload<\n T extends DataTableItem = DataTableItem,\n> {\n key: string;\n item: T;\n /**\n * 選択されている場合true\n */\n selected: boolean;\n}\n\nexport interface DataTableCellSlotPayload<\n T extends DataTableItem = DataTableItem,\n> {\n vui: VuiService;\n item: T;\n /**\n * 選択されている場合true\n */\n selected: boolean;\n}\n\nexport interface DataTableHeader<T extends DataTableItem = DataTableItem> {\n key: number | string;\n label?: VNodeChild | ((vui: VuiService) => VNodeChild);\n sortQuery?: string;\n hidden?: boolean | (() => boolean);\n align?: DataTableHeaderAlign;\n cell?: (payload: DataTableCellSlotPayload<T>) => VNodeChild;\n}\n\nexport interface DataTableRowSettings<T extends DataTableItem = DataTableItem> {\n color?: ScopeName;\n attrs?: HTMLAttributes;\n}\n\nexport type DataTableRowSettingsFn<T extends DataTableItem = DataTableItem> = (\n payload: DataTableItemSlotPayload<T>,\n) => DataTableRowSettings<T>;\n\nexport type RawDataTableRowSettings<T extends DataTableItem = DataTableItem> =\n DataTableRowSettingsFn<T> | DataTableRowSettings<T>;\n\nconst SELECTABLE_HEADER_SYMBOL = '__selectable_header__';\n\nexport const VDataTable = defineComponent({\n name: 'VDataTable',\n props: {\n /** 選択中のkeyの配列 */\n modelValue: {\n type: Array as PropType<string[]>,\n default: () => [],\n },\n\n itemKey: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.itemKey,\n },\n\n /**\n * ページネーションクエリ名\n */\n pageQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.pageQuery,\n },\n\n /**\n * ソートクエリ名\n */\n sortQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.sortQuery,\n },\n\n /**\n * 表示順クエリ名\n */\n orderQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.orderQuery,\n },\n\n /**\n * 検索クエリ名\n */\n searchQuery: {\n type: [String, Array] as PropType<string | string[]>,\n default: () => DATA_TABLE_DEFAULTS.searchQuery,\n },\n\n /**\n * リミット件数クエリ名\n */\n limitQuery: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.limitQuery,\n },\n defaultOrder: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.defaultOrder,\n },\n ascQueryValue: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.ascQueryValue,\n },\n descQueryValue: {\n type: String,\n default: () => DATA_TABLE_DEFAULTS.descQueryValue,\n },\n limits: {\n type: Array as PropType<number[]>,\n default: () => DATA_TABLE_DEFAULTS.limits,\n },\n limitDefault: {\n type: Number,\n default: () => DATA_TABLE_DEFAULTS.limitDefault,\n },\n controlThreshold: {\n type: Number,\n default: () => DATA_TABLE_DEFAULTS.controlThreshold,\n },\n headers: {\n type: Array as PropType<DataTableHeader<any>[]>,\n required: true,\n },\n items: {\n type: Array as PropType<DataTableItem[]>,\n default: () => [],\n },\n total: {\n type: Number,\n default: 0,\n },\n selectable: Boolean,\n fixedHeader: Boolean,\n maxHeight: [Number, String],\n // eslint-disable-next-line vue/require-prop-types\n noDataMessage: {} as PropType<VNodeChildOrSlot>,\n // eslint-disable-next-line vue/require-prop-types\n noResultsMessage: {} as PropType<VNodeChildOrSlot>,\n rowSettings: [Object, Function] as PropType<RawDataTableRowSettings>,\n },\n emits: {\n input: (selectedValues: string[]) => true,\n },\n setup(props, ctx) {\n const vui = useVui();\n const bootedRef = ref(false);\n const footerHeightRef = ref(0);\n const internalValues = ref<string[]>(props.modelValue.slice());\n const rowSettings = computed<DataTableRowSettingsFn>(() => {\n const { rowSettings } = props;\n if (!rowSettings) return () => ({});\n return typeof rowSettings === 'function'\n ? rowSettings\n : () => rowSettings;\n });\n const containedVariant = vui.setting('containedVariant');\n\n const sortedItemKeysRef = computed(() =>\n props.items.map((item) => item[props.itemKey]),\n );\n const isEmptyRef = computed(() => props.items.length === 0);\n const headersRef = computed<DataTableHeader[]>(() => {\n const { headers, selectable } = props;\n const ret: DataTableHeader[] = [];\n if (selectable) {\n ret.push({\n key: SELECTABLE_HEADER_SYMBOL,\n });\n }\n ret.push(\n ...headers.filter(\n ({ hidden }) => !(typeof hidden === 'function' ? hidden() : hidden),\n ),\n );\n return ret;\n });\n\n const searchQueryValues = computed<string[]>(() => {\n let { searchQuery } = props;\n if (!searchQuery) {\n return [];\n }\n if (!Array.isArray(searchQuery)) {\n searchQuery = [searchQuery];\n }\n const values: string[] = [];\n searchQuery.forEach((query) => {\n const value = vui.location.getQuery(query);\n if (value == null || value === '') {\n return;\n }\n if (typeof value === 'object' && !Object.keys(value).length) {\n return;\n }\n values.push(value);\n });\n return values;\n });\n\n const emptyMessage = computed(() => {\n let message: VNodeChildOrSlot;\n if (searchQueryValues.value.length) {\n message =\n props.noResultsMessage ||\n vui.setting('noResultsMessage') ||\n 'No search results found.'; // 検索結果が見つかりませんでした。\n } else {\n message =\n props.noDataMessage ||\n vui.setting('noDataMessage') ||\n 'No data was available.'; // データはありませんでした。\n }\n return typeof message === 'function' ? message(vui) : message;\n });\n\n const classesRef = computed(() => [\n {\n 'v-data-table--fixed-header': props.fixedHeader,\n },\n ]);\n\n const layout = VueAppLayout.use();\n\n const bodyInnerStylesRef = computed<CSSProperties | undefined>(() => {\n if (!bootedRef.value) return;\n\n const { fixedHeader, maxHeight } = props;\n const footerHeight = footerHeightRef.value;\n\n const _maxHeight = maxHeight || (fixedHeader ? '100%' : maxHeight);\n\n if (!_maxHeight) {\n return;\n }\n\n return {\n maxHeight: layout.calculateViewHeight(\n _maxHeight,\n -footerHeight - 100,\n 200,\n ),\n };\n });\n\n const defaultOrderQueryRef = computed(() =>\n props.defaultOrder === props.ascQueryValue\n ? props.ascQueryValue\n : props.descQueryValue,\n );\n\n const isTransitioningRef = computed(() =>\n vui.location.isQueryOnlyTransitioning([\n props.pageQuery,\n props.sortQuery,\n props.orderQuery,\n props.limitQuery,\n ]),\n );\n\n const pageRef = computed(() =>\n vui.location.getQuery(props.pageQuery, Number, 1),\n );\n\n const needShowHeaderControlRef = computed(\n () => props.items.length > props.controlThreshold,\n );\n\n const sortByRef = computed({\n get: () => vui.location.getQuery(props.sortQuery),\n set(value) {\n vui.location.pushQuery({\n [props.sortQuery]: value || null,\n [props.pageQuery]: 1,\n });\n },\n });\n\n const ordersRef = computed(() => [\n props.ascQueryValue,\n props.descQueryValue,\n ]);\n\n const usePagingRef = computed(() => props.limits.length > 0);\n\n const orderByRef = computed({\n get: () => {\n const value = vui.location.getQuery(props.orderQuery);\n if (typeof value !== 'string' || !ordersRef.value.includes(value)) {\n return;\n }\n return value;\n },\n set(value) {\n vui.location.pushQuery({\n [props.orderQuery]: value || null,\n [props.pageQuery]: 1,\n });\n },\n });\n\n const offsetRef = computed(() => (pageRef.value - 1) * limitRef.value);\n\n const limitRef = computed({\n get: () =>\n vui.location.getQuery(props.limitQuery, Number, props.limitDefault),\n set: (value) => {\n const page = Math.floor(offsetRef.value / value) + 1;\n vui.location.pushQuery({\n [props.limitQuery]: value,\n [props.pageQuery]: page,\n });\n },\n });\n\n const pageLengthRef = computed(() => {\n const { total } = props;\n const _limit = limitRef.value;\n if (!total) return 0;\n return Math.ceil(total / _limit);\n });\n\n const lengthRef = computed(() => props.items.length);\n\n const isASCRef = computed(() => orderByRef.value === props.ascQueryValue);\n // const isDESCRef = computed(() => orderByRef.value === props.descQueryValue);\n const sortIconRef = computed(() => {\n let icon = vui.icon('sort');\n if (typeof icon === 'string') {\n const name = icon;\n icon = (gen) =>\n gen({\n name,\n rotate: isASCRef.value ? 180 : 0,\n });\n }\n return icon;\n });\n\n const isIndeterminateRef = computed(() => {\n const { length } = internalValues.value;\n return length > 0 && length < sortedItemKeysRef.value.length;\n });\n\n const isAllSelectedRef = computed(\n () => internalValues.value.length === sortedItemKeysRef.value.length,\n );\n\n function setSort(settings: { sort?: string; order?: string }) {\n const { sort, order } = settings;\n if (\n (sort === undefined || sortByRef.value === sort) &&\n (order === undefined || orderByRef.value === order)\n )\n return;\n\n const queries: { [key: string]: string } = {};\n if (sort) {\n queries[props.sortQuery] = sort as string;\n }\n if (order) {\n queries[props.orderQuery] = order as string;\n }\n\n vui.location.pushQuery({\n ...queries,\n ...(usePagingRef.value\n ? {\n [props.pageQuery]: 1,\n }\n : undefined),\n });\n }\n\n function toggleOrderBy() {\n return setSort({\n order:\n orderByRef.value === props.ascQueryValue\n ? props.descQueryValue\n : props.ascQueryValue,\n });\n }\n\n function isSelected(key: string) {\n return internalValues.value.includes(key);\n }\n\n function select(key: string) {\n if (!internalValues.value.includes(key)) {\n const values = internalValues.value.slice();\n values.push(key);\n const sortedKeys = sortedItemKeysRef.value;\n values.sort((a, b) => {\n const ai = sortedKeys.indexOf(a);\n const bi = sortedKeys.indexOf(b);\n if (ai < bi) return -1;\n if (ai > bi) return 1;\n return 0;\n });\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function selectAll() {\n if (!isAllSelectedRef.value) {\n const values = sortedItemKeysRef.value.slice();\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function deselectAll() {\n if (internalValues.value.length) {\n const values: string[] = [];\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function deselect(key: string) {\n const values = internalValues.value.slice();\n const index = values.indexOf(key);\n if (index !== -1) {\n values.splice(index, 1);\n internalValues.value = values;\n ctx.emit('input', values);\n }\n }\n\n function handleClickSortHeader(header: DataTableHeader, ev: PointerEvent) {\n const { sortQuery } = header;\n if (!sortQuery) return;\n if (sortByRef.value === sortQuery) {\n return toggleOrderBy();\n }\n return setSort({\n sort: sortQuery,\n order: defaultOrderQueryRef.value,\n });\n }\n\n function genPagination() {\n return (\n <VPagination\n class=\"v-data-table__pagination\"\n dense\n align=\"right\"\n routeQuery={props.pageQuery}\n modelValue={pageRef.value}\n length={pageLengthRef.value}\n />\n );\n }\n\n function genControls() {\n const { total } = props;\n const offset = offsetRef.value;\n const length = lengthRef.value;\n\n return (\n <div class=\"v-data-table__controls\">\n <div class=\"v-data-table__controls__info\">\n <small class=\"v-data-table__controls__info__length\">\n {`全 ${total} 件中 ${offset + 1} 件 〜 ${\n offset + length\n } 件を表示`}\n </small>\n </div>\n <div class=\"v-data-table__controls__select-limit\">\n <span class=\"v-data-table__controls__select-limit__prefix\">\n 1ページに\n </span>\n <VSelect\n class=\"v-data-table__controls__select-limit__node\"\n size=\"sm\"\n hiddenInfo\n disabled={isTransitioningRef.value}\n items={props.limits.map((limit) => ({\n label: `${limit}件`,\n value: limit,\n }))}\n v-model={limitRef.value}\n />\n </div>\n <div class=\"v-data-table__controls__pagination\">\n {genPagination()}\n </div>\n </div>\n );\n }\n\n function genTableHeader() {\n const sortBy = sortByRef.value;\n const isIndeterminate = isIndeterminateRef.value;\n const isAllSelected = isAllSelectedRef.value;\n const { defaultOrder, ascQueryValue } = props;\n // const usePaging = usePagingRef.value;\n\n const children = headersRef.value.map((header) => {\n const { label, sortQuery, align, key } = header;\n const headerChildren: VNodeArrayChildren = [];\n if (label != null && typeof label !== 'boolean') {\n let _children = typeof label === 'function' ? label(vui) : label;\n if (\n _children &&\n !Array.isArray(_children) &&\n typeof _children === 'object'\n ) {\n _children = JSON.stringify(_children);\n }\n headerChildren.push(_children);\n }\n if (key === SELECTABLE_HEADER_SYMBOL) {\n headerChildren.push(\n <VCheckbox\n modelValue={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={(ev) => {\n if (isAllSelectedRef.value) {\n deselectAll();\n } else {\n selectAll();\n }\n }}\n />,\n );\n }\n\n const sortActive = sortBy === sortQuery;\n\n if (sortQuery) {\n const isASC = sortActive\n ? isASCRef.value\n : defaultOrder === ascQueryValue;\n headerChildren.unshift(\n <VIcon\n class=\"v-data-table__table__sort-icon v-data-table__table__sort-icon--empty\"\n name=\"$empty\"\n />,\n );\n headerChildren.push(\n resolveRawIconProp(false, sortIconRef.value, {\n class: [\n 'v-data-table__table__sort-icon v-data-table__table__sort-icon--arrow',\n {\n 'v-data-table__table__sort-icon--asc': isASC,\n 'v-data-table__table__sort-icon--desc': !isASC,\n },\n ],\n }),\n // <VIcon\n // class={[\n // 'v-data-table__table__sort-icon v-data-table__table__sort-icon--arrow',\n // {\n // 'v-data-table__table__sort-icon--asc': isASC,\n // 'v-data-table__table__sort-icon--desc': !isASC,\n // },\n // ]}\n // name=\"mdi-chevron-down\"\n // />,\n );\n }\n\n const classes = [\n 'v-data-table__table__cell',\n {\n 'v-data-table__table__cell--active': sortActive,\n },\n ];\n\n if (align) {\n classes.push(`v-data-table__table__cell--${align}`);\n }\n\n return (\n <th\n class={classes}\n key={header.key}\n tabindex={sortQuery ? 0 : undefined}\n onClick={(ev) => {\n if (!sortQuery) return;\n handleClickSortHeader(header, ev);\n }}>\n <div class=\"v-data-table__table__cell__tile\">{headerChildren}</div>\n </th>\n );\n });\n return (\n <thead class=\"v-data-table__table__header\">\n <tr>{children}</tr>\n </thead>\n );\n }\n\n function toggleSelect(key: string) {\n return isSelected(key) ? deselect(key) : select(key);\n }\n\n function defaultItemSlot(payload: DataTableItemSlotPayload) {\n const { key, item, selected } = payload;\n const headers = headersRef.value;\n const children = headers.map((header) => {\n const { cell, align, key: headerKey } = header;\n const cellSlot = cell || ctx.slots.cell;\n let cellChildren: VNodeChild;\n if (cellSlot) {\n const cellPayload: DataTableCellSlotPayload = {\n vui,\n item,\n selected,\n };\n let _children = cellSlot(cellPayload);\n if (\n _children &&\n !Array.isArray(_children) &&\n typeof _children === 'object' &&\n !isVNode(_children)\n ) {\n _children = JSON.stringify(_children);\n }\n cellChildren = _children;\n }\n\n if (!cellChildren) {\n switch (headerKey) {\n case SELECTABLE_HEADER_SYMBOL: {\n cellChildren = [\n <VCheckbox\n modelValue={selected}\n onChange={(ev) => {\n toggleSelect(key);\n }}\n />,\n ];\n break;\n }\n }\n }\n\n const classes = align\n ? {\n [`v-data-table__table__cell--${align}`]: true,\n }\n : undefined;\n\n return (\n <td class={['v-data-table__table__cell', classes]} key={header.key}>\n {cellChildren}\n </td>\n );\n });\n\n const { color, attrs } = rowSettings.value(payload);\n const colorClass = color && toScopeColorClass(color);\n const classes = [\n 'v-data-table__table__item',\n {\n 'v-data-table__table__item--selected': selected,\n },\n ];\n if (colorClass) {\n classes.push(colorClass, containedVariant);\n }\n\n return (\n <tr class={classes} key={key} {...attrs}>\n {children}\n </tr>\n );\n }\n\n function genBody() {\n const { items, itemKey } = props;\n const { item: itemSlot = defaultItemSlot } = ctx.slots;\n\n const children = items.map((item) => {\n const key = item[itemKey];\n const payload: DataTableItemSlotPayload = {\n key,\n item,\n selected: isSelected(key),\n };\n return itemSlot(payload);\n });\n return <tbody class=\"v-data-table__table__body\">{children}</tbody>;\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n internalValues.value = modelValue.slice();\n },\n );\n\n watch(\n () => props.items,\n (items) => {\n internalValues.value = internalValues.value.filter((key) =>\n sortedItemKeysRef.value.includes(key),\n );\n },\n );\n\n onMounted(() => {\n bootedRef.value = true;\n });\n\n return () => {\n const isEmpty = isEmptyRef.value;\n const usePaging = usePagingRef.value;\n return (\n <div class={['v-data-table', classesRef.value]}>\n {!isEmpty && usePaging && needShowHeaderControlRef.value && (\n <div class=\"v-data-table__header\">{genControls()}</div>\n )}\n <div class=\"v-data-table__body container-pull\">\n {isEmpty ? (\n <div class=\"v-data-table__empty--message\">\n {emptyMessage.value}\n </div>\n ) : (\n <VPaper\n class=\"v-data-table__body__inner\"\n style={bodyInnerStylesRef.value}>\n <div class=\"v-data-table__table-wrapper\">\n <table class=\"v-data-table__table\">\n {genTableHeader()}\n {genBody()}\n </table>\n </div>\n </VPaper>\n )}\n <Transition name=\"fade\">\n {isTransitioningRef.value && (\n <div class=\"v-data-table__loading\">\n <VProgressCircular indeterminate />\n </div>\n )}\n </Transition>\n </div>\n {!isEmpty &&\n usePaging &&\n withDirectives(\n <div class=\"v-data-table__footer\">{genControls()}</div>,\n [\n resizeDirectiveArgument(({ height }) => {\n footerHeightRef.value = height;\n }),\n ],\n )}\n </div>\n );\n };\n },\n});\n","import { defineComponent } from 'vue';\nimport { VAppLayout } from '@fastkit/vue-app-layout';\nimport { VDynamicStacks } from '@fastkit/vue-stack';\nimport { useInjectTheme } from '@fastkit/vue-color-scheme';\n\nexport const VApp = defineComponent({\n name: 'VApp',\n setup(_props, ctx) {\n useInjectTheme();\n\n return () => (\n <VDynamicStacks>\n <VAppLayout v-slots={ctx.slots} />\n </VDynamicStacks>\n );\n },\n});\n","import './VToolbar.scss';\nimport { defineComponent, computed } from 'vue';\nimport { colorSchemeProps, useColorClasses } from '@fastkit/vue-color-scheme';\nimport { createElevationProps, useElevation } from '../../composables';\nimport { useVui } from '../../injections';\n\nexport const VToolbar = defineComponent({\n name: 'VToolbar',\n props: {\n ...createElevationProps(),\n ...colorSchemeProps(),\n dense: Boolean,\n },\n setup(props, ctx) {\n const vui = useVui();\n\n const elevation = useElevation(props, { defaultValue: 4 });\n const dense = computed(() => props.dense);\n const color = useColorClasses({\n color: () => props.color,\n variant: () => props.variant || vui.setting('containedVariant'),\n });\n\n const classes = computed(() => [\n elevation.elevationClassName.value,\n color.colorClasses.value,\n {\n 'v-toolbar--plain': !color.color.value.value,\n 'v-toolbar--dense': dense.value,\n },\n ]);\n\n return () => (\n <div class={['v-toolbar', classes.value]}>{ctx.slots.default?.()}</div>\n );\n },\n});\n","import './VToolbarMenu.scss';\nimport { defineComponent } from 'vue';\nimport { VButton, vueButtonProps } from '../VButton';\nimport { useVui } from '../../injections';\n\n// @TODO Unable to resolve dts for `navigationableInheritProps`.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { RouteLocationRaw } from 'vue-router';\n\nexport type VToolbarMenuEdge = 'start' | 'end';\n\nexport const VToolbarMenu = defineComponent({\n name: 'VToolbarMenu',\n inheritAttrs: false,\n props: {} as typeof vueButtonProps,\n setup(props, ctx) {\n const vui = useVui();\n const plain = vui.setting('plainVariant');\n\n return () => {\n const variant = props.variant || plain;\n return (\n <VButton {...ctx.attrs} variant={variant} class={['v-toolbar-menu']}>\n {ctx.slots.default?.()}\n </VButton>\n );\n };\n },\n});\n","import './VToolbarEdge.scss';\nimport { defineComponent, computed, PropType } from 'vue';\nimport { renderSlotOrEmpty } from '@fastkit/vue-utils';\n\nexport type VToolbarEdgeEdge = 'start' | 'end';\n\nexport const VToolbarEdge = defineComponent({\n name: 'VToolbarEdge',\n props: {\n edge: {\n type: String as PropType<VToolbarEdgeEdge>,\n required: true,\n },\n },\n setup(props, ctx) {\n const edge = computed(() => props.edge);\n return () => {\n const children = renderSlotOrEmpty(ctx.slots, 'default');\n const hasChildren = !!children && children.length > 0;\n\n return (\n <div\n class={[\n 'v-toolbar-edge',\n `v-toolbar-edge--${edge.value}`,\n {\n [`v-toolbar-edge--empty`]: !hasChildren,\n },\n ]}>\n {children}\n </div>\n );\n };\n },\n});\n","import './VToolbarTitle.scss';\nimport { defineComponent, computed } from 'vue';\nimport { defineSlots } from '@fastkit/vue-utils';\n\nconst slots = defineSlots<{\n default?: () => any;\n}>();\n\nexport const VToolbarTitle = defineComponent({\n name: 'VToolbarTitle',\n props: {\n tag: {\n type: String,\n default: 'span',\n },\n ...slots(),\n },\n slots,\n setup(props, ctx) {\n const _TagName = computed(() => props.tag);\n return () => {\n const TagName = _TagName.value as 'span';\n\n return <TagName class=\"v-toolbar-title\">{ctx.slots.default?.()}</TagName>;\n };\n },\n});\n","import {\n type VNodeChild,\n reactive,\n type UnwrapNestedRefs,\n type App,\n} from 'vue';\nimport { ScopeName, ColorVariant } from '@fastkit/color-scheme';\nimport {\n type VueStackService,\n type VStackControl,\n type VStackBuiltinActionType,\n type VStackAction,\n type StackableLauncher,\n VStackBuiltinActions,\n BUILTIN_ACTION_HANDLERS,\n} from '@fastkit/vue-stack';\nimport { type VNodeChildOrSlot, withCtx } from '@fastkit/vue-utils';\nimport { type VueColorSchemePluginSettings } from '@fastkit/vue-color-scheme';\nimport type { Router } from 'vue-router';\nimport { RouterLink, useLink, UseLinkOptions } from 'vue-router';\nimport { setDefaultRouterLink } from '@fastkit/vue-action';\nimport { LocationService } from '@fastkit/vue-location';\nimport {\n VueForm,\n FormNodeWrapperHinttipDelay,\n} from '@fastkit/vue-form-control';\nimport { getDocumentScroller, UseScroller } from '@fastkit/vue-scroller';\nimport { VForm } from './components/VForm';\nimport { VTextField, TextFieldInput } from './components/VTextField';\nimport type { IconName, RawIconProp } from './components/VIcon';\nimport { ControlSize } from './schemes';\nimport { VButton } from './components/VButton';\nimport { VDialog } from './components/VDialog';\nimport { VSnackbar } from './components/VSnackbar';\nimport { VMenu } from './components/VMenu';\nimport { VSheetModal } from './components/VSheetModal';\n\nexport { VuiInjectionKey } from './injections';\n\nexport type UseLinkResult = ReturnType<typeof useLink>;\n\ntype VDialogProps = InstanceType<typeof VDialog>['$props'];\n\nexport interface VuiFormPromptSettings<\n T extends { [key: string]: any } = { [key: string]: any },\n> extends Partial<VDialogProps> {\n state: T;\n size?: ControlSize;\n}\n\nexport interface VuiPromptOptions extends Partial<VDialogProps> {\n input?: Omit<TextFieldInput, 'modelValue'> & { initialValue?: string };\n}\n\nexport type RawVuiPromptOptions = string | VuiPromptOptions;\n\nconst DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP = -20;\nconst DEFAULT_TEXTAREA_ROWS = 3;\n\nexport interface VuiServiceUISettings {\n primaryScope: ScopeName;\n plainVariant: ColorVariant;\n containedVariant: ColorVariant;\n warningScope: ScopeName;\n errorScope: ScopeName;\n buttonDefault: {\n color: ScopeName;\n variant: ColorVariant;\n };\n tabDefault: {\n color: ScopeName;\n };\n dialogOk?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n dialogCancel?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n dialogClose?: {\n color?: ScopeName;\n variant?: ColorVariant;\n };\n hinttipDelay?: FormNodeWrapperHinttipDelay;\n noDataMessage?: VNodeChildOrSlot;\n noResultsMessage?: VNodeChildOrSlot;\n loadingMessage?: VNodeChildOrSlot;\n failedToLoadDataMessage?: VNodeChildOrSlot;\n}\n\nexport type RawVuiServiceUISettings = Partial<VuiServiceUISettings>;\n\nexport function mergeVuiServiceUISettings(\n base: VuiServiceUISettings,\n overrides?: RawVuiServiceUISettings,\n): VuiServiceUISettings {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceUISettings = {\n ...base,\n };\n Object.entries(overrides).forEach(([key, value]) => {\n if (value) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport interface VuiServiceIconSettings {\n menuDown: IconName;\n navigationExpand: RawIconProp;\n prev: RawIconProp;\n next: RawIconProp;\n sort: RawIconProp;\n editorTextColor: IconName;\n editorformatBold: IconName;\n editorformatUnderline: IconName;\n editorformatItalic: IconName;\n editorformatListBulleted: IconName;\n editorformatListNumbered: IconName;\n editorAlignLeft: IconName;\n editorAlignCenter: IconName;\n editorAlignRight: IconName;\n editorAlignJustify: IconName;\n editorLink: IconName;\n editorLinkOff: IconName;\n editorUndo: IconName;\n editorRedo: IconName;\n hinttip: IconName;\n clear: IconName;\n reload: IconName;\n fileUpload: IconName;\n}\n\nexport type RawVuiServiceIconSettings = Partial<VuiServiceIconSettings>;\n\nexport function mergeVuiServiceIconSettings(\n base: VuiServiceIconSettings,\n overrides?: RawVuiServiceIconSettings,\n): VuiServiceIconSettings {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceIconSettings = {\n ...base,\n };\n Object.entries(overrides).forEach(([key, value]) => {\n if (value) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport type VuiVNodeResolver = () => VNodeChild;\n\nexport interface VuiServiceOptions {\n router: Router;\n RouterLink?: any;\n useLink?: (props: UseLinkOptions) => UseLinkResult;\n colorScheme: VueColorSchemePluginSettings;\n uiSettings: VuiServiceUISettings;\n icons: VuiServiceIconSettings;\n selectionSeparator?: VuiVNodeResolver;\n autoScrollToElementOffsetTop?: number | (() => number | undefined);\n textareaRows?: number;\n requiredChip?: VuiVNodeResolver;\n}\n\nexport interface RawVuiServiceOptions extends Omit<\n Partial<VuiServiceOptions>,\n 'uiSettings' | 'icons'\n> {\n uiSettings?: RawVuiServiceUISettings;\n icons?: RawVuiServiceIconSettings;\n}\n\nexport function mergeVuiServiceOptions(\n base: VuiServiceOptions,\n overrides?: RawVuiServiceOptions,\n): VuiServiceOptions {\n if (!overrides) {\n return base;\n }\n const merged: VuiServiceOptions = {\n ...base,\n uiSettings: mergeVuiServiceUISettings(\n base.uiSettings,\n overrides.uiSettings,\n ),\n icons: mergeVuiServiceIconSettings(base.icons, overrides.icons),\n };\n const excludes = ['uiSettings', 'icons'];\n Object.entries(overrides).forEach(([key, value]) => {\n if (value && !excludes.includes(key)) {\n (merged as any)[key] = value;\n }\n });\n return merged;\n}\n\nexport class VuiService {\n readonly options: VuiServiceOptions;\n\n readonly selectionSeparator: VuiVNodeResolver;\n\n readonly autoScrollToElementOffsetTop?: number | (() => number | undefined);\n\n readonly textareaRows?: number;\n\n readonly requiredChip?: VuiVNodeResolver;\n\n readonly router: Router;\n\n readonly location: LocationService;\n\n readonly stack: VueStackService;\n\n readonly useLink: typeof useLink;\n\n readonly stackActions: VStackBuiltinActions;\n\n readonly dialog: StackableLauncher<typeof VDialog>;\n\n readonly alert: StackableLauncher<typeof VDialog>;\n\n readonly confirm: StackableLauncher<typeof VDialog, boolean>;\n\n readonly snackbar: StackableLauncher<typeof VSnackbar>;\n\n readonly menu: StackableLauncher<typeof VMenu>;\n\n readonly sheet: StackableLauncher<typeof VSheetModal>;\n\n get scroller(): UseScroller {\n return getDocumentScroller();\n }\n\n constructor(options: VuiServiceOptions, app: App) {\n this.options = options;\n this.configure();\n\n const {\n selectionSeparator = () => ', ',\n autoScrollToElementOffsetTop = DEFAULT_AUTO_SCROLL_TO_ELEMENT_OFFSET_TOP,\n textareaRows = DEFAULT_TEXTAREA_ROWS,\n requiredChip = () => '*',\n } = options;\n this.selectionSeparator = selectionSeparator;\n this.autoScrollToElementOffsetTop = autoScrollToElementOffsetTop;\n this.textareaRows = textareaRows;\n this.requiredChip = requiredChip;\n this.router = options.router;\n this.location = LocationService.install(app, {\n router: this.router,\n });\n this.useLink = options.useLink || useLink;\n this.stack = app.config.globalProperties.$vstack;\n const { uiSettings } = options;\n this.stackActions = {\n ok: ({ bindings }) => (\n <VButton {...uiSettings.dialogOk} {...bindings}>\n OK\n </VButton>\n ),\n cancel: ({ bindings }) => (\n <VButton {...uiSettings.dialogCancel} {...bindings}>\n CANCEL\n </VButton>\n ),\n close: ({ bindings }) => (\n <VButton {...uiSettings.dialogClose} {...bindings}>\n CLOSE\n </VButton>\n ),\n };\n\n this.dialog = this.stack.createLauncher(VDialog);\n this.alert = this.stack.createLauncher(VDialog, (props) => {\n const actions = [...(props?.actions || [])];\n if (!actions.length) {\n actions.push(this.stackAction('ok'));\n }\n const backdrop = props?.backdrop == null ? true : props?.backdrop;\n return {\n ...props,\n backdrop,\n actions,\n };\n });\n\n this.confirm = this.stack.createLauncher(VDialog, (props) => {\n const actions = [...(props?.actions || [])];\n if (!actions.length) {\n actions.push(this.stackAction('cancel'), this.stackAction('ok'));\n }\n const backdrop = props?.backdrop == null ? true : props?.backdrop;\n return {\n ...props,\n backdrop,\n actions,\n };\n });\n this.snackbar = this.stack.createLauncher(VSnackbar);\n this.menu = this.stack.createLauncher(VMenu);\n this.sheet = this.stack.createLauncher(VSheetModal);\n }\n\n configure(options?: Partial<VuiServiceOptions>) {\n options && Object.assign(this.options, options);\n setDefaultRouterLink(this.getRouterLink());\n }\n\n getRouterLink() {\n return this.options.RouterLink || RouterLink;\n }\n\n setting<K extends keyof VuiServiceUISettings>(\n key: K,\n ): VuiServiceUISettings[K] {\n return this.options.uiSettings[key] as VuiServiceUISettings[K];\n }\n\n icon<K extends keyof VuiServiceIconSettings>(\n iconType: K,\n ): VuiServiceIconSettings[K] {\n return this.options.icons[iconType] as VuiServiceIconSettings[K];\n }\n\n getAutoScrollToElementOffsetTop() {\n let { autoScrollToElementOffsetTop } = this;\n if (typeof autoScrollToElementOffsetTop === 'function') {\n autoScrollToElementOffsetTop = autoScrollToElementOffsetTop();\n }\n return autoScrollToElementOffsetTop || 0;\n }\n\n getRequiredChip() {\n const { requiredChip } = this;\n return requiredChip && requiredChip();\n }\n\n formPrompt<T extends { [key: string]: any } = { [key: string]: any }>(\n settings: VuiFormPromptSettings<T>,\n slot: (\n state: UnwrapNestedRefs<T>,\n ctx: { form: VueForm; stack: VStackControl },\n ) => VNodeChild,\n ): Promise<T | false | undefined> {\n let form: VueForm | undefined;\n\n const options = {\n dense: true,\n ...settings,\n };\n\n const { size, state } = options;\n\n const _state = reactive(state);\n\n options.actions = options.actions || [\n this.stackAction('cancel', undefined, { size }),\n this.stackAction('ok', undefined, {\n size,\n onClick: () => {\n if (form) {\n const ev = new Event('submit');\n form.handleSubmit(ev);\n }\n },\n }),\n ];\n\n return this.dialog(options, (stack) => (\n <VForm\n disableAutoScroll\n size={size}\n // onVnodeMounted={(vnode) => {\n // form = (vnode.component as any).ctx.form as VueForm;\n // }}\n onVnodeBeforeUnmount={() => {\n form = undefined;\n }}\n onSubmit={(ev) => {\n stack.resolve(_state);\n }}\n v-slots={{\n default: withCtx((_form: VueForm) => {\n form = _form;\n return slot(_state, { form, stack });\n }),\n }}\n />\n ));\n }\n\n prompt(rawOptions: RawVuiPromptOptions = {}) {\n const options: VuiPromptOptions =\n typeof rawOptions === 'string'\n ? {\n input: {\n label: rawOptions,\n },\n }\n : {\n ...rawOptions,\n };\n\n options.input = {\n ...options.input,\n };\n\n options.dense = true;\n\n const { initialValue: value = '' } = options.input;\n const { size } = options.input;\n\n delete options.input.initialValue;\n\n return this.formPrompt(\n {\n size,\n ...options,\n state: {\n input: value,\n },\n },\n (state) => <VTextField {...options.input} v-model={state.input} />,\n ).then((result) => (result ? result.input : result));\n }\n\n stackAction(\n key: VStackBuiltinActionType,\n override?: Partial<VStackAction>,\n attrs?: Record<string, unknown>,\n ) {\n const factory = this.stackActions[key];\n const _onClick = BUILTIN_ACTION_HANDLERS[key];\n const action: VStackAction = {\n key,\n content: ({ control, key }) => {\n const onClick = (ev: PointerEvent) => _onClick(control, ev);\n\n const _attrs: any = {\n disabled: control.guardInProgress,\n ...attrs,\n };\n\n if (key === 'ok' && control.guardInProgress) {\n _attrs.loading = true;\n }\n\n return factory({\n service: this.stack,\n control,\n key,\n bindings: { onClick, ..._attrs },\n });\n },\n ...override,\n };\n return action;\n }\n}\n","import { App } from 'vue';\nimport {\n installVueStackPlugin,\n VueStackServiceOptions,\n} from '@fastkit/vue-stack';\nimport {\n installVueFormPlugin,\n VueFormServiceOptions,\n} from '@fastkit/vue-form-control';\nimport { installBodyScrollLockDirective } from '@fastkit/vue-body-scroll-lock';\nimport { installClickOutsideDirective } from '@fastkit/vue-click-outside';\nimport { installResizeDirective } from '@fastkit/vue-resize';\nimport { VueColorSchemePlugin } from '@fastkit/vue-color-scheme';\nimport { installVueAppLayout } from '@fastkit/vue-app-layout';\nimport { onAppUnmount } from '@fastkit/vue-utils';\nimport { getDocumentScroller } from '@fastkit/vue-scroller';\nimport { setDefaultActionableClassName } from '@fastkit/vue-action';\nimport {\n VuiService,\n VuiServiceOptions,\n RawVuiServiceOptions,\n mergeVuiServiceOptions,\n VuiInjectionKey,\n} from './service';\n\nsetDefaultActionableClassName('clickable');\nconst scroller = getDocumentScroller();\n\nexport interface VuiPluginStackOptions extends VueStackServiceOptions {}\n\nexport interface VuiPluginOptions extends VuiServiceOptions {\n stack?: VuiPluginStackOptions;\n form?: VueFormServiceOptions;\n}\n\nexport interface RawVuiPluginOptions extends RawVuiServiceOptions {\n stack?: VuiPluginStackOptions;\n form?: VueFormServiceOptions;\n}\n\nexport function mergeVuiPluginOptions(\n base: VuiPluginOptions,\n override?: RawVuiPluginOptions,\n): VuiPluginOptions {\n if (!override) return base;\n const merged: VuiPluginOptions = mergeVuiServiceOptions(base, override);\n if (override.stack) {\n merged.stack = {\n ...merged.stack,\n ...override.stack,\n };\n }\n if (override.form) {\n merged.form = {\n ...merged.form,\n ...override.form,\n };\n }\n return merged;\n}\n\ndeclare module 'vue' {\n export interface ComponentCustomProperties {\n $vui: VuiService;\n }\n}\n\nexport class VuiPlugin {\n static install(app: App, opts: VuiPluginOptions) {\n const { colorScheme, stack, form } = opts;\n\n // ColorScheme\n const vueColorSchemePlugin = new VueColorSchemePlugin(colorScheme);\n app.use(vueColorSchemePlugin);\n\n installVueStackPlugin(app, stack);\n installVueFormPlugin(app, {\n scroll: {\n options: {\n behavior: 'smooth',\n },\n\n fn: (el, opts) => {\n if (window.getComputedStyle(el).scrollMargin) return;\n const duration = opts?.behavior === 'smooth' ? undefined : 0;\n return scroller.toElement(el, {\n offset: $vui.getAutoScrollToElementOffsetTop(),\n duration,\n });\n },\n },\n ...form,\n });\n installVueAppLayout(app);\n installBodyScrollLockDirective(app);\n installClickOutsideDirective(app);\n installResizeDirective(app);\n\n // Vui\n const $vui = new VuiService(opts, app);\n app.provide(VuiInjectionKey, $vui);\n app.config.globalProperties.$vui = $vui;\n\n onAppUnmount(app, () => {\n delete (app.config.globalProperties as any).$vui;\n });\n }\n}\n\nexport function installVuiPlugin(app: App, opts: VuiPluginOptions) {\n return app.use(VuiPlugin, opts);\n}\n"],"mappings":"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"}