1 |
- {"version":3,"file":"vuetify.min.js","sources":["../src/util/propsFactory.ts","../src/composables/component.ts","../src/util/globals.ts","../src/util/helpers.ts","../src/util/anchor.ts","../src/util/box.ts","../src/util/animation.ts","../src/util/bindProps.ts","../src/util/console.ts","../src/util/color/transformCIELAB.ts","../src/util/color/transformSRGB.ts","../src/util/colorUtils.ts","../src/composables/toggleScope.ts","../src/composables/defaults.ts","../src/util/defineComponent.tsx","../src/util/createSimpleFunctional.ts","../src/util/dom.ts","../src/util/easing.ts","../src/util/getCurrentInstance.ts","../src/util/getScrollParent.ts","../src/util/injectSelf.ts","../src/util/useRender.ts","../src/composables/resizeObserver.ts","../src/composables/layout.ts","../src/locale/en.ts","../src/locale/index.ts","../src/composables/proxiedModel.ts","../src/locale/adapters/vuetify.ts","../src/composables/locale.ts","../src/util/color/APCA.ts","../src/composables/theme.ts","../src/components/VApp/VApp.tsx","../src/composables/tag.ts","../src/components/VToolbar/VToolbarTitle.tsx","../src/components/transitions/createTransition.ts","../src/components/transitions/expand-transition.ts","../src/components/transitions/dialog-transition.tsx","../src/components/transitions/index.ts","../src/components/VDefaultsProvider/VDefaultsProvider.tsx","../src/composables/dimensions.ts","../src/components/VResponsive/VResponsive.tsx","../src/composables/transition.ts","../src/directives/intersect/index.ts","../src/components/VImg/VImg.tsx","../src/composables/border.ts","../src/composables/color.ts","../src/composables/elevation.ts","../src/composables/rounded.ts","../src/components/VToolbar/VToolbar.tsx","../src/composables/scroll.ts","../src/composables/ssrBoot.ts","../src/components/VAppBar/VAppBar.tsx","../src/composables/density.ts","../src/composables/variant.tsx","../src/components/VBtnGroup/VBtnGroup.tsx","../src/composables/group.ts","../src/components/VBtnToggle/VBtnToggle.tsx","../src/iconsets/mdi.ts","../src/composables/icons.tsx","../src/composables/size.ts","../src/components/VIcon/VIcon.tsx","../src/composables/intersectionObserver.ts","../src/components/VProgressCircular/VProgressCircular.tsx","../src/composables/location.ts","../src/components/VProgressLinear/VProgressLinear.tsx","../src/composables/loader.tsx","../src/composables/position.ts","../src/composables/router.tsx","../src/directives/ripple/index.ts","../src/components/VBtn/VBtn.tsx","../src/composables/selectLink.ts","../src/components/VAppBar/VAppBarNavIcon.tsx","../src/components/VAppBar/VAppBarTitle.tsx","../src/components/VAlert/VAlertTitle.ts","../src/components/VAlert/VAlert.tsx","../src/components/VLabel/VLabel.tsx","../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx","../src/components/VSelectionControl/VSelectionControl.tsx","../src/components/VCheckbox/VCheckboxBtn.tsx","../src/components/VInput/InputIcon.tsx","../src/components/VMessages/VMessages.tsx","../src/composables/focus.ts","../src/composables/form.ts","../src/composables/validation.ts","../src/components/VInput/VInput.tsx","../src/components/VCheckbox/VCheckbox.tsx","../src/components/VAvatar/VAvatar.tsx","../src/components/VChipGroup/VChipGroup.tsx","../src/components/VChip/VChip.tsx","../src/components/VList/list.ts","../src/composables/nested/openStrategies.ts","../src/composables/nested/selectStrategies.ts","../src/composables/nested/nested.ts","../src/components/VList/VListGroup.tsx","../src/components/VList/VListItemSubtitle.ts","../src/components/VList/VListItemTitle.ts","../src/components/VList/VListItem.tsx","../src/components/VList/VListSubheader.tsx","../src/components/VDivider/VDivider.tsx","../src/components/VList/VListChildren.tsx","../src/composables/list-items.ts","../src/components/VList/VList.tsx","../src/components/VList/VListImg.ts","../src/components/VList/VListItemAction.tsx","../src/components/VList/VListItemMedia.tsx","../src/components/VOverlay/util/point.ts","../src/components/VOverlay/locationStrategies.ts","../src/util/isFixedPosition.ts","../src/components/VOverlay/requestNewFrame.ts","../src/components/VOverlay/scrollStrategies.ts","../src/components/VMenu/shared.ts","../src/composables/delay.ts","../src/components/VOverlay/useActivator.tsx","../src/composables/display.ts","../src/composables/hydration.ts","../src/composables/lazy.ts","../src/composables/scopeId.ts","../src/composables/stack.ts","../src/directives/click-outside/index.ts","../src/components/VOverlay/VOverlay.tsx","../src/composables/teleport.ts","../src/composables/forwardRefs.ts","../src/components/VMenu/VMenu.tsx","../src/components/VCounter/VCounter.tsx","../src/components/VField/VFieldLabel.tsx","../src/components/VField/VField.tsx","../src/components/VTextField/VTextField.tsx","../src/components/VVirtualScroll/VVirtualScrollItem.tsx","../src/composables/virtual.ts","../src/components/VVirtualScroll/VVirtualScroll.tsx","../src/components/VSelect/useScrolling.ts","../src/components/VSelect/VSelect.tsx","../src/composables/filter.ts","../src/components/VAutocomplete/VAutocomplete.tsx","../src/components/VBadge/VBadge.tsx","../src/components/VBanner/VBannerActions.tsx","../src/components/VBanner/VBannerText.ts","../src/components/VBanner/VBanner.tsx","../src/components/VBottomNavigation/VBottomNavigation.tsx","../src/components/VBreadcrumbs/VBreadcrumbsDivider.tsx","../src/components/VBreadcrumbs/VBreadcrumbsItem.tsx","../src/components/VBreadcrumbs/VBreadcrumbs.tsx","../src/components/VCard/VCardActions.tsx","../src/components/VCard/VCardSubtitle.ts","../src/components/VCard/VCardTitle.ts","../src/components/VCard/VCardItem.tsx","../src/components/VCard/VCardText.ts","../src/components/VCard/VCard.tsx","../src/directives/touch/index.ts","../src/components/VWindow/VWindow.tsx","../src/components/VCarousel/VCarousel.tsx","../src/components/VWindow/VWindowItem.tsx","../src/components/VCarousel/VCarouselItem.tsx","../src/components/VCode/index.ts","../src/components/VColorPicker/VColorPickerCanvas.tsx","../src/components/VColorPicker/util/index.ts","../src/components/VColorPicker/VColorPickerEdit.tsx","../src/components/VSlider/slider.ts","../src/components/VSlider/VSliderThumb.tsx","../src/components/VSlider/VSliderTrack.tsx","../src/components/VSlider/VSlider.tsx","../src/components/VColorPicker/VColorPickerPreview.tsx","../src/util/colors.ts","../src/components/VColorPicker/VColorPickerSwatches.tsx","../src/components/VSheet/VSheet.tsx","../src/components/VColorPicker/VColorPicker.tsx","../src/components/VCombobox/VCombobox.tsx","../src/components/VDialog/VDialog.tsx","../src/components/VExpansionPanel/VExpansionPanels.tsx","../src/components/VExpansionPanel/VExpansionPanelText.tsx","../src/components/VExpansionPanel/VExpansionPanelTitle.tsx","../src/components/VExpansionPanel/VExpansionPanel.tsx","../src/components/VFileInput/VFileInput.tsx","../src/components/VFooter/VFooter.tsx","../src/components/VForm/VForm.tsx","../src/components/VGrid/VContainer.tsx","../src/components/VGrid/VCol.ts","../src/components/VGrid/VRow.ts","../src/components/VGrid/VSpacer.ts","../src/components/VHover/VHover.tsx","../src/components/VItemGroup/VItemGroup.tsx","../src/components/VItemGroup/VItem.tsx","../src/components/VKbd/index.ts","../src/components/VLayout/VLayout.tsx","../src/components/VLayout/VLayoutItem.tsx","../src/components/VLazy/VLazy.tsx","../src/components/VLocaleProvider/VLocaleProvider.tsx","../src/components/VMain/VMain.tsx","../src/composables/touch.ts","../src/components/VNavigationDrawer/touch.ts","../src/components/VNavigationDrawer/VNavigationDrawer.tsx","../src/components/VNavigationDrawer/sticky.ts","../src/components/VNoSsr/VNoSsr.tsx","../src/components/VPagination/VPagination.tsx","../src/composables/refs.ts","../src/components/VParallax/VParallax.tsx","../src/components/VRadio/VRadio.tsx","../src/components/VRadioGroup/VRadioGroup.tsx","../src/components/VRangeSlider/VRangeSlider.tsx","../src/components/VRating/VRating.tsx","../src/components/VSlideGroup/helpers.ts","../src/components/VSlideGroup/VSlideGroup.tsx","../src/components/VSlideGroup/VSlideGroupItem.tsx","../src/components/VSnackbar/VSnackbar.tsx","../src/components/VSwitch/VSwitch.tsx","../src/components/VSystemBar/VSystemBar.tsx","../src/components/VTabs/shared.ts","../src/components/VTabs/VTab.tsx","../src/components/VTabs/VTabs.tsx","../src/components/VTable/VTable.tsx","../src/components/VTextarea/VTextarea.tsx","../src/components/VThemeProvider/VThemeProvider.tsx","../src/components/VTimeline/VTimeline.tsx","../src/components/VTimeline/VTimelineDivider.tsx","../src/components/VTimeline/VTimelineItem.tsx","../src/components/VToolbar/VToolbarItems.tsx","../src/components/VTooltip/VTooltip.tsx","../src/components/VValidation/VValidation.tsx","../src/directives/mutate/index.ts","../src/directives/resize/index.ts","../src/directives/scroll/index.ts","../src/labs/date/adapters/vuetify.ts","../src/labs/date/date.ts","../src/framework.ts","../src/entry-bundler.ts"],"sourcesContent":["// Types\nimport type { IfAny } from '@vue/shared' // eslint-disable-line vue/prefer-import-from-vue\nimport type { ComponentObjectPropsOptions, Prop, PropType } from 'vue'\n\n/**\n * Creates a factory function for props definitions.\n * This is used to define props in a composable then override\n * default values in an implementing component.\n *\n * @example Simplified signature\n * (props: Props) => (defaults?: Record<keyof props, any>) => Props\n *\n * @example Usage\n * const makeProps = propsFactory({\n * foo: String,\n * })\n *\n * defineComponent({\n * props: {\n * ...makeProps({\n * foo: 'a',\n * }),\n * },\n * setup (props) {\n * // would be \"string | undefined\", now \"string\" because a default has been provided\n * props.foo\n * },\n * }\n */\n\nexport function propsFactory<\n PropsOptions extends ComponentObjectPropsOptions\n> (props: PropsOptions, source: string) {\n return <Defaults extends PartialKeys<PropsOptions> = {}>(\n defaults?: Defaults\n ): AppendDefault<PropsOptions, Defaults> => {\n return Object.keys(props).reduce<any>((obj, prop) => {\n const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop])\n const definition = isObjectDefinition ? props[prop] : { type: props[prop] }\n\n if (defaults && prop in defaults) {\n obj[prop] = {\n ...definition,\n default: defaults[prop],\n }\n } else {\n obj[prop] = definition\n }\n\n if (source && !obj[prop].source) {\n obj[prop].source = source\n }\n\n return obj\n }, {})\n }\n}\n\ntype AppendDefault<T extends ComponentObjectPropsOptions, D extends PartialKeys<T>> = {\n [P in keyof T]-?: unknown extends D[P]\n ? T[P]\n : T[P] extends Record<string, unknown>\n ? Omit<T[P], 'type' | 'default'> & {\n type: PropType<MergeDefault<T[P], D[P]>>\n default: MergeDefault<T[P], D[P]>\n }\n : {\n type: PropType<MergeDefault<T[P], D[P]>>\n default: MergeDefault<T[P], D[P]>\n }\n}\n\ntype MergeDefault<T, D> = unknown extends D ? InferPropType<T> : (NonNullable<InferPropType<T>> | D)\n\n/**\n * Like `Partial<T>` but doesn't care what the value is\n */\ntype PartialKeys<T> = { [P in keyof T]?: unknown }\n\n// Copied from Vue\ntype InferPropType<T> = [T] extends [null]\n ? any // null & true would fail to infer\n : [T] extends [{ type: null | true }]\n // As TS issue https://github.com/Microsoft/TypeScript/issues/14829\n // somehow `ObjectConstructor` when inferred from { (): T } becomes `any`\n // `BooleanConstructor` when inferred from PropConstructor(with PropMethod) becomes `Boolean`\n ? any\n : [T] extends [ObjectConstructor | { type: ObjectConstructor }]\n ? Record<string, any>\n : [T] extends [BooleanConstructor | { type: BooleanConstructor }]\n ? boolean\n : [T] extends [DateConstructor | { type: DateConstructor }]\n ? Date\n : [T] extends [(infer U)[] | { type: (infer U)[] }]\n ? U extends DateConstructor\n ? Date | InferPropType<U>\n : InferPropType<U>\n : [T] extends [Prop<infer V, infer D>]\n ? unknown extends V\n ? IfAny<V, V, D>\n : V\n : T\n","// Utilities\nimport { propsFactory } from '@/util/propsFactory'\n\n// Types\nimport type { PropType, StyleValue } from 'vue'\n\nexport type ClassValue = any\n\nexport interface ComponentProps {\n class?: ClassValue\n style: StyleValue | undefined\n}\n\n// Composables\nexport const makeComponentProps = propsFactory({\n class: [String, Array] as PropType<ClassValue>,\n style: {\n type: [String, Array, Object] as PropType<StyleValue>,\n default: null,\n },\n}, 'component')\n","export const IN_BROWSER = typeof window !== 'undefined'\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0)\n","// Utilities\nimport { camelize, capitalize, computed, Fragment, reactive, toRefs, watchEffect } from 'vue'\nimport { IN_BROWSER } from '@/util/globals'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n ComputedGetter,\n InjectionKey,\n PropType,\n Ref,\n Slots,\n ToRefs,\n VNode,\n VNodeChild,\n} from 'vue'\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport type SelectItemKey =\n | boolean // Ignored\n | string // Lookup by key, can use dot notation for nested objects\n | (string | number)[] // Nested lookup by key, each array item is a key in the next level\n | ((item: Record<string, any>, fallback?: any) => any)\n\nexport function getPropertyFromItem (\n item: any,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) {\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n }\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number, start = 0): number[] {\n return Array.from({ length }, (v, k) => start + k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nexport function convertToUnit (str: number, unit?: string): string\nexport function convertToUnit (str: string | number | null | undefined, unit?: string): string | undefined\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else if (!isFinite(+str!)) {\n return undefined\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n\nexport function refElement<T extends object | undefined> (obj: T): Exclude<T, ComponentPublicInstance> | HTMLElement {\n return obj && '$el' in obj\n ? obj.$el as HTMLElement\n : obj as HTMLElement\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\nexport const keyValues: Record<string, string> = Object.freeze({\n enter: 'Enter',\n tab: 'Tab',\n delete: 'Delete',\n esc: 'Escape',\n space: 'Space',\n up: 'ArrowUp',\n down: 'ArrowDown',\n left: 'ArrowLeft',\n right: 'ArrowRight',\n end: 'End',\n home: 'Home',\n del: 'Delete',\n backspace: 'Backspace',\n insert: 'Insert',\n pageup: 'PageUp',\n pagedown: 'PageDown',\n shift: 'Shift',\n})\n\nexport function keys<O extends {}> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\nexport function has<T extends string> (obj: object, key: T[]): obj is Record<T, unknown> {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\ntype MaybePick<\n T extends object,\n U extends Extract<keyof T, string>\n> = Record<string, unknown> extends T ? Partial<Pick<T, U>> : Pick<T, U>\n\n// Array of keys\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>,\n E extends Extract<keyof T, string>\n> (obj: T, paths: U[], exclude?: E[]): [yes: MaybePick<T, Exclude<U, E>>, no: Omit<T, Exclude<U, E>>]\n// Array of keys or RegExp to test keys against\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>,\n E extends Extract<keyof T, string>\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial<T>, no: Partial<T>]\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>,\n E extends Extract<keyof T, string>\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial<T>, no: Partial<T>] {\n const found = Object.create(null)\n const rest = Object.create(null)\n\n for (const key in obj) {\n if (\n paths.some(path => path instanceof RegExp\n ? path.test(key)\n : path === key\n ) && !exclude?.some(path => path === key)\n ) {\n found[key] = obj[key]\n } else {\n rest[key] = obj[key]\n }\n }\n\n return [found, rest]\n}\n\nexport function omit<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, exclude: U[]): Omit<T, U> {\n const clone = { ...obj }\n\n exclude.forEach(prop => delete clone[prop])\n\n return clone\n}\n\nexport function only<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, include: U[]): Pick<T, U> {\n const clone = {} as T\n\n include.forEach(prop => clone[prop] = obj[prop])\n\n return clone\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of a an input component. Remaining\n * attributes should be passed to the <input> element inside.\n */\nexport function filterInputAttrs (attrs: Record<string, unknown>) {\n return pick(attrs, ['class', 'style', 'id', /^data-/])\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (!a.includes(b[i])) diff.push(b[i])\n }\n return diff\n}\n\ntype IfAny<T, Y, N> = 0 extends (1 & T) ? Y : N;\nexport function wrapInArray<T> (\n v: T | null | undefined\n): T extends readonly any[]\n ? IfAny<T, T[], T>\n : NonNullable<T>[] {\n return v == null\n ? []\n : Array.isArray(v)\n ? v as any : [v]\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\ntype Writable<T> = {\n -readonly [P in keyof T]: T[P]\n}\n\n/**\n * Filters slots to only those starting with `prefix`, removing the prefix\n */\nexport function getPrefixedSlots (prefix: string, slots: Slots): Slots {\n return Object.keys(slots)\n .filter(k => k.startsWith(prefix))\n .reduce<Writable<Slots>>((obj, k) => {\n obj[k.replace(prefix, '')] = slots[k]\n return obj\n }, {})\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function getDecimals (value: number) {\n const trimmedStr = value.toString().trim()\n return trimmedStr.includes('.')\n ? (trimmedStr.length - trimmedStr.indexOf('.') - 1)\n : 0\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function padStart (str: string, length: number, char = '0') {\n return char.repeat(Math.max(0, length - str.length)) + str\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, base: 1000 | 1024 = 1000): string {\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Record<string, any> = {},\n target: Record<string, any> = {},\n arrayFn?: (a: unknown[], b: unknown[]) => unknown[],\n) {\n const out: Record<string, any> = {}\n\n for (const key in source) {\n out[key] = source[key]\n }\n\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n continue\n }\n\n if (Array.isArray(sourceProperty) && Array.isArray(targetProperty) && arrayFn) {\n out[key] = arrayFn(sourceProperty, targetProperty)\n\n continue\n }\n\n out[key] = targetProperty\n }\n\n return out\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\nexport function flattenFragments (nodes: VNode[]): VNode[] {\n return nodes.map(node => {\n if (node.type === Fragment) {\n return flattenFragments(node.children as VNode[])\n } else {\n return node\n }\n }).flat()\n}\n\nexport const randomHexColor = () => {\n const n = (Math.random() * 0xfffff * 1000000).toString(16)\n return '#' + n.slice(0, 6)\n}\n\nexport function toKebabCase (str = '') {\n if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str)!\n const kebab = str\n .replace(/[^a-z]/gi, '-')\n .replace(/\\B([A-Z])/g, '-$1')\n .toLowerCase()\n toKebabCase.cache.set(str, kebab)\n return kebab\n}\ntoKebabCase.cache = new Map<string, string>()\n\nexport type MaybeRef<T> = T | Ref<T>\n\nexport function findChildren (vnode?: VNodeChild): ComponentInternalInstance[] {\n if (!vnode || typeof vnode !== 'object') {\n return []\n }\n\n if (Array.isArray(vnode)) {\n return vnode\n .map(child => findChildren(child))\n .filter(v => v)\n .flat(1)\n } else if (Array.isArray(vnode.children)) {\n return vnode.children\n .map(child => findChildren(child))\n .filter(v => v)\n .flat(1)\n } else if (vnode.component) {\n return [vnode.component, ...findChildren(vnode.component?.subTree)]\n .filter(v => v)\n .flat(1)\n }\n\n return []\n}\n\nexport function findChildrenWithProvide (\n key: InjectionKey<any> | symbol,\n vnode?: VNodeChild,\n): ComponentInternalInstance[] {\n if (!vnode || typeof vnode !== 'object') return []\n\n if (Array.isArray(vnode)) {\n return vnode.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (Array.isArray(vnode.children)) {\n return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (vnode.component) {\n if (Object.getOwnPropertySymbols(vnode.component.provides).includes(key as symbol)) {\n return [vnode.component]\n } else if (vnode.component.subTree) {\n return findChildrenWithProvide(key, vnode.component.subTree).flat(1)\n }\n }\n\n return []\n}\n\nexport class CircularBuffer<T = never> {\n readonly #arr: Array<T> = []\n #pointer = 0\n\n constructor (public readonly size: number) {}\n\n push (val: T) {\n this.#arr[this.#pointer] = val\n this.#pointer = (this.#pointer + 1) % this.size\n }\n\n values (): T[] {\n return this.#arr.slice(this.#pointer).concat(this.#arr.slice(0, this.#pointer))\n }\n}\n\nexport type UnionToIntersection<U> =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n\nexport function getEventCoordinates (e: MouseEvent | TouchEvent) {\n if ('touches' in e) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n\n return { clientX: e.clientX, clientY: e.clientY }\n}\n\n// Only allow a single return type\ntype NotAUnion<T> = [T] extends [infer U] ? _NotAUnion<U, U> : never\ntype _NotAUnion<T, U> = U extends any ? [T] extends [U] ? unknown : never : never\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\nexport function destructComputed<T extends object> (getter: ComputedGetter<T & NotAUnion<T>>): ToRefs<T>\nexport function destructComputed<T extends object> (getter: ComputedGetter<T>) {\n const refs = reactive({}) as T\n const base = computed(getter)\n watchEffect(() => {\n for (const key in base.value) {\n refs[key] = base.value[key]\n }\n }, { flush: 'sync' })\n return toRefs(refs)\n}\n\n/** Array.includes but value can be any type */\nexport function includes (arr: readonly any[], val: any) {\n return arr.includes(val)\n}\n\nconst onRE = /^on[^a-z]/\nexport const isOn = (key: string) => onRE.test(key)\n\nexport function eventName (propName: string) {\n return propName[2].toLowerCase() + propName.slice(3)\n}\n\nexport type EventProp<T extends any[] = any[], F = (...args: T) => any> = F | F[]\nexport const EventProp = <T extends any[] = any[]>() => [Function, Array] as PropType<EventProp<T>>\n\nexport function hasEvent (props: Record<string, any>, name: string) {\n name = 'on' + capitalize(name)\n return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`])\n}\n\nexport function callEvent<T extends any[]> (handler: EventProp<T> | undefined, ...args: T) {\n if (Array.isArray(handler)) {\n for (const h of handler) {\n h(...args)\n }\n } else if (typeof handler === 'function') {\n handler(...args)\n }\n}\n\nexport function focusableChildren (el: Element, filterByTabIndex = true) {\n const targets = ['button', '[href]', 'input:not([type=\"hidden\"])', 'select', 'textarea', '[tabindex]']\n .map(s => `${s}${filterByTabIndex ? ':not([tabindex=\"-1\"])' : ''}:not([disabled])`)\n .join(', ')\n return [...el.querySelectorAll(targets)] as HTMLElement[]\n}\n\nexport function getNextElement (elements: HTMLElement[], location?: 'next' | 'prev', condition?: (el: HTMLElement) => boolean) {\n let _el\n let idx = elements.indexOf(document.activeElement as HTMLElement)\n const inc = location === 'next' ? 1 : -1\n do {\n idx += inc\n _el = elements[idx]\n } while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0)\n return _el\n}\n\nexport function focusChild (el: Element, location?: 'next' | 'prev' | 'first' | 'last' | number) {\n const focusable = focusableChildren(el)\n\n if (!location) {\n if (el === document.activeElement || !el.contains(document.activeElement)) {\n focusable[0]?.focus()\n }\n } else if (location === 'first') {\n focusable[0]?.focus()\n } else if (location === 'last') {\n focusable.at(-1)?.focus()\n } else if (typeof location === 'number') {\n focusable[location]?.focus()\n } else {\n const _el = getNextElement(focusable, location)\n if (_el) _el.focus()\n else focusChild(el, location === 'next' ? 'first' : 'last')\n }\n}\n\nexport function isEmpty (val: any): boolean {\n return val === null || val === undefined || (typeof val === 'string' && val.trim() === '')\n}\n\nexport function noop () {}\n\n/** Returns null if the selector is not supported or we can't check */\nexport function matchesSelector (el: Element | undefined, selector: string): boolean | null {\n const supportsSelector = IN_BROWSER &&\n typeof CSS !== 'undefined' &&\n typeof CSS.supports !== 'undefined' &&\n CSS.supports(`selector(${selector})`)\n\n if (!supportsSelector) return null\n\n try {\n return !!el && el.matches(selector)\n } catch (err) {\n return null\n }\n}\n","// Utilities\nimport { includes } from '@/util/helpers'\n\nconst block = ['top', 'bottom'] as const\nconst inline = ['start', 'end', 'left', 'right'] as const\ntype Tblock = typeof block[number]\ntype Tinline = typeof inline[number]\nexport type Anchor =\n | Tblock\n | Tinline\n | 'center'\n | 'center center'\n | `${Tblock} ${Tinline | 'center'}`\n | `${Tinline} ${Tblock | 'center'}`\nexport type ParsedAnchor =\n | { side: 'center', align: 'center' }\n | { side: Tblock, align: 'left' | 'right' | 'center' }\n | { side: 'left' | 'right', align: Tblock | 'center' }\n\n/** Parse a raw anchor string into an object */\nexport function parseAnchor (anchor: Anchor, isRtl: boolean) {\n let [side, align] = anchor.split(' ') as [Tblock | Tinline | 'center', Tblock | Tinline | 'center' | undefined]\n if (!align) {\n align =\n includes(block, side) ? 'start'\n : includes(inline, side) ? 'top'\n : 'center'\n }\n\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl),\n } as ParsedAnchor\n}\n\nexport function toPhysical (str: 'center' | Tblock | Tinline, isRtl: boolean) {\n if (str === 'start') return isRtl ? 'right' : 'left'\n if (str === 'end') return isRtl ? 'left' : 'right'\n return str\n}\n\nexport function flipSide (anchor: ParsedAnchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.side],\n align: anchor.align,\n } as ParsedAnchor\n}\n\nexport function flipAlign (anchor: ParsedAnchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.align],\n } as ParsedAnchor\n}\n\nexport function flipCorner (anchor: ParsedAnchor) {\n return {\n side: anchor.align,\n align: anchor.side,\n } as ParsedAnchor\n}\n\nexport function getAxis (anchor: ParsedAnchor) {\n return includes(block, anchor.side) ? 'y' : 'x'\n}\n","export class Box {\n x: number\n y: number\n width: number\n height: number\n\n constructor ({ x, y, width, height }: {\n x: number\n y: number\n width: number\n height: number\n }) {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n get top () { return this.y }\n get bottom () { return this.y + this.height }\n get left () { return this.x }\n get right () { return this.x + this.width }\n}\n\nexport function getOverflow (a: Box, b: Box) {\n return {\n x: {\n before: Math.max(0, b.left - a.left),\n after: Math.max(0, a.right - b.right),\n },\n y: {\n before: Math.max(0, b.top - a.top),\n after: Math.max(0, a.bottom - b.bottom),\n },\n }\n}\n","// Utilities\nimport { Box } from '@/util/box'\n\n/** @see https://stackoverflow.com/a/57876601/2074736 */\nexport function nullifyTransforms (el: HTMLElement): Box {\n const rect = el.getBoundingClientRect()\n const style = getComputedStyle(el)\n const tx = style.transform\n\n if (tx) {\n let ta, sx, sy, dx, dy\n if (tx.startsWith('matrix3d(')) {\n ta = tx.slice(9, -1).split(/, /)\n sx = +ta[0]\n sy = +ta[5]\n dx = +ta[12]\n dy = +ta[13]\n } else if (tx.startsWith('matrix(')) {\n ta = tx.slice(7, -1).split(/, /)\n sx = +ta[0]\n sy = +ta[3]\n dx = +ta[4]\n dy = +ta[5]\n } else {\n return new Box(rect)\n }\n\n const to = style.transformOrigin\n const x = rect.x - dx - (1 - sx) * parseFloat(to)\n const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1))\n const w = sx ? rect.width / sx : el.offsetWidth + 1\n const h = sy ? rect.height / sy : el.offsetHeight + 1\n\n return new Box({ x, y, width: w, height: h })\n } else {\n return new Box(rect)\n }\n}\n\nexport function animate (\n el: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n) {\n if (typeof el.animate === 'undefined') return { finished: Promise.resolve() }\n\n let animation: Animation\n try {\n animation = el.animate(keyframes, options)\n } catch (err) {\n return { finished: Promise.resolve() }\n }\n\n if (typeof animation.finished === 'undefined') {\n (animation as any).finished = new Promise(resolve => {\n animation.onfinish = () => {\n resolve(animation)\n }\n })\n }\n\n return animation\n}\n","// Utilities\nimport { eventName, isOn } from '@/util/helpers'\n\nconst handlers = new WeakMap<HTMLElement, Set<[string, () => void]>>()\n\nexport function bindProps (el: HTMLElement, props: Record<string, any>) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k)\n const handler = handlers.get(el)\n if (props[k] == null) {\n handler?.forEach(v => {\n const [n, fn] = v\n if (n === name) {\n el.removeEventListener(name, fn)\n handler.delete(v)\n }\n })\n } else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {\n el.addEventListener(name, props[k])\n const _handler = handler || new Set()\n _handler.add([name, props[k]])\n if (!handlers.has(el)) handlers.set(el, _handler)\n }\n } else {\n if (props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, props[k])\n }\n }\n })\n}\n\nexport function unbindProps (el: HTMLElement, props: Record<string, any>) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k)\n const handler = handlers.get(el)\n handler?.forEach(v => {\n const [n, fn] = v\n if (n === name) {\n el.removeEventListener(name, fn)\n handler.delete(v)\n }\n })\n } else {\n el.removeAttribute(k)\n }\n })\n}\n","/* eslint-disable no-console */\n\n// Utilities\nimport { warn } from 'vue'\n\nexport function consoleWarn (message: string): void {\n warn(`Vuetify: ${message}`)\n}\n\nexport function consoleError (message: string): void {\n warn(`Vuetify error: ${message}`)\n}\n\nexport function deprecate (original: string, replacement: string | string[]) {\n replacement = Array.isArray(replacement)\n ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'`\n : `'${replacement}'`\n warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`)\n}\nexport function breaking (original: string, replacement: string) {\n // warn(`[Vuetify BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`)\n}\nexport function removed (original: string) {\n // warn(`[Vuetify REMOVED] '${original}' has been removed. You can safely omit it.`)\n}\n","// Types\nimport type { LAB, XYZ } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","// Utilities\nimport { clamp } from '@/util/helpers'\n\n// Types\nimport type { RGB, XYZ } from '../colorUtils'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): RGB {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n // Rescale back to [0, 255]\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n }\n}\n\nexport function toXYZ ({ r, g, b }: RGB): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n r = transform(r / 255)\n g = transform(g / 255)\n b = transform(b / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, has, padEnd } from './helpers'\nimport * as CIELAB from '@/util/color/transformCIELAB'\nimport * as sRGB from '@/util/color/transformSRGB'\n\n// Types\nimport type { Colors } from '@/composables/theme'\n\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number, a?: number }\nexport type RGB = { r: number, g: number, b: number, a?: number }\nexport type HSL = { h: number, s: number, l: number, a?: number }\nexport type Hex = string & { __hexBrand: never }\nexport type Color = string | number | HSV | RGB | HSL\n\nexport function isCssColor (color?: string | null | false): boolean {\n return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color)\n}\n\nconst cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\\((?<values>.+)\\)/\nconst mappers = {\n rgb: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n rgba: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n hsl: (h: number, s: number, l: number, a?: number) => HSLtoRGB({ h, s, l, a }),\n hsla: (h: number, s: number, l: number, a?: number) => HSLtoRGB({ h, s, l, a }),\n hsv: (h: number, s: number, v: number, a?: number) => HSVtoRGB({ h, s, v, a }),\n hsva: (h: number, s: number, v: number, a?: number) => HSVtoRGB({ h, s, v, a }),\n}\n\nexport function parseColor (color: Color): RGB {\n if (typeof color === 'number') {\n if (isNaN(color) || color < 0 || color > 0xFFFFFF) { // int can't have opacity\n consoleWarn(`'${color}' is not a valid hex color`)\n }\n\n return {\n r: (color & 0xFF0000) >> 16,\n g: (color & 0xFF00) >> 8,\n b: (color & 0xFF),\n }\n } else if (typeof color === 'string' && cssColorRe.test(color)) {\n const { groups } = color.match(cssColorRe)!\n const { fn, values } = groups as { fn: keyof typeof mappers, values: string }\n const realValues = values.split(/,\\s*/)\n .map(v => {\n if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {\n return parseFloat(v) / 100\n } else {\n return parseFloat(v)\n }\n }) as [number, number, number, number?]\n\n return mappers[fn](...realValues)\n } else if (typeof color === 'string') {\n let hex = color.startsWith('#') ? color.slice(1) : color\n\n if ([3, 4].includes(hex.length)) {\n hex = hex.split('').map(char => char + char).join('')\n } else if (![6, 8].includes(hex.length)) {\n consoleWarn(`'${color}' is not a valid hex(a) color`)\n }\n\n const int = parseInt(hex, 16)\n if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {\n consoleWarn(`'${color}' is not a valid hex(a) color`)\n }\n\n return HexToRGB(hex as Hex)\n } else if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n return color\n } else if (has(color, ['h', 's', 'l'])) {\n return HSVtoRGB(HSLtoHSV(color))\n } else if (has(color, ['h', 's', 'v'])) {\n return HSVtoRGB(color)\n }\n }\n\n throw new TypeError(`Invalid color: ${color == null ? color : (String(color) || (color as any).constructor.name)}\\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)\n}\n\nexport function RGBToInt (color: RGB) {\n return (color.r << 16) + (color.g << 8) + color.b\n}\n\nexport function classToHex (\n color: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<Colors>,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\n/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function HSVtoRGB (hsva: HSV): RGB {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\nexport function HSLtoRGB (hsla: HSL): RGB {\n return HSVtoRGB(HSLtoHSV(hsla))\n}\n\n/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function RGBtoHSV (rgba: RGB): HSV {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVtoHSL (hsva: HSV): HSL {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLtoHSV (hsl: HSL): HSV {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBtoCSS ({ r, g, b, a }: RGB): string {\n return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`\n}\n\nexport function HSVtoCSS (hsva: HSV): string {\n return RGBtoCSS(HSVtoRGB(hsva))\n}\n\nfunction toHex (v: number) {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n}\n\nexport function RGBtoHex ({ r, g, b, a }: RGB): Hex {\n return `#${[\n toHex(r),\n toHex(g),\n toHex(b),\n a !== undefined ? toHex(Math.round(a * 255)) : '',\n ].join('')}` as Hex\n}\n\nexport function HexToRGB (hex: Hex): RGB {\n hex = parseHex(hex)\n let [r, g, b, a] = chunk(hex, 2).map((c: string) => parseInt(c, 16))\n a = a === undefined ? a : (a / 255)\n\n return { r, g, b, a }\n}\n\nexport function HexToHSV (hex: Hex): HSV {\n const rgb = HexToRGB(hex)\n return RGBtoHSV(rgb)\n}\n\nexport function HSVtoHex (hsva: HSV): Hex {\n return RGBtoHex(HSVtoRGB(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length !== 6) {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return hex as Hex\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<Colors>,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function lighten (value: RGB, amount: number): RGB {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n\n return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\nexport function darken (value: RGB, amount: number): RGB {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n\n return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\n/**\n * Calculate the relative luminance of a given color\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function getLuma (color: Color) {\n const rgb = parseColor(color)\n\n return sRGB.toXYZ(rgb)[1]\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function getContrast (first: Color, second: Color) {\n const l1 = getLuma(first)\n const l2 = getLuma(second)\n\n const light = Math.max(l1, l2)\n const dark = Math.min(l1, l2)\n\n return (light + 0.05) / (dark + 0.05)\n}\n","// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue'\n\n// Types\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance, injectSelf, mergeDeep, toKebabCase } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return typeof vnode.props?.[prop] !== 'undefined' ||\n typeof vnode.props?.[toKebabCase(prop)] !== 'undefined'\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue\n }\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents)\n }\n })\n\n function provideSubDefaults () {\n // If subcomponent defaults are provided, override any\n // subcomponents provided by the component's setup function.\n // This uses injectSelf so must be done after the original setup to work.\n useToggleScope(_subcomponentDefaults, () => {\n provideDefaults(mergeDeep(\n injectSelf(DefaultsSymbol)?.value ?? {},\n _subcomponentDefaults.value\n ))\n })\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n","// Composables\nimport { injectDefaults, internalUseDefaults } from '@/composables/defaults'\n\n// Utilities\nimport {\n defineComponent as _defineComponent, // eslint-disable-line no-restricted-imports\n} from 'vue'\nimport { consoleWarn } from '@/util/console'\nimport { pick } from '@/util/helpers'\nimport { propsFactory } from '@/util/propsFactory'\n\n// Types\nimport type {\n AllowedComponentProps,\n ComponentCustomProps,\n ComponentInjectOptions,\n ComponentObjectPropsOptions,\n ComponentOptions,\n ComponentOptionsMixin,\n ComponentOptionsWithObjectProps,\n ComponentOptionsWithoutProps,\n ComponentPropsOptions,\n ComputedOptions,\n DefineComponent,\n EmitsOptions,\n ExtractDefaultPropTypes,\n ExtractPropTypes,\n FunctionalComponent,\n MethodOptions,\n ObjectEmitsOptions,\n SlotsType,\n VNode,\n VNodeChild,\n VNodeProps,\n} from 'vue'\n\n// No props\nexport function defineComponent<\n Props = {},\n RawBindings = {},\n D = {},\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = {},\n EE extends string = string,\n I extends {} = {},\n II extends string = string,\n S extends SlotsType = {},\n>(\n options: ComponentOptionsWithoutProps<\n Props,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n I,\n II,\n S\n >\n): DefineComponent<Props, RawBindings, D, C, M, Mixin, Extends, E, EE>\n\n// Object Props\nexport function defineComponent<\n PropsOptions extends Readonly<ComponentPropsOptions>,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = {},\n EE extends string = string,\n I extends {} = {},\n II extends string = string,\n S extends SlotsType = {},\n>(\n options: ComponentOptionsWithObjectProps<\n PropsOptions,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n I,\n II,\n S\n >\n): DefineComponent<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE> & FilterPropsOptions<PropsOptions>\n\n// Implementation\nexport function defineComponent (options: ComponentOptions) {\n options._setup = options._setup ?? options.setup\n\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value')\n\n return options\n }\n\n if (options._setup) {\n options.props = propsFactory(options.props ?? {}, options.name)()\n const propKeys = Object.keys(options.props)\n options.filterProps = function filterProps (props: Record<string, any>) {\n return pick(props, propKeys, ['class', 'style'])\n }\n\n options.props._as = String\n options.setup = function setup (props: Record<string, any>, ctx) {\n const defaults = injectDefaults()\n\n // Skip props proxy if defaults are not provided\n if (!defaults.value) return options._setup(props, ctx)\n\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, props._as ?? options.name, defaults)\n\n const setupBindings = options._setup(_props, ctx)\n\n provideSubDefaults()\n\n return setupBindings\n }\n }\n\n return options\n}\n\ntype ToListeners<T extends string | number | symbol> = { [K in T]: K extends `on${infer U}` ? Uncapitalize<U> : K }[T]\n\nexport type SlotsToProps<\n U extends RawSlots,\n T = MakeInternalSlots<U>\n> = {\n $children?: (\n | VNodeChild\n | (T extends { default: infer V } ? V : {})\n | { [K in keyof T]?: T[K] }\n )\n 'v-slots'?: { [K in keyof T]?: T[K] | false }\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false\n}\n\ntype RawSlots = Record<string, unknown>\ntype Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild\ntype VueSlot<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[]\ntype MakeInternalSlots<T extends RawSlots> = {\n [K in keyof T]: Slot<T[K]>\n}\ntype MakeSlots<T extends RawSlots> = {\n [K in keyof T]: VueSlot<T[K]>\n}\n\nexport type GenericProps<Props, Slots extends Record<string, unknown>> = {\n $props: Props & SlotsToProps<Slots>\n $slots: MakeSlots<Slots>\n}\n\ntype DefineComponentWithGenericProps<T extends (new (props: Record<string, any>, slots: RawSlots) => {\n $props?: Record<string, any>\n})> = <\n PropsOptions extends Readonly<ComponentObjectPropsOptions>,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record<string, any>,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n // Slots extends RawSlots = ConstructorParameters<T> extends [any, infer SS extends RawSlots | undefined] ? Exclude<SS, undefined> : {},\n Slots extends RawSlots = ConstructorParameters<T>[1],\n S extends SlotsType = SlotsType<Partial<MakeSlots<Slots>>>,\n III = InstanceType<T>,\n P = III extends Record<'$props', any>\n ? Omit<PropsOptions, keyof III['$props']>\n : PropsOptions,\n Base = DefineComponent<\n P,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E extends any[] ? E : III extends Record<'$props', any> ? Omit<E, ToListeners<keyof III['$props']>> : E,\n EE,\n PublicProps,\n ExtractPropTypes<P> & ({} extends E ? {} : EmitsToProps<E>),\n ExtractDefaultPropTypes<P>,\n S\n >\n>(\n options: ComponentOptionsWithObjectProps<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE, I, II, S>\n) => Base & T & FilterPropsOptions<PropsOptions>\n\ntype DefineComponentWithSlots<Slots extends RawSlots> = <\n PropsOptions extends Readonly<ComponentPropsOptions>,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record<string, any>,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n S extends SlotsType = SlotsType<Partial<MakeSlots<Slots>>>,\n>(\n options: ComponentOptionsWithObjectProps<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE, I, II, S>\n) => DefineComponent<\n ExtractPropTypes<PropsOptions> & SlotsToProps<Slots>,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n PublicProps,\n ExtractPropTypes<PropsOptions> & SlotsToProps<Slots> & ({} extends E ? {} : EmitsToProps<E>),\n ExtractDefaultPropTypes<PropsOptions>,\n S\n> & FilterPropsOptions<PropsOptions>\n\n// No argument - simple default slot\nexport function genericComponent (exposeDefaults?: boolean): DefineComponentWithSlots<{ default: never }>\n\n// Generic constructor argument - generic props and slots\nexport function genericComponent<T extends (new (props: Record<string, any>, slots: any) => {\n $props?: Record<string, any>\n})> (exposeDefaults?: boolean): DefineComponentWithGenericProps<T>\n\n// Slots argument - simple slots\nexport function genericComponent<\n Slots extends RawSlots\n> (exposeDefaults?: boolean): DefineComponentWithSlots<Slots>\n\n// Implementation\nexport function genericComponent (exposeDefaults = true) {\n return (options: any) => ((exposeDefaults ? defineComponent : _defineComponent) as any)(options)\n}\n\nexport function defineFunctionalComponent<\n T extends FunctionalComponent<Props>,\n PropsOptions = ComponentObjectPropsOptions,\n Defaults = ExtractDefaultPropTypes<PropsOptions>,\n Props = Readonly<ExtractPropTypes<PropsOptions>>,\n> (props: PropsOptions, render: T): FunctionalComponent<Partial<Defaults> & Omit<Props, keyof Defaults>> {\n render.props = props as any\n return render as any\n}\n\ntype EmitsToProps<T extends EmitsOptions> = T extends string[]\n ? {\n [K in string & `on${Capitalize<T[number]>}`]?: (...args: any[]) => any\n }\n : T extends ObjectEmitsOptions\n ? {\n [K in string &\n `on${Capitalize<string & keyof T>}`]?: K extends `on${infer C}`\n ? T[Uncapitalize<C>] extends null\n ? (...args: any[]) => any\n : (\n ...args: T[Uncapitalize<C>] extends (...args: infer P) => any\n ? P\n : never\n ) => any\n : never\n }\n : {}\n\ntype PublicProps =\n & VNodeProps\n & AllowedComponentProps\n & ComponentCustomProps\n\n// Adds a filterProps method to the component options\nexport interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {\n filterProps<\n T extends Partial<Props>,\n U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>\n > (props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>]\n}\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { camelize, capitalize, h } from 'vue'\nimport { genericComponent } from './defineComponent'\n\nexport function createSimpleFunctional (\n klass: string,\n tag = 'div',\n name?: string\n) {\n return genericComponent()({\n name: name ?? capitalize(camelize(klass.replace(/__/g, '-'))),\n\n props: {\n tag: {\n type: String,\n default: tag,\n },\n\n ...makeComponentProps(),\n },\n\n setup (props, { slots }) {\n return () => {\n return h(props.tag, {\n class: [klass, props.class],\n style: props.style,\n }, slots.default?.())\n }\n },\n })\n}\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)'\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' // Leaving\n","// Utilities\nimport { getCurrentInstance as _getCurrentInstance } from 'vue'\nimport { toKebabCase } from '@/util/helpers'\n\n// Types\nimport type { ComponentInternalInstance } from 'vue'\n\nexport function getCurrentInstance (name: string, message?: string) {\n const vm = _getCurrentInstance()\n\n if (!vm) {\n throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`)\n }\n\n return vm\n}\n\nexport function getCurrentInstanceName (name = 'composables') {\n const vm = getCurrentInstance(name).type\n\n return toKebabCase(vm?.aliasName || vm?.name)\n}\n\nlet _uid = 0\nlet _map = new WeakMap<ComponentInternalInstance, number>()\nexport function getUid () {\n const vm = getCurrentInstance('getUid')\n\n if (_map.has(vm)) return _map.get(vm)!\n else {\n const uid = _uid++\n _map.set(vm, uid)\n return uid\n }\n}\ngetUid.reset = () => {\n _uid = 0\n _map = new WeakMap()\n}\n","export function getScrollParent (el?: HTMLElement, includeHidden = false) {\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el\n el = el.parentElement!\n }\n\n return document.scrollingElement as HTMLElement\n}\n\nexport function getScrollParents (el?: Element | null, stopAt?: Element | null) {\n const elements: HTMLElement[] = []\n\n if (stopAt && el && !stopAt.contains(el)) return elements\n\n while (el) {\n if (hasScrollbar(el)) elements.push(el as HTMLElement)\n if (el === stopAt) break\n el = el.parentElement!\n }\n\n return elements\n}\n\nexport function hasScrollbar (el?: Element | null) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return style.overflowY === 'scroll' || (style.overflowY === 'auto' && el.scrollHeight > el.clientHeight)\n}\n\nfunction isPotentiallyScrollable (el?: Element | null) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['scroll', 'auto'].includes(style.overflowY)\n}\n","// Utilities\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\n\n// Types\nimport type { InjectionKey } from 'vue'\n\nexport function injectSelf<T>(key: InjectionKey<T> | string): T | undefined\nexport function injectSelf (key: InjectionKey<any> | string) {\n const { provides } = getCurrentInstance('injectSelf')\n\n if (provides && (key as string | symbol) in provides) {\n // TS doesn't allow symbol as index type\n return provides[key as string]\n }\n return undefined\n}\n","// Utilities\nimport { getCurrentInstance } from './getCurrentInstance'\n\n// Types\nimport type { VNode } from 'vue'\n\nexport function useRender (render: () => VNode): void {\n const vm = getCurrentInstance('useRender') as any\n vm.render = render\n}\n","// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport { refElement } from '@/util'\nimport { IN_BROWSER } from '@/util/globals'\n\n// Types\nimport type { DeepReadonly, Ref } from 'vue'\n\ninterface ResizeState {\n resizeRef: Ref<HTMLElement | undefined>\n contentRect: DeepReadonly<Ref<DOMRectReadOnly | undefined>>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback, box: 'content' | 'border' = 'content'): ResizeState {\n const resizeRef = ref<HTMLElement>()\n const contentRect = ref<DOMRectReadOnly>()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n if (box === 'content') {\n contentRect.value = entries[0].contentRect\n } else {\n contentRect.value = entries[0].target.getBoundingClientRect()\n }\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(resizeRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(refElement(oldValue))\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(refElement(newValue))\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n }\n}\n","// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport {\n computed,\n inject,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n onMounted,\n provide,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { convertToUnit, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, CSSProperties, InjectionKey, Prop, Ref } from 'vue'\n\ntype Position = 'top' | 'left' | 'right' | 'bottom'\n\ninterface Layer {\n top: number\n bottom: number\n left: number\n right: number\n}\n\ninterface LayoutItem extends Layer {\n id: string\n size: number\n position: Position\n}\n\ninterface LayoutProvide {\n register: (\n vm: ComponentInternalInstance,\n options: {\n id: string\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n }\n ) => {\n layoutItemStyles: Ref<CSSProperties>\n layoutItemScrimStyles: Ref<CSSProperties>\n zIndex: Ref<number>\n }\n unregister: (id: string) => void\n mainRect: Ref<Layer>\n mainStyles: Ref<CSSProperties>\n getLayoutItem: (id: string) => LayoutItem | undefined\n items: Ref<LayoutItem[]>\n layoutRect: Ref<DOMRectReadOnly | undefined>\n rootZIndex: Ref<number>\n}\n\nexport const VuetifyLayoutKey: InjectionKey<LayoutProvide> = Symbol.for('vuetify:layout')\nexport const VuetifyLayoutItemKey: InjectionKey<{ id: string }> = Symbol.for('vuetify:layout-item')\n\nconst ROOT_ZINDEX = 1000\n\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => ([]),\n } as Prop<string[]>,\n fullHeight: Boolean,\n}, 'layout')\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String,\n },\n order: {\n type: [Number, String],\n default: 0,\n },\n absolute: Boolean,\n}, 'layout-item')\n\nexport function useLayout () {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles,\n }\n}\n\nexport function useLayoutItem (options: {\n id: string | undefined\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n}) {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n const id = options.id ?? `layout-item-${getUid()}`\n\n const vm = getCurrentInstance('useLayoutItem')\n\n provide(VuetifyLayoutItemKey, { id })\n\n const isKeptAlive = shallowRef(false)\n onDeactivated(() => isKeptAlive.value = true)\n onActivated(() => isKeptAlive.value = false)\n\n const {\n layoutItemStyles,\n layoutItemScrimStyles,\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id,\n })\n\n onBeforeUnmount(() => layout.unregister(id))\n\n return { layoutItemStyles, layoutRect: layout.layoutRect, layoutItemScrimStyles }\n}\n\nconst generateLayers = (\n layout: string[],\n positions: Map<string, Ref<Position>>,\n layoutSizes: Map<string, Ref<number | string>>,\n activeItems: Map<string, Ref<boolean>>,\n): { id: string, layer: Layer }[] => {\n let previousLayer: Layer = { top: 0, left: 0, right: 0, bottom: 0 }\n const layers = [{ id: '', layer: { ...previousLayer } }]\n for (const id of layout) {\n const position = positions.get(id)\n const amount = layoutSizes.get(id)\n const active = activeItems.get(id)\n if (!position || !amount || !active) continue\n\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0),\n }\n\n layers.push({\n id,\n layer,\n })\n\n previousLayer = layer\n }\n\n return layers\n}\n\nexport function createLayout (props: { overlaps?: string[], fullHeight?: boolean }) {\n const parentLayout = inject(VuetifyLayoutKey, null)\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX)\n const registered = ref<string[]>([])\n const positions = reactive(new Map<string, Ref<Position>>())\n const layoutSizes = reactive(new Map<string, Ref<number | string>>())\n const priorities = reactive(new Map<string, Ref<number>>())\n const activeItems = reactive(new Map<string, Ref<boolean>>())\n const disabledTransitions = reactive(new Map<string, Ref<boolean>>())\n const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n const computedOverlaps = computed(() => {\n const map = new Map<string, { position: Position, amount: number }>()\n const overlaps = props.overlaps ?? []\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':')\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue\n\n const topPosition = positions.get(top)\n const bottomPosition = positions.get(bottom)\n const topAmount = layoutSizes.get(top)\n const bottomAmount = layoutSizes.get(bottom)\n\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue\n\n map.set(bottom, { position: topPosition.value, amount: parseInt(topAmount.value, 10) })\n map.set(top, { position: bottomPosition.value, amount: -parseInt(bottomAmount.value, 10) })\n }\n\n return map\n })\n\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b)\n const layout = []\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p)\n layout.push(...items)\n }\n return generateLayers(layout, positions, layoutSizes, activeItems)\n })\n\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value)\n })\n\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer\n })\n\n const mainStyles = computed<CSSProperties>(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n }\n })\n\n const items = computed(() => {\n return layers.value.slice(1).map(({ id }, index) => {\n const { layer } = layers.value[index]\n const size = layoutSizes.get(id)\n const position = positions.get(id)\n\n return {\n id,\n ...layer,\n size: Number(size!.value),\n position: position!.value,\n }\n })\n })\n\n const getLayoutItem = (id: string) => {\n return items.value.find(item => item.id === id)\n }\n\n const rootVm = getCurrentInstance('createLayout')\n\n const isMounted = shallowRef(false)\n onMounted(() => {\n isMounted.value = true\n })\n\n provide(VuetifyLayoutKey, {\n register: (\n vm: ComponentInternalInstance,\n {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute,\n }\n ) => {\n priorities.set(id, order)\n positions.set(id, position)\n layoutSizes.set(id, layoutSize)\n activeItems.set(id, active)\n disableTransitions && disabledTransitions.set(id, disableTransitions)\n\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode)\n const instanceIndex = instances.indexOf(vm)\n\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id)\n else registered.value.push(id)\n\n const index = computed(() => items.value.findIndex(i => i.id === id))\n const zIndex = computed(() => rootZIndex.value + (layers.value.length * 2) - (index.value * 2))\n\n const layoutItemStyles = computed<CSSProperties>(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right'\n const isOppositeHorizontal = position.value === 'right'\n const isOppositeVertical = position.value === 'bottom'\n\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -110) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}%)`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n } as const\n\n if (!isMounted.value) return styles\n\n const item = items.value[index.value]\n\n if (!item) throw new Error(`[Vuetify] Could not find layout item \"${id}\"`)\n\n const overlap = computedOverlaps.value.get(id)\n if (overlap) {\n item[overlap.position] += overlap.amount\n }\n\n return {\n ...styles,\n height:\n isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width:\n !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n }\n })\n\n const layoutItemScrimStyles = computed<CSSProperties>(() => ({\n zIndex: zIndex.value - 1,\n }))\n\n return { layoutItemStyles, layoutItemScrimStyles, zIndex }\n },\n unregister: (id: string) => {\n priorities.delete(id)\n positions.delete(id)\n layoutSizes.delete(id)\n activeItems.delete(id)\n disabledTransitions.delete(id)\n registered.value = registered.value.filter(v => v !== id)\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex,\n })\n\n const layoutClasses = computed(() => [\n 'v-layout',\n { 'v-layout--full-height': props.fullHeight },\n ])\n\n const layoutStyles = computed(() => ({\n zIndex: rootZIndex.value,\n position: parentLayout ? 'relative' as const : undefined,\n overflow: parentLayout ? 'hidden' : undefined,\n }))\n\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef,\n }\n}\n","export default {\n badge: 'Badge',\n close: 'Close',\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n dateRangeInput: {\n divider: 'to',\n },\n datePicker: {\n ok: 'OK',\n cancel: 'Cancel',\n range: {\n title: 'Select dates',\n header: 'Enter dates',\n },\n title: 'Select date',\n header: 'Enter date',\n input: {\n placeholder: 'Enter date',\n },\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n },\n input: {\n clear: 'Clear {0}',\n prependAction: '{0} prepended action',\n appendAction: '{0} appended action',\n otp: 'Please enter OTP character {0}',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n root: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Go to page {0}',\n currentPage: 'Page {0}, Current page',\n first: 'First page',\n last: 'Last page',\n },\n },\n stepper: {\n next: 'Next',\n prev: 'Previous',\n },\n rating: {\n ariaLabel: {\n item: 'Rating {0} of {1}',\n },\n },\n loading: 'Loading...',\n infiniteScroll: {\n loadMore: 'Load more',\n empty: 'No more',\n },\n}\n","export { default as af } from './af'\nexport { default as ar } from './ar'\nexport { default as bg } from './bg'\nexport { default as ca } from './ca'\nexport { default as ckb } from './ckb'\nexport { default as cs } from './cs'\nexport { default as da } from './da'\nexport { default as de } from './de'\nexport { default as el } from './el'\nexport { default as en } from './en'\nexport { default as es } from './es'\nexport { default as et } from './et'\nexport { default as fa } from './fa'\nexport { default as fi } from './fi'\nexport { default as fr } from './fr'\nexport { default as hr } from './hr'\nexport { default as hu } from './hu'\nexport { default as he } from './he'\nexport { default as id } from './id'\nexport { default as it } from './it'\nexport { default as ja } from './ja'\nexport { default as ko } from './ko'\nexport { default as lv } from './lv'\nexport { default as lt } from './lt'\nexport { default as nl } from './nl'\nexport { default as no } from './no'\nexport { default as pl } from './pl'\nexport { default as pt } from './pt'\nexport { default as ro } from './ro'\nexport { default as ru } from './ru'\nexport { default as sk } from './sk'\nexport { default as sl } from './sl'\nexport { default as srCyrl } from './sr-Cyrl'\nexport { default as srLatn } from './sr-Latn'\nexport { default as sv } from './sv'\nexport { default as th } from './th'\nexport { default as tr } from './tr'\nexport { default as az } from './az'\nexport { default as uk } from './uk'\nexport { default as vi } from './vi'\nexport { default as zhHans } from './zh-Hans'\nexport { default as zhHant } from './zh-Hant'\n\nexport const defaultRtl = {\n af: false,\n ar: true,\n bg: false,\n ca: false,\n ckb: false,\n cs: false,\n de: false,\n el: false,\n en: false,\n es: false,\n et: false,\n fa: true,\n fi: false,\n fr: false,\n hr: false,\n hu: false,\n he: true,\n id: false,\n it: false,\n ja: false,\n ko: false,\n lv: false,\n lt: false,\n nl: false,\n no: false,\n pl: false,\n pt: false,\n ro: false,\n ru: false,\n sk: false,\n sl: false,\n srCyrl: false,\n srLatn: false,\n sv: false,\n th: false,\n tr: false,\n az: false,\n uk: false,\n vi: false,\n zhHans: false,\n zhHant: false,\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype InnerVal<T> = T extends any[] ? Readonly<T> : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref<Props[Prop]>\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n const externalValue = props[prop]\n return transformIn(isControlled.value ? externalValue : internal.value)\n },\n set (internalValue) {\n const newValue = transformOut(internalValue)\n const value = toRaw(isControlled.value ? props[prop] : internal.value)\n if (value === newValue || transformIn(value) === internalValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, newValue)\n },\n }) as any as Ref<InnerVal<Inner>> & { readonly externalValue: Props[Prop] }\n\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value,\n })\n\n return model\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef, watch } from 'vue'\nimport { consoleError, consoleWarn, getObjectValueByPath } from '@/util'\n\n// Locales\nimport en from '@/locale/en'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { LocaleInstance, LocaleMessages, LocaleOptions } from '@/composables/locale'\n\nconst LANG_PREFIX = '$vuetify.'\n\nconst replace = (str: string, params: unknown[]) => {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n return String(params[+index])\n })\n}\n\nconst createTranslateFunction = (\n current: Ref<string>,\n fallback: Ref<string>,\n messages: Ref<LocaleMessages>,\n) => {\n return (key: string, ...params: unknown[]) => {\n if (!key.startsWith(LANG_PREFIX)) {\n return replace(key, params)\n }\n\n const shortKey = key.replace(LANG_PREFIX, '')\n const currentLocale = current.value && messages.value[current.value]\n const fallbackLocale = fallback.value && messages.value[fallback.value]\n\n let str: string = getObjectValueByPath(currentLocale, shortKey, null)\n\n if (!str) {\n consoleWarn(`Translation key \"${key}\" not found in \"${current.value}\", trying fallback locale`)\n str = getObjectValueByPath(fallbackLocale, shortKey, null)\n }\n\n if (!str) {\n consoleError(`Translation key \"${key}\" not found in fallback`)\n str = key\n }\n\n if (typeof str !== 'string') {\n consoleError(`Translation key \"${key}\" has a non-string value`)\n str = key\n }\n\n return replace(str, params)\n }\n}\n\nfunction createNumberFunction (current: Ref<string>, fallback: Ref<string>) {\n return (value: number, options?: Intl.NumberFormatOptions) => {\n const numberFormat = new Intl.NumberFormat([current.value, fallback.value], options)\n\n return numberFormat.format(value)\n }\n}\n\nfunction useProvided <T> (props: any, prop: string, provided: Ref<T>) {\n const internal = useProxiedModel(props, prop, props[prop] ?? provided.value)\n\n // TODO: Remove when defaultValue works\n internal.value = props[prop] ?? provided.value\n\n watch(provided, v => {\n if (props[prop] == null) {\n internal.value = provided.value\n }\n })\n\n return internal as Ref<T>\n}\n\nfunction createProvideFunction (state: { current: Ref<string>, fallback: Ref<string>, messages: Ref<LocaleMessages> }) {\n return (props: LocaleOptions): LocaleInstance => {\n const current = useProvided(props, 'locale', state.current)\n const fallback = useProvided(props, 'fallback', state.fallback)\n const messages = useProvided(props, 'messages', state.messages)\n\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({ current, fallback, messages }),\n }\n }\n}\n\nexport function createVuetifyAdapter (options?: LocaleOptions): LocaleInstance {\n const current = shallowRef(options?.locale ?? 'en')\n const fallback = shallowRef(options?.fallback ?? 'en')\n const messages = ref({ en, ...options?.messages })\n\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({ current, fallback, messages }),\n }\n}\n","// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { defaultRtl } from '@/locale'\nimport { createVuetifyAdapter } from '@/locale/adapters/vuetify'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport interface LocaleMessages {\n [key: string]: LocaleMessages | string\n}\n\nexport interface LocaleOptions {\n messages?: LocaleMessages\n locale?: string\n fallback?: string\n adapter?: LocaleInstance\n}\n\nexport interface LocaleInstance {\n name: string\n messages: Ref<LocaleMessages>\n current: Ref<string>\n fallback: Ref<string>\n t: (key: string, ...params: unknown[]) => string\n n: (value: number) => string\n provide: (props: LocaleOptions) => LocaleInstance\n}\n\nexport const LocaleSymbol: InjectionKey<LocaleInstance & RtlInstance> = Symbol.for('vuetify:locale')\n\nfunction isLocaleInstance (obj: any): obj is LocaleInstance {\n return obj.name != null\n}\n\nexport function createLocale (options?: LocaleOptions & RtlOptions) {\n const i18n = options?.adapter && isLocaleInstance(options?.adapter) ? options?.adapter : createVuetifyAdapter(options)\n const rtl = createRtl(i18n, options)\n\n return { ...i18n, ...rtl }\n}\n\nexport function useLocale () {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance')\n\n return locale\n}\n\nexport function provideLocale (props: LocaleOptions & RtlProps) {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance')\n\n const i18n = locale.provide(props)\n const rtl = provideRtl(i18n, locale.rtl, props)\n\n const data = { ...i18n, ...rtl }\n\n provide(LocaleSymbol, data)\n\n return data\n}\n\n// RTL\n\nexport interface RtlOptions {\n rtl?: Record<string, boolean>\n}\n\nexport interface RtlProps {\n rtl?: boolean\n}\n\nexport interface RtlInstance {\n isRtl: Ref<boolean>\n rtl: Ref<Record<string, boolean>>\n rtlClasses: Ref<string>\n}\n\nexport const RtlSymbol: InjectionKey<RtlInstance> = Symbol.for('vuetify:rtl')\n\nexport function createRtl (i18n: LocaleInstance, options?: RtlOptions): RtlInstance {\n const rtl = ref<Record<string, boolean>>(options?.rtl ?? defaultRtl)\n const isRtl = computed(() => rtl.value[i18n.current.value] ?? false)\n\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`),\n }\n}\n\nexport function provideRtl (locale: LocaleInstance, rtl: RtlInstance['rtl'], props: RtlProps): RtlInstance {\n const isRtl = computed(() => props.rtl ?? rtl.value[locale.current.value] ?? false)\n\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`),\n }\n}\n\nexport function useRtl () {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected rtl instance')\n\n return { isRtl: locale.isRtl, rtlClasses: locale.rtlClasses }\n}\n","/**\n * WCAG 3.0 APCA perceptual contrast algorithm from https://github.com/Myndex/SAPC-APCA\n * @licence https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @see https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup\n */\n// Types\nimport type { RGB } from '@/util'\n\n// MAGICAL NUMBERS\n\n// sRGB Conversion to Relative Luminance (Y)\n\n// Transfer Curve (aka \"Gamma\") for sRGB linearization\n// Simple power curve vs piecewise described in docs\n// Essentially, 2.4 best models actual display\n// characteristics in combination with the total method\nconst mainTRC = 2.4\n\nconst Rco = 0.2126729 // sRGB Red Coefficient (from matrix)\nconst Gco = 0.7151522 // sRGB Green Coefficient (from matrix)\nconst Bco = 0.0721750 // sRGB Blue Coefficient (from matrix)\n\n// For Finding Raw SAPC Contrast from Relative Luminance (Y)\n\n// Constants for SAPC Power Curve Exponents\n// One pair for normal text, and one for reverse\n// These are the \"beating heart\" of SAPC\nconst normBG = 0.55\nconst normTXT = 0.58\nconst revTXT = 0.57\nconst revBG = 0.62\n\n// For Clamping and Scaling Values\n\nconst blkThrs = 0.03 // Level that triggers the soft black clamp\nconst blkClmp = 1.45 // Exponent for the soft black clamp curve\nconst deltaYmin = 0.0005 // Lint trap\nconst scaleBoW = 1.25 // Scaling for dark text on light\nconst scaleWoB = 1.25 // Scaling for light text on dark\nconst loConThresh = 0.078 // Threshold for new simple offset scale\nconst loConFactor = 12.82051282051282 // = 1/0.078,\nconst loConOffset = 0.06 // The simple offset\nconst loClip = 0.001 // Output clip (lint trap #2)\n\nexport function APCAcontrast (text: RGB, background: RGB) {\n // Linearize sRGB\n const Rtxt = (text.r / 255) ** mainTRC\n const Gtxt = (text.g / 255) ** mainTRC\n const Btxt = (text.b / 255) ** mainTRC\n\n const Rbg = (background.r / 255) ** mainTRC\n const Gbg = (background.g / 255) ** mainTRC\n const Bbg = (background.b / 255) ** mainTRC\n\n // Apply the standard coefficients and sum to Y\n let Ytxt = (Rtxt * Rco) + (Gtxt * Gco) + (Btxt * Bco)\n let Ybg = (Rbg * Rco) + (Gbg * Gco) + (Bbg * Bco)\n\n // Soft clamp Y when near black.\n // Now clamping all colors to prevent crossover errors\n if (Ytxt <= blkThrs) Ytxt += (blkThrs - Ytxt) ** blkClmp\n if (Ybg <= blkThrs) Ybg += (blkThrs - Ybg) ** blkClmp\n\n // Return 0 Early for extremely low ∆Y (lint trap #1)\n if (Math.abs(Ybg - Ytxt) < deltaYmin) return 0.0\n\n // SAPC CONTRAST\n\n let outputContrast: number // For weighted final values\n if (Ybg > Ytxt) {\n // For normal polarity, black text on white\n // Calculate the SAPC contrast value and scale\n\n const SAPC = ((Ybg ** normBG) - (Ytxt ** normTXT)) * scaleBoW\n\n // NEW! SAPC SmoothScale™\n // Low Contrast Smooth Scale Rollout to prevent polarity reversal\n // and also a low clip for very low contrasts (lint trap #2)\n // much of this is for very low contrasts, less than 10\n // therefore for most reversing needs, only loConOffset is important\n outputContrast =\n (SAPC < loClip) ? 0.0\n : (SAPC < loConThresh) ? SAPC - SAPC * loConFactor * loConOffset\n : SAPC - loConOffset\n } else {\n // For reverse polarity, light text on dark\n // WoB should always return negative value.\n\n const SAPC = ((Ybg ** revBG) - (Ytxt ** revTXT)) * scaleWoB\n\n outputContrast =\n (SAPC > -loClip) ? 0.0\n : (SAPC > -loConThresh) ? SAPC - SAPC * loConFactor * loConOffset\n : SAPC + loConOffset\n }\n\n return outputContrast * 100\n}\n","// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n","// Styles\nimport './VApp.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps({ fullHeight: true }),\n ...makeThemeProps(),\n}, 'VApp')\n\nexport const VApp = genericComponent()({\n name: 'VApp',\n\n props: makeVAppProps(),\n\n setup (props, { slots }) {\n const theme = provideTheme(props)\n const { layoutClasses, layoutStyles, getLayoutItem, items, layoutRef } = createLayout(props)\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n <div\n ref={ layoutRef }\n class={[\n 'v-application',\n theme.themeClasses.value,\n layoutClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n layoutStyles.value,\n props.style,\n ]}\n >\n <div class=\"v-application__wrap\">\n { slots.default?.() }\n </div>\n </div>\n ))\n\n return {\n getLayoutItem,\n items,\n theme,\n }\n },\n})\n\nexport type VApp = InstanceType<typeof VApp>\n","// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nexport interface TagProps {\n tag: string\n}\n\n// Composables\nexport const makeTagProps = propsFactory({\n tag: {\n type: String,\n default: 'div',\n },\n}, 'tag')\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVToolbarTitleProps = propsFactory({\n text: String,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VToolbarTitle')\n\nexport type VToolbarTitleSlots = {\n default: never\n text: never\n}\n\nexport const VToolbarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VToolbarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasText = !!(slots.default || slots.text || props.text)\n\n return (\n <props.tag\n class={[\n 'v-toolbar-title',\n props.class,\n ]}\n style={ props.style }\n >\n { hasText && (\n <div class=\"v-toolbar-title__placeholder\">\n { slots.text ? slots.text() : props.text }\n\n { slots.default?.() }\n </div>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VToolbarTitle = InstanceType<typeof VToolbarTitle>\n","// Utilities\nimport { h, Transition, TransitionGroup } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { FunctionalComponent, PropType } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n disabled: Boolean,\n group: Boolean,\n hideOnLeave: Boolean,\n leaveAbsolute: Boolean,\n mode: String,\n origin: String,\n}, 'transition')\n\nexport function createCssTransition (\n name: string,\n origin?: string,\n mode?: string\n) {\n return genericComponent()({\n name,\n\n props: makeTransitionProps({\n mode,\n origin,\n }),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: HTMLElement) {\n if (props.origin) {\n el.style.transformOrigin = props.origin\n }\n },\n onLeave (el: HTMLElement) {\n if (props.leaveAbsolute) {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = `${offsetTop}px`\n el.style.left = `${offsetLeft}px`\n el.style.width = `${offsetWidth}px`\n el.style.height = `${offsetHeight}px`\n }\n\n if (props.hideOnLeave) {\n el.style.setProperty('display', 'none', 'important')\n }\n },\n onAfterLeave (el: HTMLElement) {\n if (props.leaveAbsolute && el?._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n },\n }\n\n return () => {\n const tag = props.group ? TransitionGroup : Transition\n\n return h(tag as FunctionalComponent, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n ...(props.group ? undefined : { mode: props.mode }),\n ...(props.disabled ? {} : functions),\n }, slots.default)\n }\n },\n })\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n) {\n return genericComponent()({\n name,\n\n props: {\n mode: {\n type: String as PropType<'in-out' | 'out-in' | 'default'>,\n default: mode,\n },\n disabled: Boolean,\n },\n\n setup (props, { slots }) {\n return () => {\n return h(Transition, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n // mode: props.mode, // TODO: vuejs/vue-next#3104\n ...(props.disabled ? {} : functions),\n }, slots.default)\n }\n },\n })\n}\n","// Utilities\nimport { camelize } from 'vue'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = camelize(`offset-${sizeProperty}`) as 'offsetHeight' | 'offsetWidth'\n\n return {\n onBeforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n onEnter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n onAfterEnter: resetStyles,\n onEnterCancelled: resetStyles,\n\n onLeave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n onAfterLeave,\n onLeaveCancelled: onAfterLeave,\n }\n\n function onAfterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","// Utilities\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n genericComponent,\n nullifyTransforms,\n propsFactory,\n standardEasing,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDialogTransitionProps = propsFactory({\n target: Object as PropType<HTMLElement>,\n}, 'v-dialog-transition')\n\nexport const VDialogTransition = genericComponent()({\n name: 'VDialogTransition',\n\n props: makeVDialogTransitionProps(),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n {},\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n {},\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n {},\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n <Transition\n name=\"dialog-transition\"\n { ...functions }\n css={ false }\n v-slots={ slots }\n />\n )\n : <Transition name=\"dialog-transition\" v-slots={ slots } />\n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\nfunction getDimensions (target: HTMLElement, el: HTMLElement) {\n const targetBox = target.getBoundingClientRect()\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs || 0\n const sy = tsy / maxs || 0\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType<typeof VDialogTransition>\n","import {\n createCssTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition')\nexport const VFadeTransition = createCssTransition('fade-transition')\nexport const VScaleTransition = createCssTransition('scale-transition')\nexport const VScrollXTransition = createCssTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createCssTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createCssTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createCssTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport { VDialogTransition } from './dialog-transition'\n\nexport type VFabTransition = InstanceType<typeof VFabTransition>\nexport type VDialogBottomTransition = InstanceType<typeof VDialogBottomTransition>\nexport type VDialogTopTransition = InstanceType<typeof VDialogTopTransition>\nexport type VFadeTransition = InstanceType<typeof VFadeTransition>\nexport type VScaleTransition = InstanceType<typeof VScaleTransition>\nexport type VScrollXTransition = InstanceType<typeof VScrollXTransition>\nexport type VScrollXReverseTransition = InstanceType<typeof VScrollXReverseTransition>\nexport type VScrollYTransition = InstanceType<typeof VScrollYTransition>\nexport type VScrollYReverseTransition = InstanceType<typeof VScrollYReverseTransition>\nexport type VSlideXTransition = InstanceType<typeof VSlideXTransition>\nexport type VSlideXReverseTransition = InstanceType<typeof VSlideXReverseTransition>\nexport type VSlideYTransition = InstanceType<typeof VSlideYTransition>\nexport type VSlideYReverseTransition = InstanceType<typeof VSlideYReverseTransition>\nexport type VExpandTransition = InstanceType<typeof VExpandTransition>\nexport type VExpandXTransition = InstanceType<typeof VExpandXTransition>\n","// Composables\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { toRefs } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DefaultsOptions } from '@/composables/defaults'\n\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object as PropType<DefaultsOptions>,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean,\n}, 'VDefaultsProvider')\n\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n\n props: makeVDefaultsProviderProps(),\n\n setup (props, { slots }) {\n const { defaults, disabled, reset, root, scoped } = toRefs(props)\n\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled,\n })\n\n return () => slots.default?.()\n },\n})\n\nexport type VDefaultsProvider = InstanceType<typeof VDefaultsProvider>\n","// Utilities\nimport { computed } from 'vue'\nimport { convertToUnit, propsFactory } from '@/util'\n\n// Types\nexport interface DimensionProps {\n height?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n width?: number | string\n}\n\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String],\n}, 'dimension')\n\nexport function useDimension (props: DimensionProps) {\n const dimensionStyles = computed(() => ({\n height: convertToUnit(props.height),\n maxHeight: convertToUnit(props.maxHeight),\n maxWidth: convertToUnit(props.maxWidth),\n minHeight: convertToUnit(props.minHeight),\n minWidth: convertToUnit(props.minWidth),\n width: convertToUnit(props.width),\n }))\n\n return { dimensionStyles }\n}\n","// Styles\nimport './VResponsive.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VResponsiveSlots = {\n default: never\n additional: never\n}\n\nexport function useAspectStyles (props: { aspectRatio?: string | number }) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio)\n\n return ratio\n ? { paddingBottom: String(1 / ratio * 100) + '%' }\n : undefined\n }),\n }\n}\n\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: String,\n inline: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VResponsive')\n\nexport const VResponsive = genericComponent<VResponsiveSlots>()({\n name: 'VResponsive',\n\n props: makeVResponsiveProps(),\n\n setup (props, { slots }) {\n const { aspectStyles } = useAspectStyles(props)\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n <div\n class={[\n 'v-responsive',\n { 'v-responsive--inline': props.inline },\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div class=\"v-responsive__sizer\" style={ aspectStyles.value } />\n\n { slots.additional?.() }\n\n { slots.default && (\n <div class={['v-responsive__content', props.contentClass]}>{ slots.default() }</div>\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VResponsive = InstanceType<typeof VResponsive>\n","// Utilities\nimport { h, mergeProps, Transition } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType<string | boolean | TransitionProps & { component?: Component }>,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, ...rest } = props\n\n const { component = Transition, ...customProps } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(typeof transition === 'string'\n ? { name: disabled ? '' : transition }\n : customProps as any,\n rest as any,\n { disabled }),\n slots\n )\n}\n","// Utilities\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\ntype ObserveHandler = (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n) => void\n\nexport interface ObserveDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n if (!SUPPORTS_INTERSECTION) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[binding.instance!.$.uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(isIntersecting, entries, observer)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![binding.instance!.$.uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unmounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n const observe = el._observe?.[binding.instance!.$.uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![binding.instance!.$.uid]\n}\n\nexport const Intersect = {\n mounted,\n unmounted,\n}\n\nexport default Intersect\n","// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n srcset: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n }\n\n function onLoad () {\n getSrc()\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const [responsiveProps] = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nexport interface BorderProps {\n border?: boolean | number | string\n}\n\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String],\n}, 'border')\n\nexport function useBorder (\n props: BorderProps,\n name = getCurrentInstanceName(),\n) {\n const borderClasses = computed(() => {\n const border = isRef(props) ? props.value : props.border\n const classes: string[] = []\n\n if (border === true || border === '') {\n classes.push(`${name}--border`)\n } else if (\n typeof border === 'string' ||\n border === 0\n ) {\n for (const value of String(border).split(' ')) {\n classes.push(`border-${value}`)\n }\n }\n\n return classes\n })\n\n return { borderClasses }\n}\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { destructComputed, isCssColor } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref } from 'vue'\n\ntype ColorValue = string | false | null | undefined\n\nexport interface TextColorData {\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n}\n\nexport interface BackgroundColorData {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n}\n\n// Composables\nexport function useColor (colors: Ref<{ background?: ColorValue, text?: ColorValue }>) {\n return destructComputed(() => {\n const classes: string[] = []\n const styles: CSSProperties = {}\n\n if (colors.value.background) {\n if (isCssColor(colors.value.background)) {\n styles.backgroundColor = colors.value.background\n } else {\n classes.push(`bg-${colors.value.background}`)\n }\n }\n\n if (colors.value.text) {\n if (isCssColor(colors.value.text)) {\n styles.color = colors.value.text\n styles.caretColor = colors.value.text\n } else {\n classes.push(`text-${colors.value.text}`)\n }\n }\n\n return { colorClasses: classes, colorStyles: styles }\n })\n}\n\nexport function useTextColor (color: Ref<ColorValue>): TextColorData\nexport function useTextColor <T extends Record<K, ColorValue>, K extends string> (props: T, name: K): TextColorData\nexport function useTextColor <T extends Record<K, ColorValue>, K extends string> (\n props: T | Ref<ColorValue>,\n name?: K\n): TextColorData {\n const colors = computed(() => ({\n text: isRef(props) ? props.value : (name ? props[name] : null),\n }))\n\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles,\n } = useColor(colors)\n\n return { textColorClasses, textColorStyles }\n}\n\nexport function useBackgroundColor (color: Ref<ColorValue>): BackgroundColorData\nexport function useBackgroundColor <T extends Record<K, ColorValue>, K extends string> (props: T, name: K): BackgroundColorData\nexport function useBackgroundColor <T extends Record<K, ColorValue>, K extends string> (\n props: T | Ref<ColorValue>,\n name?: K\n): BackgroundColorData {\n const colors = computed(() => ({\n background: isRef(props) ? props.value : (name ? props[name] : null),\n }))\n\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles,\n } = useColor(colors)\n\n return { backgroundColorClasses, backgroundColorStyles }\n}\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nexport interface ElevationProps {\n elevation?: number | string | null\n}\n\n// Composables\nexport const makeElevationProps = propsFactory({\n elevation: {\n type: [Number, String],\n validator (v: any) {\n const value = parseInt(v)\n\n return (\n !isNaN(value) &&\n value >= 0 &&\n // Material Design has a maximum elevation of 24\n // https://material.io/design/environment/elevation.html#default-elevations\n value <= 24\n )\n },\n },\n}, 'elevation')\n\ntype ElevationData = {\n elevationClasses: Ref<string[]>\n}\n\nexport function useElevation (props: ElevationProps | Ref<number | string | undefined>): ElevationData {\n const elevationClasses = computed(() => {\n const elevation = isRef(props) ? props.value : props.elevation\n const classes: string[] = []\n\n if (elevation == null) return classes\n\n classes.push(`elevation-${elevation}`)\n\n return classes\n })\n\n return { elevationClasses }\n}\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype RoundedValue = boolean | string | number | null | undefined\n\nexport interface RoundedProps {\n rounded?: RoundedValue\n tile?: boolean\n}\n\ntype RoundedData = {\n roundedClasses: Ref<string[]>\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref<RoundedValue>,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const classes: string[] = []\n\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`)\n } else if (\n typeof rounded === 'string' ||\n rounded === 0\n ) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`)\n }\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n","// Styles\nimport './VToolbar.sass'\n\n// Components\nimport { VToolbarTitle } from './VToolbarTitle'\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'] as const\n\nexport type Density = null | 'prominent' | 'default' | 'comfortable' | 'compact'\n\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String as PropType<Density>,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48,\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64,\n },\n image: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'header' }),\n ...makeThemeProps(),\n}, 'VToolbar')\n\nexport type VToolbarSlots = {\n default: never\n image: never\n prepend: never\n append: never\n title: never\n extension: never\n}\n\nexport const VToolbar = genericComponent<VToolbarSlots>()({\n name: 'VToolbar',\n\n props: makeVToolbarProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { themeClasses } = provideTheme(props)\n const { rtlClasses } = useRtl()\n\n const isExtended = shallowRef(!!(props.extended || slots.extension?.()))\n const contentHeight = computed(() => parseInt((\n Number(props.height) +\n (props.density === 'prominent' ? Number(props.height) : 0) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ), 10))\n const extensionHeight = computed(() => isExtended.value\n ? parseInt((\n Number(props.extensionHeight) +\n (props.density === 'prominent' ? Number(props.extensionHeight) : 0) -\n (props.density === 'comfortable' ? 4 : 0) -\n (props.density === 'compact' ? 8 : 0)\n ), 10)\n : 0\n )\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => {\n const hasTitle = !!(props.title || slots.title)\n const hasImage = !!(slots.image || props.image)\n\n const extension = slots.extension?.()\n isExtended.value = !!(props.extended || extension)\n\n return (\n <props.tag\n class={[\n 'v-toolbar',\n {\n 'v-toolbar--absolute': props.absolute,\n 'v-toolbar--collapse': props.collapse,\n 'v-toolbar--flat': props.flat,\n 'v-toolbar--floating': props.floating,\n [`v-toolbar--density-${props.density}`]: true,\n },\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n >\n { hasImage && (\n <div key=\"image\" class=\"v-toolbar__image\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n cover\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(contentHeight.value),\n },\n }}\n >\n <div\n class=\"v-toolbar__content\"\n style={{ height: convertToUnit(contentHeight.value) }}\n >\n { slots.prepend && (\n <div class=\"v-toolbar__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n { hasTitle && (\n <VToolbarTitle key=\"title\" text={ props.title }>\n {{ text: slots.title }}\n </VToolbarTitle>\n )}\n\n { slots.default?.() }\n\n { slots.append && (\n <div class=\"v-toolbar__append\">\n { slots.append?.() }\n </div>\n )}\n </div>\n </VDefaultsProvider>\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(extensionHeight.value),\n },\n }}\n >\n <VExpandTransition>\n { isExtended.value && (\n <div\n class=\"v-toolbar__extension\"\n style={{ height: convertToUnit(extensionHeight.value) }}\n >\n { extension }\n </div>\n )}\n </VExpandTransition>\n </VDefaultsProvider>\n </props.tag>\n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType<typeof VToolbar>\n","// Utilities\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from 'vue'\nimport { clamp, consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport interface ScrollProps {\n scrollTarget?: string\n scrollThreshold?: string | number\n}\n\nexport interface ThresholdMetCallbackData {\n isScrollingUp: boolean\n currentThreshold: number\n savedScroll: Ref<number>\n}\n\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String,\n },\n scrollThreshold: {\n type: [String, Number],\n default: 300,\n },\n}, 'scroll')\n\nexport interface ScrollArguments {\n canScroll?: Readonly<Ref<boolean>>\n}\n\nexport function useScroll (\n props: ScrollProps,\n args: ScrollArguments = {},\n) {\n const { canScroll } = args\n let previousScroll = 0\n const target = ref<Element | Window | null>(null)\n const currentScroll = shallowRef(0)\n const savedScroll = shallowRef(0)\n const currentThreshold = shallowRef(0)\n const isScrollActive = shallowRef(false)\n const isScrollingUp = shallowRef(false)\n\n const scrollThreshold = computed(() => {\n return Number(props.scrollThreshold)\n })\n\n /**\n * 1: at top\n * 0: at threshold\n */\n const scrollRatio = computed(() => {\n return clamp(((scrollThreshold.value - currentScroll.value) / scrollThreshold.value) || 0)\n })\n\n const onScroll = () => {\n const targetEl = target.value\n\n if (!targetEl || (canScroll && !canScroll.value)) return\n\n previousScroll = currentScroll.value\n currentScroll.value = ('window' in targetEl) ? targetEl.pageYOffset : targetEl.scrollTop\n\n isScrollingUp.value = currentScroll.value < previousScroll\n currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value)\n }\n\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value\n })\n\n watch(isScrollActive, () => {\n savedScroll.value = 0\n })\n\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window\n\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`)\n return\n }\n\n if (newTarget === target.value) return\n\n target.value?.removeEventListener('scroll', onScroll)\n target.value = newTarget\n target.value.addEventListener('scroll', onScroll, { passive: true })\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll)\n })\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, { immediate: true })\n\n return {\n scrollThreshold,\n currentScroll,\n currentThreshold,\n isScrollActive,\n scrollRatio,\n\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll,\n }\n}\n","// Utilities\nimport { computed, onMounted, readonly, shallowRef } from 'vue'\n\n// Composables\nexport function useSsrBoot () {\n const isBooted = shallowRef(false)\n\n onMounted(() => {\n window.requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n\n const ssrBootStyles = computed(() => !isBooted.value ? ({\n transition: 'none !important',\n }) : undefined)\n\n return { ssrBootStyles, isBooted: readonly(isBooted) }\n}\n","// Styles\nimport './VAppBar.sass'\n\n// Components\nimport { makeVToolbarProps, VToolbar } from '@/components/VToolbar/VToolbar'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeScrollProps, useScroll } from '@/composables/scroll'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VToolbarSlots } from '@/components/VToolbar/VToolbar'\n\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String,\n modelValue: {\n type: Boolean,\n default: true,\n },\n location: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n validator: (value: any) => ['top', 'bottom'].includes(value),\n },\n\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n\n height: {\n type: [Number, String],\n default: 64,\n },\n}, 'VAppBar')\n\nexport const VAppBar = genericComponent<VToolbarSlots>()({\n name: 'VAppBar',\n\n props: makeVAppBarProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const vToolbarRef = ref<VToolbar>()\n const isActive = useProxiedModel(props, 'modelValue')\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? [])\n return {\n hide: behavior.has('hide'),\n // fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image'),\n // shrink: behavior.has('shrink'),\n }\n })\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value\n return (\n behavior.hide ||\n // behavior.fullyHide ||\n behavior.inverted ||\n behavior.collapse ||\n behavior.elevate ||\n behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value\n )\n })\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio,\n } = useScroll(props, { canScroll })\n\n const isCollapsed = computed(() => props.collapse || (\n scrollBehavior.value.collapse &&\n (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0)\n ))\n const isFlat = computed(() => props.flat || (\n scrollBehavior.value.elevate &&\n (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0)\n ))\n const opacity = computed(() => (\n scrollBehavior.value.fadeImage\n ? (scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value)\n : undefined\n ))\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0\n\n const height = vToolbarRef.value?.contentHeight ?? 0\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0\n\n return (height + extensionHeight)\n })\n\n useToggleScope(computed(() => !!props.scrollBehavior), () => {\n watchEffect(() => {\n if (scrollBehavior.value.hide) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value\n } else {\n isActive.value = isScrollingUp.value || (currentScroll.value < scrollThreshold.value)\n }\n } else {\n isActive.value = true\n }\n })\n })\n\n const { ssrBootStyles } = useSsrBoot()\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: shallowRef(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => {\n const [toolbarProps] = VToolbar.filterProps(props)\n\n return (\n <VToolbar\n ref={ vToolbarRef }\n class={[\n 'v-app-bar',\n {\n 'v-app-bar--bottom': props.location === 'bottom',\n },\n props.class,\n ]}\n style={[\n {\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value,\n },\n props.style,\n ]}\n { ...toolbarProps }\n collapse={ isCollapsed.value }\n flat={ isFlat.value }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VAppBar = InstanceType<typeof VAppBar>\n","// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedDensities = [null, 'default', 'comfortable', 'compact'] as const\n\n// typeof allowedDensities[number] evalutes to any\n// when generating api types for whatever reason.\nexport type Density = null | 'default' | 'comfortable' | 'compact'\n\nexport interface DensityProps {\n density?: Density\n}\n\n// Composables\nexport const makeDensityProps = propsFactory({\n density: {\n type: String as PropType<Density>,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n}, 'density')\n\nexport function useDensity (\n props: DensityProps,\n name = getCurrentInstanceName(),\n) {\n const densityClasses = computed(() => {\n return `${name}--density-${props.density}`\n })\n\n return { densityClasses }\n}\n","// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <span key=\"overlay\" class={ `${name}__overlay` } /> }\n\n <span key=\"underlay\" class={ `${name}__underlay` } />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef<VariantProps>,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = computed(() => {\n const { variant } = unref(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(computed(() => {\n const { variant, color } = unref(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n","// Styles\nimport './VBtnGroup.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBtnGroupProps = propsFactory({\n divided: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps(),\n}, 'VBtnGroup')\n\nexport const VBtnGroup = genericComponent()({\n name: 'VBtnGroup',\n\n props: makeVBtnGroupProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBtn: {\n height: 'auto',\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n flat: true,\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n return (\n <props.tag\n class={[\n 'v-btn-group',\n {\n 'v-btn-group--divided': props.divided,\n },\n themeClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n )\n })\n },\n})\n\nexport type VBtnGroup = InstanceType<typeof VBtnGroup>\n","// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, provide, reactive, toRef, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\n\nexport interface GroupItem {\n id: number\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': ((val: unknown) => void) | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref<Readonly<number[]>>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: ComputedRef<{\n id: number\n value: unknown\n disabled: boolean | undefined\n }[]>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: number\n isSelected: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': ((val: { value: boolean }) => void) | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = getUid()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(props, 'value')\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n })\n\n return {\n id,\n isSelected,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v == null) return []\n\n return getIds(items, wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: number) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function select (id: number, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: number[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value != null) {\n ids.push(item.id)\n } else if (itemByIndex != null) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value != null ? item.value : itemIndex)\n }\n })\n\n return values\n}\n","// Styles\nimport './VBtnToggle.sass'\n\n// Components\nimport { makeVBtnGroupProps, VBtnGroup } from '@/components/VBtnGroup/VBtnGroup'\n\n// Composables\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport type BtnToggleSlotProps = 'isSelected' | 'select' | 'selected' | 'next' | 'prev'\nexport interface DefaultBtnToggleSlot extends Pick<GroupProvide, BtnToggleSlotProps> {}\n\nexport const VBtnToggleSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-btn-toggle')\n\ntype VBtnToggleSlots = {\n default: DefaultBtnToggleSlot\n}\n\nexport const makeVBtnToggleProps = propsFactory({\n ...makeVBtnGroupProps(),\n ...makeGroupProps(),\n}, 'VBtnToggle')\n\nexport const VBtnToggle = genericComponent<VBtnToggleSlots>()({\n name: 'VBtnToggle',\n\n props: makeVBtnToggleProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isSelected, next, prev, select, selected } = useGroup(props, VBtnToggleSymbol)\n\n useRender(() => {\n const [btnGroupProps] = VBtnGroup.filterProps(props)\n\n return (\n <VBtnGroup\n class={[\n 'v-btn-toggle',\n props.class,\n ]}\n { ...btnGroupProps }\n style={ props.style }\n >\n { slots.default?.({\n isSelected,\n next,\n prev,\n select,\n selected,\n } as DefaultBtnToggleSlot)}\n </VBtnGroup>\n )\n })\n\n return {\n next,\n prev,\n select,\n }\n },\n})\n\nexport type VBtnToggle = InstanceType<typeof VBtnToggle>\n","// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n","// Icons\nimport { aliases, mdi } from '@/iconsets/mdi'\n\n// Utilities\nimport { computed, inject, unref } from 'vue'\nimport { defineComponent, genericComponent, mergeDeep, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, JSXComponent, PropType, Ref } from 'vue'\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | JSXComponent\nexport const IconValue = [String, Function, Object, Array] as PropType<IconValue>\n\nexport interface IconAliases {\n [name: string]: IconValue\n complete: IconValue\n cancel: IconValue\n close: IconValue\n delete: IconValue\n clear: IconValue\n success: IconValue\n info: IconValue\n warning: IconValue\n error: IconValue\n prev: IconValue\n next: IconValue\n checkboxOn: IconValue\n checkboxOff: IconValue\n checkboxIndeterminate: IconValue\n delimiter: IconValue\n sortAsc: IconValue\n sortDesc: IconValue\n expand: IconValue\n menu: IconValue\n subgroup: IconValue\n dropdown: IconValue\n radioOn: IconValue\n radioOff: IconValue\n edit: IconValue\n ratingEmpty: IconValue\n ratingFull: IconValue\n ratingHalf: IconValue\n loading: IconValue\n first: IconValue\n last: IconValue\n unfold: IconValue\n file: IconValue\n plus: IconValue\n minus: IconValue\n calendar: IconValue\n}\n\nexport interface IconProps {\n tag: string\n icon?: IconValue\n disabled?: Boolean\n}\n\ntype IconComponent = JSXComponent<IconProps>\n\nexport interface IconSet {\n component: IconComponent\n}\n\nexport type IconOptions = {\n defaultSet?: string\n aliases?: Partial<IconAliases>\n sets?: Record<string, IconSet>\n}\n\ntype IconInstance = {\n component: IconComponent\n icon?: IconValue\n}\n\nexport const IconSymbol: InjectionKey<Required<IconOptions>> = Symbol.for('vuetify:icons')\n\nexport const makeIconProps = propsFactory({\n icon: {\n type: IconValue,\n },\n // Could not remove this and use makeTagProps, types complained because it is not required\n tag: {\n type: String,\n required: true,\n },\n}, 'icon')\n\nexport const VComponentIcon = genericComponent()({\n name: 'VComponentIcon',\n\n props: makeIconProps(),\n\n setup (props, { slots }) {\n return () => {\n const Icon = props.icon as JSXComponent\n return (\n <props.tag>\n { props.icon ? <Icon /> : slots.default?.() }\n </props.tag>\n )\n }\n },\n})\nexport type VComponentIcon = InstanceType<typeof VComponentIcon>\n\nexport const VSvgIcon = defineComponent({\n name: 'VSvgIcon',\n\n inheritAttrs: false,\n\n props: makeIconProps(),\n\n setup (props, { attrs }) {\n return () => {\n return (\n <props.tag { ...attrs } style={ null }>\n <svg\n class=\"v-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-hidden=\"true\"\n >\n { Array.isArray(props.icon)\n ? props.icon.map(path => (\n Array.isArray(path)\n ? <path d={ path[0] as string } fill-opacity={ path[1] }></path>\n : <path d={ path as string }></path>\n ))\n : <path d={ props.icon as string }></path>\n }\n </svg>\n </props.tag>\n )\n }\n },\n})\nexport type VSvgIcon = InstanceType<typeof VSvgIcon>\n\nexport const VLigatureIcon = defineComponent({\n name: 'VLigatureIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return <props.tag>{ props.icon }</props.tag>\n }\n },\n})\nexport type VLigatureIcon = InstanceType<typeof VLigatureIcon>\n\nexport const VClassIcon = defineComponent({\n name: 'VClassIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return <props.tag class={ props.icon }></props.tag>\n }\n },\n})\nexport type VClassIcon = InstanceType<typeof VClassIcon>\n\nexport const defaultSets: Record<string, IconSet> = {\n svg: {\n component: VSvgIcon,\n },\n class: {\n component: VClassIcon,\n },\n}\n\n// Composables\nexport function createIcons (options?: IconOptions) {\n return mergeDeep({\n defaultSet: 'mdi',\n sets: {\n ...defaultSets,\n mdi,\n },\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: [\n 'M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z',\n ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6],\n ],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n /* eslint-enable max-len */\n },\n }, options)\n}\n\nexport const useIcon = (props: Ref<IconValue | undefined>) => {\n const icons = inject(IconSymbol)\n\n if (!icons) throw new Error('Missing Vuetify Icons provide!')\n\n const iconData = computed<IconInstance>(() => {\n const iconAlias = unref(props)\n\n if (!iconAlias) return { component: VComponentIcon }\n\n let icon: IconValue | undefined = iconAlias\n\n if (typeof icon === 'string') {\n icon = icon.trim()\n\n if (icon.startsWith('$')) {\n icon = icons.aliases?.[icon.slice(1)]\n }\n }\n\n if (!icon) throw new Error(`Could not find aliased icon \"${iconAlias}\"`)\n\n if (Array.isArray(icon)) {\n return {\n component: VSvgIcon,\n icon,\n }\n } else if (typeof icon !== 'string') {\n return {\n component: VComponentIcon,\n icon,\n }\n }\n\n const iconSetName = Object.keys(icons.sets).find(\n setName => typeof icon === 'string' && icon.startsWith(`${setName}:`)\n )\n\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon\n const iconSet = icons.sets[iconSetName ?? icons.defaultSet]\n\n return {\n component: iconSet.component,\n icon: iconName,\n }\n })\n\n return { iconData }\n}\n","// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from '@/util'\n\n// Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large']\n\nexport interface SizeProps {\n size?: string | number\n}\n\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default',\n },\n}, 'size')\n\nexport function useSize (\n props: SizeProps,\n name = getCurrentInstanceName(),\n) {\n return destructComputed(() => {\n let sizeClasses\n let sizeStyles\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size),\n }\n }\n return { sizeClasses, sizeStyles }\n })\n}\n","// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, Text, toRef } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = ref<string>()\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(computed(() => slotIcon.value || props.icon))\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n","// Utilities\nimport { onBeforeUnmount, ref, shallowRef, watch } from 'vue'\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\nexport function useIntersectionObserver (callback?: IntersectionObserverCallback, options?: IntersectionObserverInit) {\n const intersectionRef = ref<HTMLElement>()\n const isIntersecting = shallowRef(false)\n\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n callback?.(entries, observer)\n\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting)\n }, options)\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n isIntersecting.value = false\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return { intersectionRef, isIntersecting }\n}\n","// Styles\nimport './VProgressCircular.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watchEffect } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVProgressCircularProps = propsFactory({\n bgColor: String,\n color: String,\n indeterminate: [Boolean, String] as PropType<boolean | 'disable-shrink'>,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n rotate: {\n type: [Number, String],\n default: 0,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'div' }),\n ...makeThemeProps(),\n}, 'VProgressCircular')\n\ntype VProgressCircularSlots = {\n default: { value: number }\n}\n\nexport const VProgressCircular = genericComponent<VProgressCircularSlots>()({\n name: 'VProgressCircular',\n\n props: makeVProgressCircularProps(),\n\n setup (props, { slots }) {\n const MAGIC_RADIUS_CONSTANT = 20\n const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT\n\n const root = ref<HTMLElement>()\n\n const { themeClasses } = provideTheme(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const { textColorClasses: underlayColorClasses, textColorStyles: underlayColorStyles } = useTextColor(toRef(props, 'bgColor'))\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n const { resizeRef, contentRect } = useResizeObserver()\n\n const normalizedValue = computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))))\n const width = computed(() => Number(props.width))\n const size = computed(() => {\n // Get size from element if size prop value is small, large etc\n return sizeStyles.value\n ? Number(props.size)\n : contentRect.value\n ? contentRect.value.width\n : Math.max(width.value, 32)\n })\n const diameter = computed(() => (MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value)) * 2)\n const strokeWidth = computed(() => width.value / size.value * diameter.value)\n const strokeDashOffset = computed(() => convertToUnit(((100 - normalizedValue.value) / 100) * CIRCUMFERENCE))\n\n watchEffect(() => {\n intersectionRef.value = root.value\n resizeRef.value = root.value\n })\n\n useRender(() => (\n <props.tag\n ref={ root }\n class={[\n 'v-progress-circular',\n {\n 'v-progress-circular--indeterminate': !!props.indeterminate,\n 'v-progress-circular--visible': isIntersecting.value,\n 'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink',\n },\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n props.class,\n ]}\n style={[\n sizeStyles.value,\n textColorStyles.value,\n props.style,\n ]}\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={ props.indeterminate ? undefined : normalizedValue.value }\n >\n <svg\n style={{\n transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`,\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={ `0 0 ${diameter.value} ${diameter.value}` }\n >\n <circle\n class={[\n 'v-progress-circular__underlay',\n underlayColorClasses.value,\n ]}\n style={ underlayColorStyles.value }\n fill=\"transparent\"\n cx=\"50%\"\n cy=\"50%\"\n r={ MAGIC_RADIUS_CONSTANT }\n stroke-width={ strokeWidth.value }\n stroke-dasharray={ CIRCUMFERENCE }\n stroke-dashoffset={ 0 }\n />\n\n <circle\n class=\"v-progress-circular__overlay\"\n fill=\"transparent\"\n cx=\"50%\"\n cy=\"50%\"\n r={ MAGIC_RADIUS_CONSTANT }\n stroke-width={ strokeWidth.value }\n stroke-dasharray={ CIRCUMFERENCE }\n stroke-dashoffset={ strokeDashOffset.value }\n />\n </svg>\n\n { slots.default && (\n <div class=\"v-progress-circular__content\">\n { slots.default({ value: normalizedValue.value }) }\n </div>\n )}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VProgressCircular = InstanceType<typeof VProgressCircular>\n","// Composables\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { parseAnchor, propsFactory } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType } from 'vue'\nimport type { Anchor } from '@/util'\n\nconst oppositeMap = {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n} as const\n\nexport interface LocationProps {\n location: Anchor | undefined\n}\n\nexport const makeLocationProps = propsFactory({\n location: String as PropType<Anchor>,\n}, 'location')\n\nexport function useLocation (props: LocationProps, opposite = false, offset?: (side: string) => number) {\n const { isRtl } = useRtl()\n\n const locationStyles = computed(() => {\n if (!props.location) return {}\n\n const { side, align } = parseAnchor(\n props.location.split(' ').length > 1\n ? props.location\n : `${props.location} center` as Anchor,\n isRtl.value\n )\n\n function getOffset (side: string) {\n return offset\n ? offset(side)\n : 0\n }\n\n const styles = {} as CSSProperties\n\n if (side !== 'center') {\n if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`\n else styles[side] = 0\n }\n if (align !== 'center') {\n if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`\n else styles[align] = 0\n } else {\n if (side === 'center') styles.top = styles.left = '50%'\n else {\n styles[({\n top: 'left',\n bottom: 'left',\n left: 'top',\n right: 'top',\n } as const)[side]] = '50%'\n }\n styles.transform = {\n top: 'translateX(-50%)',\n bottom: 'translateX(-50%)',\n left: 'translateY(-50%)',\n right: 'translateY(-50%)',\n center: 'translate(-50%, -50%)',\n }[side]\n }\n\n return styles\n })\n\n return { locationStyles }\n}\n","// Styles\nimport './VProgressLinear.sass'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useRtl } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, Transition } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\ntype VProgressLinearSlots = {\n default: { value: number, buffer: number }\n}\n\nexport const makeVProgressLinearProps = propsFactory({\n absolute: Boolean,\n active: {\n type: Boolean,\n default: true,\n },\n bgColor: String,\n bgOpacity: [Number, String],\n bufferValue: {\n type: [Number, String],\n default: 0,\n },\n clickable: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n reverse: Boolean,\n stream: Boolean,\n striped: Boolean,\n roundedBar: Boolean,\n\n ...makeComponentProps(),\n ...makeLocationProps({ location: 'top' } as const),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VProgressLinear')\n\nexport const VProgressLinear = genericComponent<VProgressLinearSlots>()({\n name: 'VProgressLinear',\n\n props: makeVProgressLinearProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n },\n\n setup (props, { slots }) {\n const progress = useProxiedModel(props, 'modelValue')\n const { isRtl, rtlClasses } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { locationStyles } = useLocation(props)\n const { textColorClasses, textColorStyles } = useTextColor(props, 'color')\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(computed(() => props.bgColor || props.color))\n const { backgroundColorClasses: barColorClasses, backgroundColorStyles: barColorStyles } = useBackgroundColor(props, 'color')\n const { roundedClasses } = useRounded(props)\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n\n const max = computed(() => parseInt(props.max, 10))\n const height = computed(() => parseInt(props.height, 10))\n const normalizedBuffer = computed(() => parseFloat(props.bufferValue) / max.value * 100)\n const normalizedValue = computed(() => parseFloat(progress.value) / max.value * 100)\n const isReversed = computed(() => isRtl.value !== props.reverse)\n const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition')\n const opacity = computed(() => {\n return props.bgOpacity == null\n ? props.bgOpacity\n : parseFloat(props.bgOpacity)\n })\n\n function handleClick (e: MouseEvent) {\n if (!intersectionRef.value) return\n\n const { left, right, width } = intersectionRef.value.getBoundingClientRect()\n const value = isReversed.value ? (width - e.clientX) + (right - width) : e.clientX - left\n\n progress.value = Math.round(value / width * max.value)\n }\n\n useRender(() => (\n <props.tag\n ref={ intersectionRef }\n class={[\n 'v-progress-linear',\n {\n 'v-progress-linear--absolute': props.absolute,\n 'v-progress-linear--active': props.active && isIntersecting.value,\n 'v-progress-linear--reverse': isReversed.value,\n 'v-progress-linear--rounded': props.rounded,\n 'v-progress-linear--rounded-bar': props.roundedBar,\n 'v-progress-linear--striped': props.striped,\n },\n roundedClasses.value,\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n {\n bottom: props.location === 'bottom' ? 0 : undefined,\n top: props.location === 'top' ? 0 : undefined,\n height: props.active ? convertToUnit(height.value) : 0,\n '--v-progress-linear-height': convertToUnit(height.value),\n ...locationStyles.value,\n },\n props.style,\n ]}\n role=\"progressbar\"\n aria-hidden={ props.active ? 'false' : 'true' }\n aria-valuemin=\"0\"\n aria-valuemax={ props.max }\n aria-valuenow={ props.indeterminate ? undefined : normalizedValue.value }\n onClick={ props.clickable && handleClick }\n >\n { props.stream && (\n <div\n key=\"stream\"\n class={[\n 'v-progress-linear__stream',\n textColorClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n [isReversed.value ? 'left' : 'right']: convertToUnit(-height.value),\n borderTop: `${convertToUnit(height.value / 2)} dotted`,\n opacity: opacity.value,\n top: `calc(50% - ${convertToUnit(height.value / 4)})`,\n width: convertToUnit(100 - normalizedBuffer.value, '%'),\n '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1)),\n }}\n />\n )}\n\n <div\n class={[\n 'v-progress-linear__background',\n backgroundColorClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n {\n opacity: opacity.value,\n width: convertToUnit((!props.stream ? 100 : normalizedBuffer.value), '%'),\n },\n ]}\n />\n\n <Transition name={ transition.value }>\n { !props.indeterminate ? (\n <div\n class={[\n 'v-progress-linear__determinate',\n barColorClasses.value,\n ]}\n style={[\n barColorStyles.value,\n { width: convertToUnit(normalizedValue.value, '%') },\n ]}\n />\n ) : (\n <div class=\"v-progress-linear__indeterminate\">\n {['long', 'short'].map(bar => (\n <div\n key={ bar }\n class={[\n 'v-progress-linear__indeterminate',\n bar,\n barColorClasses.value,\n ]}\n style={ barColorStyles.value }\n />\n ))}\n </div>\n )}\n </Transition>\n\n { slots.default && (\n <div class=\"v-progress-linear__content\">\n { slots.default({ value: normalizedValue.value, buffer: normalizedBuffer.value }) }\n </div>\n )}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VProgressLinear = InstanceType<typeof VProgressLinear>\n","// Components\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, SetupContext } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport interface LoaderSlotProps {\n color: string | undefined\n isActive: boolean\n}\n\nexport interface LoaderProps {\n loading?: boolean | string\n}\n\n// Composables\nexport const makeLoaderProps = propsFactory({\n loading: [Boolean, String],\n}, 'loader')\n\nexport function useLoader (\n props: LoaderProps,\n name = getCurrentInstanceName(),\n) {\n const loaderClasses = computed(() => ({\n [`${name}--loading`]: props.loading,\n }))\n\n return { loaderClasses }\n}\n\nexport function LoaderSlot (\n props: {\n active: boolean\n name: string\n color?: string\n } & ExtractPropTypes<SlotsToProps<{\n default: LoaderSlotProps\n }>>,\n { slots }: SetupContext,\n) {\n return (\n <div class={ `${props.name}__loader` }>\n { slots.default?.({\n color: props.color,\n isActive: props.active,\n } as LoaderSlotProps) || (\n <VProgressLinear\n active={ props.active }\n color={ props.color }\n height=\"2\"\n indeterminate\n />\n )}\n </div>\n )\n}\n","// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst positionValues = ['static', 'relative', 'fixed', 'absolute', 'sticky'] as const\n\ntype Position = typeof positionValues[number]\n\nexport interface PositionProps {\n position: Position | undefined\n}\n\n// Composables\nexport const makePositionProps = propsFactory({\n position: {\n type: String as PropType<Position>,\n validator: /* istanbul ignore next */ (v: any) => positionValues.includes(v),\n },\n}, 'position')\n\nexport function usePosition (\n props: PositionProps,\n name = getCurrentInstanceName(),\n) {\n const positionClasses = computed(() => {\n return props.position ? `${name}--${props.position}` : undefined\n })\n\n return { positionClasses }\n}\n","// Utilities\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: ComputedRef<boolean>\n isClickable: ComputedRef<boolean>\n href: Ref<string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string') {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n\n const link = props.to ? RouterLink.useLink(props as UseLinkOptions) : undefined\n\n return {\n isLink,\n isClickable,\n route: link?.route,\n navigate: link?.navigate,\n isActive: link && computed(() => props.exact ? link.isExactActive?.value : link.isActive?.value),\n href: computed(() => props.to ? link?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element?._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n","// Styles\nimport './VBtn.sass'\n\n// Components\nimport { VBtnToggleSymbol } from '@/components/VBtnToggle/VBtnToggle'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { useSelectLink } from '@/composables/selectLink'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VBtnSlots = {\n default: never\n prepend: never\n append: never\n loader: never\n}\n\nexport const makeVBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n symbol: {\n type: null,\n default: VBtnToggleSymbol,\n },\n flat: Boolean,\n icon: [Boolean, String, Function, Object] as PropType<boolean | IconValue>,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n block: Boolean,\n stacked: Boolean,\n\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n\n text: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'button' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VBtn')\n\nexport const VBtn = genericComponent<VBtnSlots>()({\n name: 'VBtn',\n\n directives: { Ripple },\n\n props: makeVBtnProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n const group = useGroupItem(props, props.symbol, false)\n const link = useLink(props, attrs)\n\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active\n }\n\n if (link.isLink.value) {\n return link.isActive?.value\n }\n\n return group?.isSelected.value\n })\n const isDisabled = computed(() => group?.disabled.value || props.disabled)\n const isElevated = computed(() => {\n return props.variant === 'elevated' && !(props.disabled || props.flat || props.border)\n })\n const valueAttr = computed(() => {\n if (props.value === undefined) return undefined\n\n return Object(props.value) === props.value\n ? JSON.stringify(props.value, null, 0) : props.value\n })\n\n function onClick (e: MouseEvent) {\n if (\n isDisabled.value ||\n (link.isLink.value && (\n e.metaKey ||\n e.ctrlKey ||\n e.shiftKey ||\n (e.button !== 0) ||\n attrs.target === '_blank'\n ))\n ) return\n\n link.navigate?.(e)\n group?.toggle()\n }\n\n useSelectLink(link, group?.select)\n\n useRender(() => {\n const Tag = (link.isLink.value) ? 'a' : props.tag\n const hasPrepend = !!(props.prependIcon || slots.prepend)\n const hasAppend = !!(props.appendIcon || slots.append)\n const hasIcon = !!(props.icon && props.icon !== true)\n const hasColor = (\n (group?.isSelected.value && (!link.isLink.value || link.isActive?.value)) ||\n (!group || link.isActive?.value)\n )\n\n return (\n <Tag\n type={ Tag === 'a' ? undefined : 'button' }\n class={[\n 'v-btn',\n group?.selectedClass.value,\n {\n 'v-btn--active': isActive.value,\n 'v-btn--block': props.block,\n 'v-btn--disabled': isDisabled.value,\n 'v-btn--elevated': isElevated.value,\n 'v-btn--flat': props.flat,\n 'v-btn--icon': !!props.icon,\n 'v-btn--loading': props.loading,\n 'v-btn--stacked': props.stacked,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n loaderClasses.value,\n positionClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n dimensionStyles.value,\n locationStyles.value,\n sizeStyles.value,\n props.style,\n ]}\n disabled={ isDisabled.value || undefined }\n href={ link.href.value }\n v-ripple={[\n !isDisabled.value && props.ripple,\n null,\n props.icon ? ['center'] : null,\n ]}\n onClick={ onClick }\n value={ valueAttr.value }\n >\n { genOverlays(true, 'v-btn') }\n\n { !props.icon && hasPrepend && (\n <span key=\"prepend\" class=\"v-btn__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n icon={ props.prependIcon }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !props.prependIcon }\n defaults={{\n VIcon: {\n icon: props.prependIcon,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </span>\n )}\n\n <span class=\"v-btn__content\" data-no-activator=\"\">\n { (!slots.default && hasIcon) ? (\n <VIcon\n key=\"content-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"content-defaults\"\n disabled={ !hasIcon }\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.default?.() ?? props.text }\n </VDefaultsProvider>\n )}\n </span>\n\n { !props.icon && hasAppend && (\n <span key=\"append\" class=\"v-btn__append\">\n { !slots.append ? (\n <VIcon\n key=\"append-icon\"\n icon={ props.appendIcon }\n />\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !props.appendIcon }\n defaults={{\n VIcon: {\n icon: props.appendIcon,\n },\n }}\n v-slots:default={ slots.append }\n />\n )}\n </span>\n )}\n\n { !!props.loading && (\n <span key=\"loader\" class=\"v-btn__loader\">\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"23\"\n width=\"2\"\n />\n )}\n </span>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBtn = InstanceType<typeof VBtn>\n","// Utilities\nimport { nextTick, watch } from 'vue'\n\n// Types\nimport type { UseLink } from './router'\n\nexport function useSelectLink (link: UseLink, select?: (value: boolean, e?: Event) => void) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true)\n })\n }\n }, {\n immediate: true,\n })\n}\n","// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVAppBarNavIconProps = propsFactory({\n ...makeVBtnProps({\n icon: '$menu',\n variant: 'text' as const,\n }),\n}, 'VAppBarNavIcon')\n\nexport const VAppBarNavIcon = genericComponent<VBtnSlots>()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VBtn\n { ...props }\n class={[\n 'v-app-bar-nav-icon',\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType<typeof VAppBarNavIcon>\n","// Components\nimport { makeVToolbarTitleProps, VToolbarTitle } from '@/components/VToolbar/VToolbarTitle'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { VToolbarTitleSlots } from '@/components/VToolbar/VToolbarTitle'\n\nexport const VAppBarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VToolbarTitle\n { ...props }\n class=\"v-app-bar-title\"\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType<typeof VAppBarTitle>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VAlertTitle = createSimpleFunctional('v-alert-title')\n\nexport type VAlertTitle = InstanceType<typeof VAlertTitle>\n","// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType<ContextualType>,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VAlert')\n\nexport type VAlertSlots = {\n default: never\n prepend: never\n title: never\n text: never\n append: never\n close: { props: Record<string, any> }\n}\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n name: 'VAlert',\n\n props: makeVAlertProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n <props.tag\n class={[\n 'v-alert',\n props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n },\n {\n 'v-alert--prominent': props.prominent,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n role=\"alert\"\n >\n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n <div\n key=\"border\"\n class={[\n 'v-alert__border',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n />\n )}\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-alert__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ icon.value }\n size={ props.prominent ? 44 : 28 }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !icon.value }\n defaults={{\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-alert__content\">\n { hasTitle && (\n <VAlertTitle key=\"title\">\n { slots.title?.() ?? props.title }\n </VAlertTitle>\n )}\n\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div key=\"append\" class=\"v-alert__append\">\n { slots.append() }\n </div>\n )}\n\n { hasClose && (\n <div key=\"close\" class=\"v-alert__close\">\n { !slots.close ? (\n <VBtn\n key=\"close-btn\"\n icon={ props.closeIcon }\n size=\"x-small\"\n variant=\"text\"\n { ...closeProps.value }\n />\n ) : (\n <VDefaultsProvider\n key=\"close-defaults\"\n defaults={{\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n >\n { slots.close?.({ props: closeProps.value }) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </props.tag>\n )\n }\n },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n","// Styles\nimport './VLabel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLabelProps = propsFactory({\n text: String,\n clickable: Boolean,\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n}, 'VLabel')\n\nexport const VLabel = genericComponent()({\n name: 'VLabel',\n\n props: makeVLabelProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <label\n class={[\n 'v-label',\n {\n 'v-label--clickable': props.clickable,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { props.text }\n\n { slots.default?.() }\n </label>\n ))\n\n return {}\n },\n})\n\nexport type VLabel = InstanceType<typeof VLabel>\n","// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref<any>\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps(),\n}, 'SelectionControlGroup')\n\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl',\n }),\n}, 'VSelectionControlGroup')\n\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n\n props: makeVSelectionControlGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n const updateHandlers = new Set<() => void>()\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn())\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb)\n onScopeDispose(() => {\n updateHandlers.delete(cb)\n })\n },\n })\n\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-selection-control-group',\n { 'v-selection-control-group--inline': props.inline },\n props.class,\n ]}\n style={ props.style }\n role={ props.type === 'radio' ? 'radiogroup' : undefined }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType<typeof VSelectionControlGroup>\n","// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: never\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!(props.readonly || props.disabled) }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!(props.readonly || props.disabled) }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n","// Components\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport const makeVCheckboxBtnProps = propsFactory({\n indeterminate: Boolean,\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n\n ...makeVSelectionControlProps({\n falseIcon: '$checkboxOff',\n trueIcon: '$checkboxOn',\n }),\n}, 'VCheckboxBtn')\n\nexport const VCheckboxBtn = genericComponent<VSelectionControlSlots>()({\n name: 'VCheckboxBtn',\n\n props: makeVCheckboxBtnProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:indeterminate': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n\n function onChange (v: any) {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n const falseIcon = computed(() => {\n return indeterminate.value\n ? props.indeterminateIcon\n : props.falseIcon\n })\n\n const trueIcon = computed(() => {\n return indeterminate.value\n ? props.indeterminateIcon\n : props.trueIcon\n })\n\n useRender(() => (\n <VSelectionControl\n { ...props }\n v-model={ model.value }\n class={[\n 'v-checkbox-btn',\n props.class,\n ]}\n style={ props.style }\n type=\"checkbox\"\n onUpdate:modelValue={ onChange }\n falseIcon={ falseIcon.value }\n trueIcon={ trueIcon.value }\n aria-checked={ indeterminate.value ? 'mixed' : undefined }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VCheckboxBtn = InstanceType<typeof VCheckboxBtn>\n","// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Types\nimport type { IconValue } from '@/composables/icons'\n\ntype names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner'\n\ntype EventProp<T = (...args: any[]) => any> = T | T[]\ntype InputIconProps<T extends names> = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners<T extends {}, U = keyof T> = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon<T extends {}, K extends names = Listeners<T>> (props: T & InputIconProps<K>) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract<names, K> }) {\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear',\n }[name]\n const listener = props[`onClick:${name}`]\n const label = listener && localeKey\n ? t(`$vuetify.input.${localeKey}`, props.label ?? '')\n : undefined\n\n return (\n <VIcon\n icon={ props[`${name}Icon`] }\n aria-label={ label }\n onClick={ listener }\n />\n )\n }\n\n return { InputIcon }\n}\n","// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\n\nexport type VMessageSlot = {\n message: string\n}\n\nexport type VMessagesSlots = {\n message: VMessageSlot\n}\n\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType<string | readonly string[]>,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition as Component,\n leaveAbsolute: true,\n group: true,\n },\n }),\n}, 'VMessages')\n\nexport const VMessages = genericComponent<VMessagesSlots>()({\n name: 'VMessages',\n\n props: makeVMessagesProps(),\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => props.color))\n\n useRender(() => (\n <MaybeTransition\n transition={ props.transition }\n tag=\"div\"\n class={[\n 'v-messages',\n textColorClasses.value,\n props.class,\n ]}\n style={[\n textColorStyles.value,\n props.style,\n ]}\n role=\"alert\"\n aria-live=\"polite\"\n >\n { props.active && (\n messages.value.map((message, i) => (\n <div\n class=\"v-messages__message\"\n key={ `${i}-${messages.value}` }\n >\n { slots.message ? slots.message({ message }) : message }\n </div>\n ))\n )}\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType<typeof VMessages>\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nexport interface FocusProps {\n focused: boolean\n 'onUpdate:focused': ((focused: boolean) => any) | undefined\n}\n\n// Composables\nexport const makeFocusProps = propsFactory({\n focused: Boolean,\n 'onUpdate:focused': EventProp<[boolean]>(),\n}, 'focus')\n\nexport function useFocus (\n props: FocusProps,\n name = getCurrentInstanceName()\n) {\n const isFocused = useProxiedModel(props, 'focused')\n const focusClasses = computed(() => {\n return ({\n [`${name}--focused`]: isFocused.value,\n })\n })\n\n function focus () {\n isFocused.value = true\n }\n\n function blur () {\n isFocused.value = false\n }\n\n return { focusClasses, isFocused, focus, blur }\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n isValid: Ref<boolean | null>\n validateOn: Ref<FormProps['validateOn']>\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n isValid: boolean | null\n errorMessages: string[]\n}\n\nexport interface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\nexport interface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': ((val: boolean | null) => void) | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = shallowRef(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n","// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue'\nimport { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit'\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[]\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n validateOn?: ValidateOnValue | `${ValidateOnValue} lazy` | `lazy ${ValidateOnValue}` | 'lazy'\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[]>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages.length\n ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form?.validateOn.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n blur: set.has('blur') || set.has('input'),\n input: set.has('input'),\n submit: set.has('submit'),\n lazy: set.has('lazy'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(true)\n }\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input, () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch(isValid, () => {\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n function reset () {\n model.value = null\n nextTick(resetValidation)\n }\n\n function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n validate(true)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport { useInputIcon } from '@/components/VInput/InputIcon'\nimport { VMessages } from '@/components/VMessages/VMessages'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { VMessageSlot } from '@/components/VMessages/VMessages'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n messagesId: ComputedRef<string>\n isDirty: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n centerAffix: {\n type: Boolean,\n default: true,\n },\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String] as PropType<string | readonly string[]>,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp<[MouseEvent]>(),\n 'onClick:append': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeValidationProps(),\n}, 'VInput')\n\nexport type VInputSlots = {\n default: VInputSlot\n prepend: VInputSlot\n append: VInputSlot\n details: VInputSlot\n message: VMessageSlot\n}\n\nexport const VInput = genericComponent<VInputSlots>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { rtlClasses } = useRtl()\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n const messages = computed(() => {\n if (props.errorMessages?.length || (!isPristine.value && errorMessages.value.length)) {\n return errorMessages.value\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint\n } else {\n return props.messages\n }\n })\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = messages.value.length > 0\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n <div\n class={[\n 'v-input',\n `v-input--${props.direction}`,\n {\n 'v-input--center-affix': props.centerAffix,\n },\n densityClasses.value,\n rtlClasses.value,\n validationClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-input__prepend\">\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prepend\"\n />\n )}\n </div>\n )}\n\n { slots.default && (\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-input__append\">\n { props.appendIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"append\"\n />\n )}\n\n { slots.append?.(slotProps.value) }\n </div>\n )}\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n id={ messagesId.value }\n active={ hasMessages }\n messages={ messages.value }\n v-slots={{ message: slots.message }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n )}\n </div>\n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n","// Styles\nimport './VCheckbox.sass'\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from './VCheckboxBtn'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '../VSelectionControl/VSelectionControl'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VCheckboxSlots = VInputSlots & VSelectionControlSlots\n\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline']),\n}, 'VCheckbox')\n\nexport const VCheckbox = genericComponent<VCheckboxSlots>()({\n name: 'VCheckbox',\n\n inheritAttrs: false,\n\n props: makeVCheckboxProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'update:focused': (focused: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `checkbox-${uid}`)\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [checkboxProps, _2] = VCheckboxBtn.filterProps(props)\n\n return (\n <VInput\n class={[\n 'v-checkbox',\n props.class,\n ]}\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n focused={ isFocused.value }\n style={ props.style }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <VCheckboxBtn\n { ...checkboxProps }\n id={ id.value }\n aria-describedby={ messagesId.value }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n v-model={ model.value }\n onFocus={ focus }\n onBlur={ blur }\n v-slots={ slots }\n />\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VCheckbox = InstanceType<typeof VCheckbox>\n","// Styles\nimport './VAvatar.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVAvatarProps = propsFactory({\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n image: String,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VAvatar')\n\nexport const VAvatar = genericComponent()({\n name: 'VAvatar',\n\n props: makeVAvatarProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-avatar',\n {\n 'v-avatar--start': props.start,\n 'v-avatar--end': props.end,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n sizeStyles.value,\n props.style,\n ]}\n >\n { props.image\n ? (<VImg key=\"image\" src={ props.image } alt=\"\" cover />)\n : props.icon\n ? (<VIcon key=\"icon\" icon={ props.icon } />)\n : slots.default?.()\n }\n\n { genOverlays(false, 'v-avatar') }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VAvatar = InstanceType<typeof VAvatar>\n","// Styles\nimport './VChipGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group')\n\nexport const makeVChipGroupProps = propsFactory({\n column: Boolean,\n filter: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeComponentProps(),\n ...makeGroupProps({ selectedClass: 'v-chip--selected' }),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'tonal' } as const),\n}, 'VChipGroup')\n\ntype VChipGroupSlots = {\n default: {\n isSelected: (id: number) => boolean\n select: (id: number, value: boolean) => void\n next: () => void\n prev: () => void\n selected: readonly number[]\n }\n}\n\nexport const VChipGroup = genericComponent<VChipGroupSlots>()({\n name: 'VChipGroup',\n\n props: makeVChipGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isSelected, select, next, prev, selected } = useGroup(props, VChipGroupSymbol)\n\n provideDefaults({\n VChip: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n filter: toRef(props, 'filter'),\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-chip-group',\n {\n 'v-chip-group--column': props.column,\n },\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VChipGroup = InstanceType<typeof VChipGroup>\n","/* eslint-disable complexity */\n// Styles\nimport './VChip.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VChipGroupSymbol } from '@/components/VChipGroup/VChipGroup'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VChipSlots = {\n default: {\n isSelected: boolean | undefined\n selectedClass: boolean | (string | undefined)[] | undefined\n select: ((value: boolean) => void) | undefined\n toggle: (() => void) | undefined\n value: unknown\n disabled: boolean\n }\n label: never\n prepend: never\n append: never\n close: never\n filter: never\n}\n\nexport const makeVChipProps = propsFactory({\n activeClass: String,\n appendAvatar: String,\n appendIcon: IconValue,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: {\n type: Boolean,\n default: undefined,\n },\n pill: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n text: String,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'span' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'tonal' } as const),\n}, 'VChip')\n\nexport const VChip = genericComponent<VChipSlots>()({\n name: 'VChip',\n\n directives: { Ripple },\n\n props: makeVChipProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n 'group:selected': (val: { value: boolean }) => true,\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses } = useSize(props)\n const { themeClasses } = provideTheme(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n const group = useGroupItem(props, VChipGroupSymbol, false)\n const link = useLink(props, attrs)\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (!!group || props.link || link.isClickable.value)\n )\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n group?.toggle()\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n return () => {\n const Tag = (link.isLink.value) ? 'a' : props.tag\n const hasAppendMedia = !!(props.appendIcon || props.appendAvatar)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasClose = !!(slots.close || props.closable)\n const hasFilter = !!(slots.filter || props.filter) && group\n const hasPrependMedia = !!(props.prependIcon || props.prependAvatar)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n const hasColor = !group || group.isSelected.value\n\n return isActive.value && (\n <Tag\n class={[\n 'v-chip',\n {\n 'v-chip--disabled': props.disabled,\n 'v-chip--label': props.label,\n 'v-chip--link': isClickable.value,\n 'v-chip--filter': hasFilter,\n 'v-chip--pill': props.pill,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n variantClasses.value,\n group?.selectedClass.value,\n props.class,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n props.style,\n ]}\n disabled={ props.disabled || undefined }\n draggable={ props.draggable }\n href={ link.href.value }\n tabindex={ isClickable.value ? 0 : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={[isClickable.value && props.ripple, null]}\n >\n { genOverlays(isClickable.value, 'v-chip') }\n\n { hasFilter && (\n <VExpandXTransition key=\"filter\">\n <div\n class=\"v-chip__filter\"\n v-show={ group.isSelected.value }\n >\n { !slots.filter ? (\n <VIcon\n key=\"filter-icon\"\n icon={ props.filterIcon }\n />\n ) : (\n <VDefaultsProvider\n key=\"filter-defaults\"\n disabled={ !props.filterIcon }\n defaults={{\n VIcon: { icon: props.filterIcon },\n }}\n v-slots:default={ slots.filter }\n />\n )}\n </div>\n </VExpandXTransition>\n )}\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-chip__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n icon={ props.prependIcon }\n start\n />\n )}\n\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n image={ props.prependAvatar }\n start\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n image: props.prependAvatar,\n start: true,\n },\n VIcon: {\n icon: props.prependIcon,\n start: true,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-chip__content\">\n { slots.default?.({\n isSelected: group?.isSelected.value,\n selectedClass: group?.selectedClass.value,\n select: group?.select,\n toggle: group?.toggle,\n value: group?.value.value,\n disabled: props.disabled,\n }) ?? props.text }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-chip__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n end\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n end\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n end: true,\n image: props.appendAvatar,\n },\n VIcon: {\n end: true,\n icon: props.appendIcon,\n },\n }}\n v-slots:default={ slots.append }\n />\n )}\n </div>\n )}\n\n { hasClose && (\n <div\n key=\"close\"\n class=\"v-chip__close\"\n { ...closeProps.value }\n >\n { !slots.close ? (\n <VIcon\n key=\"close-icon\"\n icon={ props.closeIcon }\n size=\"x-small\"\n />\n ) : (\n <VDefaultsProvider\n key=\"close-defaults\"\n defaults={{\n VIcon: {\n icon: props.closeIcon,\n size: 'x-small',\n },\n }}\n v-slots:default={ slots.close }\n />\n )}\n </div>\n )}\n </Tag>\n )\n }\n },\n})\n\nexport type VChip = InstanceType<typeof VChip>\n","// Utilities\nimport { computed, inject, provide, shallowRef } from 'vue'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\n// Depth\nexport const DepthKey: InjectionKey<Ref<number>> = Symbol.for('vuetify:depth')\n\nexport function useDepth (hasPrepend?: Ref<boolean>) {\n const parent = inject(DepthKey, shallowRef(-1))\n\n const depth = computed(() => parent.value + 1 + (hasPrepend?.value ? 1 : 0))\n\n provide(DepthKey, depth)\n\n return depth\n}\n\n// List\nexport const ListKey: InjectionKey<{\n hasPrepend: Ref<boolean>\n updateHasPrepend: (value: boolean) => void\n}> = Symbol.for('vuetify:list')\n\nexport function createList () {\n const parent = inject(ListKey, { hasPrepend: shallowRef(false), updateHasPrepend: () => null })\n\n const data = {\n hasPrepend: shallowRef(false),\n updateHasPrepend: (value: boolean) => {\n if (value) data.hasPrepend.value = value\n },\n }\n\n provide(ListKey, data)\n\n return parent\n}\n\nexport function useList () {\n return inject(ListKey, null)\n}\n","export type OpenStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set<unknown>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Set<unknown>\n\nexport type OpenSelectStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set<unknown>\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Set<unknown> | null\n\nexport type OpenStrategy = {\n open: OpenStrategyFn\n select: OpenSelectStrategyFn\n}\n\nexport const singleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n const newOpened = new Set<unknown>()\n newOpened.add(id)\n\n let parent = parents.get(id)\n\n while (parent != null) {\n newOpened.add(parent)\n parent = parents.get(parent)\n }\n\n return newOpened\n } else {\n opened.delete(id)\n return opened\n }\n },\n select: () => null,\n}\n\nexport const multipleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n let parent = parents.get(id)\n opened.add(id)\n\n while (parent != null && parent !== id) {\n opened.add(parent)\n parent = parents.get(parent)\n }\n\n return opened\n } else {\n opened.delete(id)\n }\n return opened\n },\n select: () => null,\n}\n\nexport const listOpenStrategy: OpenStrategy = {\n open: multipleOpenStrategy.open,\n select: ({ id, value, opened, parents }) => {\n if (!value) return opened\n\n const path: unknown[] = []\n\n let parent = parents.get(id)\n\n while (parent != null) {\n path.push(parent)\n parent = parents.get(parent)\n }\n\n return new Set(path)\n },\n}\n","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: readonly unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, provide, ref, shallowRef, toRaw } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategyFn } from './selectStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: readonly unknown[] | undefined\n opened: readonly unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<readonly unknown[]>,\n selected: Array as PropType<readonly unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n","// Components\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useList } from './list'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedGroupActivator, useNestedItem } from '@/composables/nested/nested'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VListGroupSlots = {\n default: never\n activator: { isOpen: boolean, props: Record<string, unknown> }\n}\n\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n\n setup (_, { slots }) {\n useNestedGroupActivator()\n\n return () => slots.default?.()\n },\n})\n\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListGroup')\n\nexport const VListGroup = genericComponent<VListGroupSlots>()({\n name: 'VListGroup',\n\n props: makeVListGroupProps(),\n\n setup (props, { slots }) {\n const { isOpen, open, id: _id } = useNestedItem(toRef(props, 'value'), true)\n const id = computed(() => `v-list-group--id-${String(_id.value)}`)\n const list = useList()\n const { isBooted } = useSsrBoot()\n\n function onClick (e: Event) {\n open(!isOpen.value, e)\n }\n\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value,\n }))\n\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon)\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || (props.subgroup && toggleIcon.value),\n appendIcon: props.appendIcon || (!props.subgroup && toggleIcon.value),\n title: props.title,\n value: props.value,\n },\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-list-group',\n {\n 'v-list-group--prepend': list?.hasPrepend.value,\n 'v-list-group--fluid': props.fluid,\n 'v-list-group--subgroup': props.subgroup,\n 'v-list-group--open': isOpen.value,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.activator && (\n <VDefaultsProvider defaults={ activatorDefaults.value }>\n <VListGroupActivator>\n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n </VListGroupActivator>\n </VDefaultsProvider>\n )}\n\n <MaybeTransition transition={{ component: VExpandTransition }} disabled={ !isBooted.value }>\n <div class=\"v-list-group__items\" role=\"group\" aria-labelledby={ id.value } v-show={ isOpen.value }>\n { slots.default?.() }\n </div>\n </MaybeTransition>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VListGroup = InstanceType<typeof VListGroup>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle')\n\nexport type VListItemSubtitle = InstanceType<typeof VListItemSubtitle>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListItemTitle = createSimpleFunctional('v-list-item-title')\n\nexport type VListItemTitle = InstanceType<typeof VListItemTitle>\n","// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n","// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListSubheaderProps = propsFactory({\n color: String,\n inset: Boolean,\n sticky: Boolean,\n title: String,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListSubheader')\n\nexport const VListSubheader = genericComponent()({\n name: 'VListSubheader',\n\n props: makeVListSubheaderProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const hasText = !!(slots.default || props.title)\n\n return (\n <props.tag\n class={[\n 'v-list-subheader',\n {\n 'v-list-subheader--inset': props.inset,\n 'v-list-subheader--sticky': props.sticky,\n },\n textColorClasses.value,\n props.class,\n ]}\n style={[\n { textColorStyles },\n props.style,\n ]}\n >\n { hasText && (\n <div class=\"v-list-subheader__text\">\n { slots.default?.() ?? props.title }\n </div>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListSubheader = InstanceType<typeof VListSubheader>\n","// Styles\nimport './VDivider.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\ntype DividerKey = 'borderRightWidth' | 'borderTopWidth' | 'maxHeight' | 'maxWidth'\ntype DividerStyles = Partial<Record<DividerKey, string>>\n\nexport const makeVDividerProps = propsFactory({\n color: String,\n inset: Boolean,\n length: [Number, String],\n thickness: [Number, String],\n vertical: Boolean,\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n}, 'VDivider')\n\nexport const VDivider = genericComponent()({\n name: 'VDivider',\n\n props: makeVDividerProps(),\n\n setup (props, { attrs }) {\n const { themeClasses } = provideTheme(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const dividerStyles = computed(() => {\n const styles: DividerStyles = {}\n\n if (props.length) {\n styles[props.vertical ? 'maxHeight' : 'maxWidth'] = convertToUnit(props.length)\n }\n\n if (props.thickness) {\n styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness)\n }\n\n return styles\n })\n\n useRender(() => (\n <hr\n class={[\n {\n 'v-divider': true,\n 'v-divider--inset': props.inset,\n 'v-divider--vertical': props.vertical,\n },\n themeClasses.value,\n textColorClasses.value,\n props.class,\n ]}\n style={[\n dividerStyles.value,\n textColorStyles.value,\n props.style,\n ]}\n aria-orientation={\n !attrs.role || attrs.role === 'separator'\n ? props.vertical ? 'vertical' : 'horizontal'\n : undefined\n }\n role={ `${attrs.role || 'separator'}` }\n />\n ))\n\n return {}\n },\n})\n\nexport type VDivider = InstanceType<typeof VDivider>\n","// Components\nimport { VListGroup } from './VListGroup'\nimport { VListItem } from './VListItem'\nimport { VListSubheader } from './VListSubheader'\nimport { VDivider } from '../VDivider'\n\n// Utilities\nimport { createList } from './list'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from './VList'\nimport type { VListItemSlots } from './VListItem'\nimport type { GenericProps } from '@/util'\n\nexport type VListChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n divider: { props: InternalListItem['props'] }\n subheader: { props: InternalListItem['props'] }\n header: { props: InternalListItem['props'] }\n}\n\nexport const makeVListChildrenProps = propsFactory({\n items: Array as PropType<readonly InternalListItem[]>,\n}, 'VListChildren')\n\nexport const VListChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VListChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VListChildren',\n\n props: makeVListChildrenProps(),\n\n setup (props, { slots }) {\n createList()\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, type, raw: item }) => {\n if (type === 'divider') {\n return slots.divider?.({ props: itemProps }) ?? (\n <VDivider { ...itemProps } />\n )\n }\n\n if (type === 'subheader') {\n return slots.subheader?.({ props: itemProps }) ?? (\n <VListSubheader { ...itemProps } />\n )\n }\n\n const slotsWithItem = {\n subtitle: slots.subtitle ? (slotProps: any) => slots.subtitle?.({ ...slotProps, item }) : undefined,\n prepend: slots.prepend ? (slotProps: any) => slots.prepend?.({ ...slotProps, item }) : undefined,\n append: slots.append ? (slotProps: any) => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? (slotProps: any) => slots.title?.({ ...slotProps, item }) : undefined,\n }\n\n const [listGroupProps, _1] = VListGroup.filterProps(itemProps)\n\n return children ? (\n <VListGroup\n value={ itemProps?.value }\n { ...listGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => slots.header\n ? slots.header({ props: { ...itemProps, ...activatorProps } })\n : <VListItem { ...itemProps } { ...activatorProps } v-slots={ slotsWithItem } />,\n default: () => (\n <VListChildren items={ children } v-slots={ slots } />\n ),\n }}\n </VListGroup>\n ) : (\n slots.item ? slots.item({ props: itemProps }) : (\n <VListItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n )\n )\n })\n },\n})\n","// Utilities\nimport { computed } from 'vue'\nimport { deepEqual, getPropertyFromItem, pick, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { SelectItemKey } from '@/util'\n\nexport interface ListItem<T = any> {\n title: string\n value: any\n props: {\n [key: string]: any\n title: string\n value: any\n }\n children?: ListItem<T>[]\n raw: T\n}\n\nexport interface ItemProps {\n items: any[]\n itemTitle: SelectItemKey\n itemValue: SelectItemKey\n itemChildren: SelectItemKey\n itemProps: SelectItemKey\n returnObject: boolean\n}\n\n// Composables\nexport const makeItemsProps = propsFactory({\n items: {\n type: Array as PropType<ItemProps['items']>,\n default: () => ([]),\n },\n itemTitle: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'title',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'value',\n },\n itemChildren: {\n type: [Boolean, String, Array, Function] as PropType<SelectItemKey>,\n default: 'children',\n },\n itemProps: {\n type: [Boolean, String, Array, Function] as PropType<SelectItemKey>,\n default: 'props',\n },\n returnObject: Boolean,\n}, 'list-items')\n\nexport function transformItem (props: Omit<ItemProps, 'items'>, item: any): ListItem {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue, title)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true\n ? typeof item === 'object' && item != null && !Array.isArray(item)\n ? 'children' in item\n ? pick(item, ['children'])[1]\n : item\n : undefined\n : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n title: String(_props.title ?? ''),\n value: _props.value,\n props: _props,\n children: Array.isArray(children) ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nexport function transformItems (props: Omit<ItemProps, 'items'>, items: ItemProps['items']) {\n const array: ListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useItems (props: ItemProps) {\n const items = computed(() => transformItems(props, props.items))\n\n return useTransformItems(items, value => transformItem(props, value))\n}\n\nexport function useTransformItems <T extends { value: unknown }> (items: Ref<T[]>, transform: (value: unknown) => T) {\n function transformIn (value: any[]): T[] {\n return value\n // When the model value is null, returns an InternalItem based on null\n // only if null is one of the items\n .filter(v => v !== null || items.value.some(item => item.value === null))\n .map(v => {\n const existingItem = items.value.find(item => deepEqual(v, item.value))\n // Nullish existingItem means value is a custom input value from combobox\n // In this case, use transformItem to create an InternalItem based on value\n return existingItem ?? transform(v)\n })\n }\n\n function transformOut (value: T[]) {\n return value.map(({ value }) => value)\n }\n\n return { items, transformIn, transformOut }\n}\n","// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeItemsProps } from '@/composables/list-items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport { focusChild, genericComponent, getPropertyFromItem, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nexport interface InternalListItem<T = any> extends ListItem<T> {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction isPrimitive (value: unknown): value is string | number | boolean {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\nfunction transformItem (props: ItemProps & { itemType: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nfunction useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n nav: Boolean,\n\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VList')\n\nexport const VList = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VListChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (val: unknown[]) => true,\n 'update:opened': (val: unknown[]) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { open, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = shallowRef(false)\n const contentRef = ref<HTMLElement>()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\n }\n }\n\n useRender(() => {\n return (\n <props.tag\n ref={ contentRef }\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ (props.disabled || isFocused.value) ? -1 : 0 }\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n >\n <VListChildren items={ items.value } v-slots={ slots }></VListChildren>\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListImg = createSimpleFunctional('v-list-img')\n\nexport type VListImg = InstanceType<typeof VListImg>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemActionProps = propsFactory({\n start: Boolean,\n end: Boolean,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemAction')\n\nexport const VListItemAction = genericComponent()({\n name: 'VListItemAction',\n\n props: makeVListItemActionProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <props.tag\n class={[\n 'v-list-item-action',\n {\n 'v-list-item-action--start': props.start,\n 'v-list-item-action--end': props.end,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VListItemAction = InstanceType<typeof VListItemAction>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemMediaProps = propsFactory({\n start: Boolean,\n end: Boolean,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemMedia')\n\nexport const VListItemMedia = genericComponent()({\n name: 'VListItemMedia',\n\n props: makeVListItemMediaProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n return (\n <props.tag\n class={[\n 'v-list-item-media',\n {\n 'v-list-item-media--start': props.start,\n 'v-list-item-media--end': props.end,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VListItemMedia = InstanceType<typeof VListItemMedia>\n","// Types\nimport type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As<T extends string> {\n private as: T\n}\ntype ElementPoint = Point & As<'element'>\ntype ViewportPoint = Point & As<'viewport'>\ntype Offset = Point & As<'offset'>\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport (point: ElementPoint, offset: Offset | Box) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement (point: ViewportPoint, offset: Offset | Box) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point> (a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint (anchor: ParsedAnchor, box: Box): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor\n\n const x: number =\n align === 'left' ? 0\n : align === 'center' ? box.width / 2\n : align === 'right' ? box.width\n : align\n const y: number =\n side === 'top' ? 0\n : side === 'bottom' ? box.height\n : side\n\n return elementToViewport({ x, y } as ElementPoint, box)\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const { side, align } = anchor\n\n const x: number =\n side === 'left' ? 0\n : side === 'right' ? box.width\n : side\n const y: number =\n align === 'top' ? 0\n : align === 'center' ? box.height / 2\n : align === 'bottom' ? box.height\n : align\n\n return elementToViewport({ x, y } as ElementPoint, box)\n }\n\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint, box)\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\ntype LocationStrategyFn = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFn\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n updateLocation.value = undefined\n })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n if (isRtl) {\n el.style.removeProperty('left')\n } else {\n el.style.removeProperty('right')\n }\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.activatorEl, data.contentEl], ([newActivatorEl, newContentEl], [oldActivatorEl, oldContentEl]) => {\n if (oldActivatorEl) observer.unobserve(oldActivatorEl)\n if (newActivatorEl) observer.observe(newActivatorEl)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n if (!data.activatorEl.value || !data.contentEl.value) return\n\n const targetBox = data.activatorEl.value.getBoundingClientRect()\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n","export function isFixedPosition (el?: HTMLElement) {\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n return true\n }\n el = el.offsetParent as HTMLElement\n }\n return false\n}\n","let clean = true\nconst frames = [] as any[]\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame (cb: () => void) {\n if (!clean || frames.length) {\n frames.push(cb)\n run()\n } else {\n clean = false\n cb()\n run()\n }\n}\n\nlet raf = -1\nfunction run () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n const frame = frames.shift()\n if (frame) frame()\n\n if (frames.length) run()\n else clean = true\n })\n}\n","// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.activatorEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n","// Types\nimport type { InjectionKey } from 'vue'\n\ninterface MenuProvide {\n register (): void\n unregister (): void\n closeParents (): void\n}\n\nexport const VMenuSymbol: InjectionKey<MenuProvide> = Symbol.for('vuetify:v-menu')\n","// Utilities\nimport { IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nexport interface DelayProps {\n closeDelay?: number | string\n openDelay?: number | string\n}\n\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String],\n}, 'delay')\n\nexport function useDelay (props: DelayProps, cb?: (value: boolean) => void) {\n const delays: Partial<Record<keyof DelayProps, number>> = {}\n const runDelayFactory = (prop: keyof DelayProps) => (): Promise<boolean> => {\n // istanbul ignore next\n if (!IN_BROWSER) return Promise.resolve(true)\n\n const active = prop === 'openDelay'\n\n delays.closeDelay && window.clearTimeout(delays.closeDelay)\n delete delays.closeDelay\n\n delays.openDelay && window.clearTimeout(delays.openDelay)\n delete delays.openDelay\n\n return new Promise(resolve => {\n const delay = parseInt(props[prop] ?? 0, 10)\n\n delays[prop] = window.setTimeout(() => {\n cb?.(active)\n resolve(active)\n }, delay)\n })\n }\n\n return {\n runCloseDelay: runDelayFactory('closeDelay'),\n runOpenDelay: runDelayFactory('openDelay'),\n }\n}\n","// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n refElement,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = refElement(activatorRef.value)\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n","// Utilities\nimport { inject, reactive, shallowRef, toRefs, watchEffect } from 'vue'\nimport { mergeDeep } from '@/util'\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nexport type Breakpoint = typeof breakpoints[number]\n\nexport type DisplayBreakpoint = 'xs' | Breakpoint\n\nexport type DisplayThresholds = {\n [key in DisplayBreakpoint]: number\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial<DisplayThresholds>\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport type SSROptions = boolean | {\n clientWidth: number\n clientHeight?: number\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref<boolean>\n sm: Ref<boolean>\n md: Ref<boolean>\n lg: Ref<boolean>\n xl: Ref<boolean>\n xxl: Ref<boolean>\n smAndUp: Ref<boolean>\n mdAndUp: Ref<boolean>\n lgAndUp: Ref<boolean>\n xlAndUp: Ref<boolean>\n smAndDown: Ref<boolean>\n mdAndDown: Ref<boolean>\n lgAndDown: Ref<boolean>\n xlAndDown: Ref<boolean>\n name: Ref<DisplayBreakpoint>\n height: Ref<number>\n width: Ref<number>\n mobile: Ref<boolean>\n mobileBreakpoint: Ref<number | DisplayBreakpoint>\n platform: Ref<DisplayPlatform>\n thresholds: Ref<DisplayThresholds>\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey<DisplayInstance> = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerWidth\n : (typeof ssr === 'object' && ssr.clientWidth) || 0\n}\n\nfunction getClientHeight (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerHeight\n : (typeof ssr === 'object' && ssr.clientHeight) || 0\n}\n\nfunction getPlatform (ssr?: SSROptions): DisplayPlatform {\n const userAgent = IN_BROWSER && !ssr\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: SSROptions): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = shallowRef(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = shallowRef(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport function useDisplay () {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n return display\n}\n","// Composables\nimport { useDisplay } from '@/composables/display'\n\n// Utilities\nimport { onMounted, shallowRef } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\nexport function useHydration () {\n if (!IN_BROWSER) return shallowRef(false)\n\n const { ssr } = useDisplay()\n\n if (ssr) {\n const isMounted = shallowRef(false)\n onMounted(() => {\n isMounted.value = true\n })\n return isMounted\n } else {\n return shallowRef(true)\n }\n}\n","// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport const makeLazyProps = propsFactory({\n eager: Boolean,\n}, 'lazy')\n\nexport function useLazy (props: { eager: boolean }, active: Ref<boolean>) {\n const isBooted = shallowRef(false)\n const hasContent = computed(() => isBooted.value || props.eager || active.value)\n\n watch(active, () => isBooted.value = true)\n\n function onAfterLeave () {\n if (!props.eager) isBooted.value = false\n }\n\n return { isBooted, hasContent, onAfterLeave }\n}\n","// Utilities\nimport { getCurrentInstance } from '@/util'\n\nexport function useScopeId () {\n const vm = getCurrentInstance('useScopeId')\n\n const scopeId = vm!.vnode.scopeId\n\n return { scopeId: scopeId ? { [scopeId]: '' } : undefined }\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey<StackProvide> = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set<number>\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly<Ref<boolean>>,\n zIndex: Readonly<Ref<string | number>>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set<number>(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = shallowRef(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = shallowRef(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n","// Utilities\nimport { attachedRoot } from '@/util'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n","// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any> }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n activatorEl,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n activatorEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && globalTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n { top: convertToUnit(top.value) },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ activatorEl.value }\n onAfterLeave={ () => { onAfterLeave(); emit('afterLeave') } }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n","// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTeleport (target: Ref<boolean | string | Element>) {\n const teleportTarget = computed(() => {\n const _target = target.value\n\n if (_target === true || !IN_BROWSER) return undefined\n\n const targetElement =\n _target === false ? document.body\n : typeof _target === 'string' ? document.querySelector(_target)\n : _target\n\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`)\n return undefined\n }\n\n let container = targetElement.querySelector(':scope > .v-overlay-container')\n\n if (!container) {\n container = document.createElement('div')\n container.className = 'v-overlay-container'\n targetElement.appendChild(container)\n }\n\n return container\n })\n\n return { teleportTarget }\n}\n","// Types\nimport type { ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix<T, P extends string> = [Extract<keyof T, `${P}${any}`>] extends [never] ? T : Omit<T, `${P}${any}`>\n\ntype OmitProps<T> = T extends { $props: any } ? Omit<T, keyof T['$props']> : T\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs<T extends {}, U extends Ref<HTMLElement | Omit<ComponentPublicInstance, '$emit' | '$slots'> | undefined>[]> (\n target: T,\n ...refs: U\n): T & UnionToIntersection<{ [K in keyof U]: OmitPrefix<OmitProps<NonNullable<UnwrapRef<U[K]>>>, '$'> }[number]> {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n has (target, key) {\n if (Reflect.has(target, key)) {\n return true\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true\n }\n }\n return false\n },\n set (target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value)\n }\n }\n\n return false\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren.value) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n","// Styles\nimport './VCounter.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\n\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0,\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: { component: VSlideYTransition as Component },\n }),\n}, 'VCounter')\n\nexport type VCounterSlot = {\n counter: string\n max: string | number | undefined\n value: string | number | undefined\n}\n\ntype VCounterSlots = {\n default: VCounterSlot\n}\n\nexport const VCounter = genericComponent<VCounterSlots>()({\n name: 'VCounter',\n\n functional: true,\n\n props: makeVCounterProps(),\n\n setup (props, { slots }) {\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value)\n })\n\n useRender(() => (\n <MaybeTransition transition={ props.transition }>\n <div\n v-show={ props.active }\n class={[\n 'v-counter',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default\n ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value,\n })\n : counter.value\n }\n </div>\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VCounter = InstanceType<typeof VCounter>\n","// Components\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFieldLabelProps = propsFactory({\n floating: Boolean,\n\n ...makeComponentProps(),\n}, 'VFieldLabel')\n\nexport const VFieldLabel = genericComponent()({\n name: 'VFieldLabel',\n\n props: makeVFieldLabelProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VLabel\n class={[\n 'v-field-label',\n { 'v-field-label--floating': props.floating },\n props.class,\n ]}\n style={ props.style }\n aria-hidden={ props.floating || undefined }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VFieldLabel = InstanceType<typeof VFieldLabel>\n","// Styles\nimport './VField.sass'\n\n// Components\nimport { VFieldLabel } from './VFieldLabel'\nimport { VExpandXTransition } from '@/components/transitions'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined,\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp<[MouseEvent]>(),\n 'onClick:appendInner': EventProp<[MouseEvent]>(),\n 'onClick:prependInner': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps(),\n}, 'VField')\n\nexport type VFieldSlots = {\n clear: never\n 'prepend-inner': DefaultInputSlot\n 'append-inner': DefaultInputSlot\n label: DefaultInputSlot & { label: string | undefined, props: Record<string, any> }\n loader: LoaderSlotProps\n default: VFieldSlot\n}\n\nexport const VField = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n },\n slots: VFieldSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n const { roundedClasses } = useRounded(props)\n const { rtlClasses } = useRtl()\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined\n : isActive.value && isFocused.value ? props.color\n : props.baseColor\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = (slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = slots.label\n ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label,\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n roundedClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n props.style,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ !!props.loading }\n color={ props.error ? 'error' : (typeof props.loading === 'string' ? props.loading : props.color) }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-field__prepend-inner\">\n { props.prependInnerIcon && (\n <InputIcon key=\"prepend-icon\" name=\"prependInner\" />\n )}\n\n { slots['prepend-inner']?.(slotProps.value) }\n </div>\n )}\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n {['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n key=\"floating-label\"\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n for={ id.value }\n >\n { label }\n </VFieldLabel>\n )}\n\n <VFieldLabel ref={ labelRef } for={ id.value }>\n { label }\n </VFieldLabel>\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot)}\n </div>\n\n { hasClear && (\n <VExpandXTransition key=\"clear\">\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { slots.clear\n ? slots.clear()\n : <InputIcon name=\"clear\" />\n }\n </div>\n </VExpandXTransition>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-field__append-inner\">\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <InputIcon key=\"append-icon\" name=\"appendInner\" />\n )}\n </div>\n )}\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n </div>\n )}\n\n <div class=\"v-field__outline__end\" />\n </>\n )}\n\n { isPlainOrUnderlined.value && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label }\n </VFieldLabel>\n )}\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style')\n return pick(attrs, keys)\n}\n","// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default ? (\n <>\n { slots.default() }\n { inputNode }\n </>\n ) : cloneVNode(inputNode)\n }\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n\n ...makeComponentProps(),\n}, 'VVirtualScrollItem')\n\nexport const VVirtualScrollItem = genericComponent<new <Renderless extends boolean = false>(\n props: {\n renderless?: Renderless\n },\n slots: {\n default: Renderless extends true ? {\n itemRef: Ref<HTMLElement | undefined>\n } : never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VVirtualScrollItem',\n\n inheritAttrs: false,\n\n props: makeVVirtualScrollItemProps(),\n\n emits: {\n 'update:height': (height: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { resizeRef, contentRect } = useResizeObserver(undefined, 'border')\n\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height)\n })\n\n useRender(() => props.renderless ? (\n <>\n { slots.default?.({ itemRef: resizeRef }) }\n </>\n ) : (\n <div\n ref={ resizeRef }\n class={[\n 'v-virtual-scroll__item',\n props.class,\n ]}\n style={ props.style }\n { ...attrs }\n >\n { (slots.default as any)?.() }\n </div>\n ))\n },\n})\n","// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, ref, shallowRef, watch, watchEffect } from 'vue'\nimport {\n clamp,\n createRange,\n propsFactory,\n} from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\ntype VirtualProps = {\n itemHeight?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: 48,\n },\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>, offset?: Ref<number>) {\n const first = shallowRef(0)\n const baseItemHeight = shallowRef(props.itemHeight)\n const itemHeight = computed({\n get: () => parseInt(baseItemHeight.value ?? 0, 10),\n set (val) {\n baseItemHeight.value = val\n },\n })\n const containerRef = ref<HTMLElement>()\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const display = useDisplay()\n\n const sizeMap = new Map<any, number>()\n let sizes = Array.from<number | null>({ length: items.value.length })\n const visibleItems = computed(() => {\n const height = (\n !contentRect.value || containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value.height\n ) - (offset?.value ?? 0)\n return Math.ceil((height / itemHeight.value) * 1.7 + 1)\n })\n\n function handleItemResize (index: number, height: number) {\n itemHeight.value = Math.max(itemHeight.value, height)\n sizes[index] = height\n sizeMap.set(items.value[index], height)\n }\n\n function calculateOffset (index: number) {\n return sizes.slice(0, index)\n .reduce((acc, val) => acc! + (val || itemHeight.value), 0)!\n }\n\n function calculateMidPointIndex (scrollTop: number) {\n const end = items.value.length\n\n let middle = 0\n let middleOffset = 0\n while (middleOffset < scrollTop && middle < end) {\n middleOffset += sizes[middle++] || itemHeight.value\n }\n\n return middle - 1\n }\n\n let lastScrollTop = 0\n function handleScroll () {\n if (!containerRef.value || !contentRect.value) return\n\n const height = contentRect.value.height - 56\n const scrollTop = containerRef.value.scrollTop\n const direction = scrollTop < lastScrollTop ? UP : DOWN\n\n const midPointIndex = calculateMidPointIndex(scrollTop + height / 2)\n const buffer = Math.round(visibleItems.value / 3)\n const firstIndex = midPointIndex - buffer\n const lastIndex = first.value + (buffer * 2) - 1\n if (direction === UP && midPointIndex <= lastIndex) {\n first.value = clamp(firstIndex, 0, items.value.length)\n } else if (direction === DOWN && midPointIndex >= lastIndex) {\n first.value = clamp(firstIndex, 0, items.value.length - visibleItems.value)\n }\n\n lastScrollTop = scrollTop\n }\n\n function scrollToIndex (index: number) {\n if (!containerRef.value) return\n\n const offset = calculateOffset(index)\n containerRef.value.scrollTop = offset\n }\n\n const last = computed(() => Math.min(items.value.length, first.value + visibleItems.value))\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n const paddingTop = computed(() => calculateOffset(first.value))\n const paddingBottom = computed(() => calculateOffset(items.value.length) - calculateOffset(last.value))\n\n watch(() => items.value.length, () => {\n sizes = createRange(items.value.length).map(() => itemHeight.value)\n sizeMap.forEach((height, item) => {\n const index = items.value.indexOf(item)\n if (index === -1) {\n sizeMap.delete(item)\n } else {\n sizes[index] = height\n }\n })\n })\n\n return {\n containerRef,\n computedItems,\n itemHeight,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleItemResize,\n }\n}\n","// Styles\nimport './VVirtualScroll.sass'\n\n// Components\nimport { VVirtualScrollItem } from './VVirtualScrollItem'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport interface VVirtualScrollSlot<T> {\n item: T\n index: number\n}\n\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array as PropType<readonly unknown[]>,\n default: () => ([]),\n },\n renderless: Boolean,\n\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VVirtualScroll')\n\nexport const VVirtualScroll = genericComponent<new <T, Renderless extends boolean = false>(\n props: {\n items?: readonly T[]\n renderless?: Renderless\n },\n slots: {\n default: VVirtualScrollSlot<T> & (Renderless extends true ? {\n itemRef: Ref<HTMLElement | undefined>\n } : {})\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VVirtualScroll',\n\n props: makeVVirtualScrollProps(),\n\n setup (props, { slots }) {\n const vm = getCurrentInstance('VVirtualScroll')\n const { dimensionStyles } = useDimension(props)\n const {\n containerRef,\n handleScroll,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems,\n } = useVirtual(props, toRef(props, 'items'))\n\n useToggleScope(() => props.renderless, () => {\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el as HTMLElement, true)\n containerRef.value?.addEventListener('scroll', handleScroll)\n })\n onScopeDispose(() => {\n containerRef.value?.removeEventListener('scroll', handleScroll)\n })\n })\n\n useRender(() => {\n const children = computedItems.value.map(item => (\n <VVirtualScrollItem\n key={ item.index }\n renderless={ props.renderless }\n onUpdate:height={ height => handleItemResize(item.index, height) }\n >\n { slotProps => slots.default?.({ item: item.raw, index: item.index, ...slotProps }) }\n </VVirtualScrollItem>\n ))\n\n return props.renderless ? (\n <>\n <div class=\"v-virtual-scroll__spacer\" style={{ paddingTop: convertToUnit(paddingTop.value) }} />\n { children }\n <div class=\"v-virtual-scroll__spacer\" style={{ paddingBottom: convertToUnit(paddingBottom.value) }} />\n </>\n ) : (\n <div\n ref={ containerRef }\n class={[\n 'v-virtual-scroll',\n props.class,\n ]}\n onScroll={ handleScroll }\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div\n class=\"v-virtual-scroll__container\"\n style={{\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value),\n }}\n >\n { children }\n </div>\n </div>\n )\n })\n\n return {\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType<typeof VVirtualScroll>\n","// Utilities\nimport { shallowRef, watch } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { VList } from '@/components/VList'\nimport type { VTextField } from '@/components/VTextField'\n\nexport function useScrolling (listRef: Ref<VList | undefined>, textFieldRef: Ref<VTextField | undefined>) {\n const isScrolling = shallowRef(false)\n let scrollTimeout: number\n function onListScroll (e: Event) {\n cancelAnimationFrame(scrollTimeout)\n isScrolling.value = true\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false\n })\n })\n }\n async function finishScrolling () {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise<void>(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop()\n resolve()\n })\n } else resolve()\n })\n }\n async function onListKeydown (e: KeyboardEvent) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus()\n }\n\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return\n const el: HTMLElement = listRef.value?.$el\n if (!el) return\n\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n await finishScrolling()\n\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)')\n\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n (child as HTMLElement).focus()\n break\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n (child as HTMLElement).focus()\n break\n }\n }\n }\n }\n\n return { onListScroll, onListKeydown }\n}\n","// Styles\nimport './VSelect.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from './useScrolling'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, ref, shallowRef } from 'vue'\nimport { deepEqual, genericComponent, getPropertyFromItem, matchesSelector, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject> | null\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n itemColor: String,\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'Select')\n\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition as Component } }),\n}, 'VSelect')\n\nexport const VSelect = genericComponent<new <\n T extends readonly any[],\n Item = T extends readonly (infer U)[] ? U : never,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>\n>(\n props: {\n items?: T\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (val: V) => void\n },\n slots: Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n chip: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n selection: { item: ListItem<Item>, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelect',\n\n props: makeVSelectProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(v === null ? [null] : wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => {\n const itemRawValue = getPropertyFromItem(item.raw, props.itemValue)\n const modelRawValue = getPropertyFromItem(v.raw, props.itemValue)\n\n if (itemRawValue === undefined || modelRawValue === undefined) return false\n\n return props.returnObject\n ? props.valueComparator(itemRawValue, modelRawValue)\n : props.valueComparator(item.value, v.value)\n }) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const isFocused = shallowRef(false)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !selections.value.some(s => s === item))\n }\n return items.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref<VList>()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (!e.key || props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n }\n }\n function select (item: ListItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n menu.value = false\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onAfterLeave () {\n if (isFocused.value) {\n vTextFieldRef.value?.focus()\n }\n }\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n function onModelUpdate (v: any) {\n if (v == null) model.value = []\n else if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === v)\n if (item) {\n select(item)\n }\n } else if (vTextFieldRef.value) {\n vTextFieldRef.value.value = ''\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ onModelUpdate }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n 'v-select--selection-slot': !!slots.selection,\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"none\"\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n disabled={ menuDisabled.value }\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n color={ props.itemColor ?? props.color }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n <VVirtualScroll renderless items={ displayItems.value }>\n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n <VListItem { ...itemProps }>\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n key={ item.value }\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n }}\n </VListItem>\n )\n }}\n </VVirtualScroll>\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-select__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n <VIcon\n class=\"v-select__menu-icon\"\n icon={ props.menuIcon }\n />\n ) : undefined }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n","/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: any) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: any[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if (query && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(item)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(item as any, key, item)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends { value: unknown }> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined> | (() => string | undefined),\n options?: {\n transform?: (item: T) => any\n }\n) {\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: props.customKeyFilter,\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n","// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from '../VSelect/useScrolling'\nimport { useTextColor } from '@/composables/color'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, getPropertyFromItem, matchesSelector, noop, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject> | null\n\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType<boolean | 'exact'>,\n },\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VAutocomplete')\n\nexport const VAutocomplete = genericComponent<new <\n T extends readonly any[],\n Item = T extends readonly (infer U)[] ? U : never,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>\n>(\n props: {\n items?: T\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (val: V) => void\n },\n slots: Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n chip: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n selection: { item: ListItem<Item>, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VAutocomplete',\n\n props: makeVAutocompleteProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = shallowRef(false)\n const isPristine = shallowRef(true)\n const listHasFocus = shallowRef(false)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(v === null ? [null] : wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => {\n const itemRawValue = getPropertyFromItem(item.raw, props.itemValue)\n const modelRawValue = getPropertyFromItem(v.raw, props.itemValue)\n\n if (itemRawValue === undefined || modelRawValue === undefined) return false\n\n return props.returnObject\n ? props.valueComparator(itemRawValue, modelRawValue)\n : props.valueComparator(item.value, v.value)\n }) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true ||\n (props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title)\n return selectFirst &&\n displayItems.value.length > 0 &&\n !isPristine.value &&\n !listHasFocus.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref<VList>()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = true\n }\n function onMousedownMenuIcon (e: MouseEvent) {\n if (menuDisabled.value) return\n\n if (isFocused.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {\n select(filteredItems.value[0])\n }\n\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n const originalSelectionIndex = selectionIndex.value\n\n if (selection.value) select(selection.value)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onChange (e: Event) {\n if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === (e.target as HTMLInputElement).value)\n if (item) {\n select(item)\n }\n }\n }\n\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n setTimeout(() => {\n listHasFocus.value = true\n })\n }\n function onFocusout (e: FocusEvent) {\n listHasFocus.value = false\n }\n function onUpdateModelValue (v: any) {\n if (v == null || (v === '' && !props.multiple)) model.value = []\n }\n\n const isSelecting = shallowRef(false)\n\n function select (item: ListItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n search.value = item.title\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return\n\n if (val) {\n isSelecting.value = true\n search.value = props.multiple ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n if (!props.multiple && !search.value) model.value = []\n else if (\n highlightFirst.value &&\n !listHasFocus.value &&\n !selections.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\n select(displayItems.value[0])\n }\n menu.value = false\n search.value = ''\n selectionIndex.value = -1\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ onUpdateModelValue }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n onInput={ onInput }\n onChange={ onChange }\n class={[\n 'v-autocomplete',\n `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`,\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selection-slot': !!slots.selection,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1,\n },\n props.class,\n ]}\n style={ props.style }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n disabled={ menuDisabled.value }\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n color={ props.itemColor ?? props.color }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n <VVirtualScroll renderless items={ displayItems.value }>\n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: (highlightFirst.value && index === 0) ? true : undefined,\n onClick: () => select(item),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n <VListItem { ...itemProps }>\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n key={ item.value }\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )\n }}\n </VVirtualScroll>\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-autocomplete__selection',\n index === selectionIndex.value && [\n 'v-autocomplete__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n <VIcon\n class=\"v-autocomplete__menu-icon\"\n icon={ props.menuIcon }\n onMousedown={ onMousedownMenuIcon }\n onClick={ noop }\n />\n ) : undefined }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n","// Styles\nimport './VBadge.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, pick, propsFactory, useRender } from '@/util'\n\nexport type VBadgeSlots = {\n default: never\n badge: never\n}\n\nexport const makeVBadgeProps = propsFactory({\n bordered: Boolean,\n color: String,\n content: [Number, String],\n dot: Boolean,\n floating: Boolean,\n icon: IconValue,\n inline: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge',\n },\n max: [Number, String],\n modelValue: {\n type: Boolean,\n default: true,\n },\n offsetX: [Number, String],\n offsetY: [Number, String],\n textColor: String,\n\n ...makeComponentProps(),\n ...makeLocationProps({ location: 'top end' } as const),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeTransitionProps({ transition: 'scale-rotate-transition' }),\n}, 'VBadge')\n\nexport const VBadge = genericComponent<VBadgeSlots>()({\n name: 'VBadge',\n\n inheritAttrs: false,\n\n props: makeVBadgeProps(),\n\n setup (props, ctx) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { roundedClasses } = useRounded(props)\n const { t } = useLocale()\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'textColor'))\n const { themeClasses } = useTheme()\n\n const { locationStyles } = useLocation(props, true, side => {\n const base = props.floating\n ? (props.dot ? 2 : 4)\n : (props.dot ? 8 : 12)\n\n return base + (\n ['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0)\n : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0)\n : 0\n )\n })\n\n useRender(() => {\n const value = Number(props.content)\n const content = (!props.max || isNaN(value)) ? props.content\n : value <= +props.max ? value\n : `${props.max}+`\n\n const [badgeAttrs, attrs] = pick(ctx.attrs as Record<string, any>, [\n 'aria-atomic',\n 'aria-label',\n 'aria-live',\n 'role',\n 'title',\n ])\n\n return (\n <props.tag\n class={[\n 'v-badge',\n {\n 'v-badge--bordered': props.bordered,\n 'v-badge--dot': props.dot,\n 'v-badge--floating': props.floating,\n 'v-badge--inline': props.inline,\n },\n props.class,\n ]}\n { ...attrs }\n style={ props.style }\n >\n <div class=\"v-badge__wrapper\">\n { ctx.slots.default?.() }\n\n <MaybeTransition transition={ props.transition }>\n <span\n v-show={ props.modelValue }\n class={[\n 'v-badge__badge',\n themeClasses.value,\n backgroundColorClasses.value,\n roundedClasses.value,\n textColorClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n props.inline ? {} : locationStyles.value,\n ]}\n aria-atomic=\"true\"\n aria-label={ t(props.label, value) }\n aria-live=\"polite\"\n role=\"status\"\n { ...badgeAttrs }\n >\n {\n props.dot ? undefined\n : ctx.slots.badge ? ctx.slots.badge?.()\n : props.icon ? <VIcon icon={ props.icon } />\n : content\n }\n </span>\n </MaybeTransition>\n </div>\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBadge = InstanceType<typeof VBadge>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n\n ...makeComponentProps(),\n}, 'VBannerActions')\n\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n\n props: makeVBannerActionsProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n variant: 'text',\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-banner-actions',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VBannerActions = InstanceType<typeof VBannerActions>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VBannerText = createSimpleFunctional('v-banner-text')\n\nexport type VBannerText = InstanceType<typeof VBannerText>\n","// Styles\nimport './VBanner.sass'\n\n// Components\nimport { VBannerActions } from './VBannerActions'\nimport { VBannerText } from './VBannerText'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VBannerSlots = {\n default: never\n prepend: never\n text: never\n actions: never\n}\n\nexport const makeVBannerProps = propsFactory({\n avatar: String,\n color: String,\n icon: IconValue,\n lines: String as PropType<'one' | 'two' | 'three'>,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VBanner')\n\nexport const VBanner = genericComponent<VBannerSlots>()({\n name: 'VBanner',\n\n props: makeVBannerProps(),\n\n setup (props, { slots }) {\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { mobile } = useDisplay()\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n const { themeClasses } = provideTheme(props)\n\n const color = toRef(props, 'color')\n const density = toRef(props, 'density')\n\n provideDefaults({ VBannerActions: { color, density } })\n\n useRender(() => {\n const hasText = !!(props.text || slots.text)\n const hasPrependMedia = !!(props.avatar || props.icon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n return (\n <props.tag\n class={[\n 'v-banner',\n {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines,\n },\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n themeClasses.value,\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n role=\"banner\"\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-banner__prepend\">\n { !slots.prepend ? (\n <VAvatar\n key=\"prepend-avatar\"\n color={ color.value }\n density={ density.value }\n icon={ props.icon }\n image={ props.avatar }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-banner__content\">\n { hasText && (\n <VBannerText key=\"text\">\n { slots.text?.() ?? props.text }\n </VBannerText>\n )}\n\n { slots.default?.() }\n </div>\n\n { slots.actions && (\n <VBannerActions key=\"actions\" v-slots:default={ slots.actions } />\n )}\n </props.tag>\n )\n })\n },\n})\n\nexport type VBanner = InstanceType<typeof VBanner>\n","// Styles\nimport './VBottomNavigation.sass'\n\n// Components\nimport { VBtnToggleSymbol } from '@/components/VBtnToggle/VBtnToggle'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBottomNavigationProps = propsFactory({\n bgColor: String,\n color: String,\n grow: Boolean,\n mode: {\n type: String,\n validator: (v: any) => !v || ['horizontal', 'shift'].includes(v),\n },\n height: {\n type: [Number, String],\n default: 56,\n },\n active: {\n type: Boolean,\n default: true,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeLayoutItemProps({ name: 'bottom-navigation' }),\n ...makeTagProps({ tag: 'header' }),\n ...makeGroupProps({\n modelValue: true,\n selectedClass: 'v-btn--selected',\n }),\n ...makeThemeProps(),\n}, 'VBottomNavigation')\n\nexport const VBottomNavigation = genericComponent()({\n name: 'VBottomNavigation',\n\n props: makeVBottomNavigationProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = useTheme()\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { ssrBootStyles } = useSsrBoot()\n const height = computed(() => (\n Number(props.height) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ))\n const isActive = toRef(props, 'active')\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: computed(() => isActive.value ? height.value : 0),\n elementSize: height,\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useGroup(props, VBtnToggleSymbol)\n\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n stacked: computed(() => props.mode !== 'horizontal'),\n variant: 'text',\n },\n }, { scoped: true })\n\n useRender(() => {\n return (\n <props.tag\n class={[\n 'v-bottom-navigation',\n {\n 'v-bottom-navigation--active': isActive.value,\n 'v-bottom-navigation--grow': props.grow,\n 'v-bottom-navigation--shift': props.mode === 'shift',\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n {\n height: convertToUnit(height.value),\n transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`,\n },\n ssrBootStyles.value,\n props.style,\n ]}\n >\n { slots.default && (\n <div class=\"v-bottom-navigation__content\">\n { slots.default() }\n </div>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBottomNavigation = InstanceType<typeof VBottomNavigation>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBreadcrumbsDividerProps = propsFactory({\n divider: [Number, String],\n\n ...makeComponentProps(),\n}, 'VBreadcrumbsDivider')\n\nexport const VBreadcrumbsDivider = genericComponent()({\n name: 'VBreadcrumbsDivider',\n\n props: makeVBreadcrumbsDividerProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <li\n class={[\n 'v-breadcrumbs-divider',\n props.class,\n ]}\n style={ props.style }\n >\n { slots?.default?.() ?? props.divider }\n </li>\n ))\n\n return {}\n },\n})\n\nexport type VBreadcrumbsDivider = InstanceType<typeof VBreadcrumbsDivider>\n","// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBreadcrumbsItemProps = propsFactory({\n active: Boolean,\n activeClass: String,\n activeColor: String,\n color: String,\n disabled: Boolean,\n title: String,\n\n ...makeComponentProps(),\n ...makeRouterProps(),\n ...makeTagProps({ tag: 'li' }),\n}, 'VBreadcrumbsItem')\n\nexport const VBreadcrumbsItem = genericComponent()({\n name: 'VBreadcrumbsItem',\n\n props: makeVBreadcrumbsItemProps(),\n\n setup (props, { slots, attrs }) {\n const link = useLink(props, attrs)\n const isActive = computed(() => props.active || link.isActive?.value)\n const color = computed(() => isActive.value ? props.activeColor : props.color)\n\n const { textColorClasses, textColorStyles } = useTextColor(color)\n\n useRender(() => {\n return (\n <props.tag\n class={[\n 'v-breadcrumbs-item',\n {\n 'v-breadcrumbs-item--active': isActive.value,\n 'v-breadcrumbs-item--disabled': props.disabled,\n [`${props.activeClass}`]: isActive.value && props.activeClass,\n },\n textColorClasses.value,\n props.class,\n ]}\n style={[\n textColorStyles.value,\n props.style,\n ]}\n aria-current={ isActive.value ? 'page' : undefined }\n >\n { !link.isLink.value ? slots.default?.() ?? props.title : (\n <a\n class=\"v-breadcrumbs-item--link\"\n href={ link.href.value }\n aria-current={ isActive.value ? 'page' : undefined }\n onClick={ link.navigate }\n >\n { slots.default?.() ?? props.title }\n </a>\n )}\n </props.tag>\n )\n })\n return {}\n },\n})\n\nexport type VBreadcrumbsItem = InstanceType<typeof VBreadcrumbsItem>\n","// Styles\nimport './VBreadcrumbs.sass'\n\n// Components\nimport { VBreadcrumbsDivider } from './VBreadcrumbsDivider'\nimport { VBreadcrumbsItem } from './VBreadcrumbsItem'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { LinkProps } from '@/composables/router'\nimport type { GenericProps } from '@/util'\n\nexport type BreadcrumbItem = string | (Partial<LinkProps> & {\n title: string\n disabled?: boolean\n})\n\nexport const makeVBreadcrumbsProps = propsFactory({\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/',\n },\n icon: IconValue,\n items: {\n type: Array as PropType<readonly BreadcrumbItem[]>,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'ul' }),\n}, 'VBreadcrumbs')\n\nexport const VBreadcrumbs = genericComponent<new <T extends BreadcrumbItem>(\n props: {\n items?: T[]\n },\n slots: {\n prepend: never\n title: { item: T, index: number }\n divider: { item: T, index: number }\n default: never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VBreadcrumbs',\n\n props: makeVBreadcrumbsProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider'),\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n },\n })\n\n const items = computed(() => props.items.map(item => {\n return typeof item === 'string' ? { item: { title: item }, raw: item } : { item, raw: item }\n }))\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon)\n\n return (\n <props.tag\n class={[\n 'v-breadcrumbs',\n backgroundColorClasses.value,\n densityClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n >\n { hasPrepend && (\n <li key=\"prepend\" class=\"v-breadcrumbs__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n start\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !props.icon }\n defaults={{\n VIcon: {\n icon: props.icon,\n start: true,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </li>\n )}\n\n { items.value.map(({ item, raw }, index, array) => (\n <>\n <VBreadcrumbsItem\n key={ item.title }\n disabled={ index >= array.length - 1 }\n { ...item }\n v-slots={{\n default: slots.title ? () => slots.title?.({ item: raw, index }) : undefined,\n }}\n />\n\n { index < array.length - 1 && (\n <VBreadcrumbsDivider\n v-slots={{\n default: slots.divider ? () => slots.divider?.({ item: raw, index }) : undefined,\n }}\n />\n )}\n </>\n ))}\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBreadcrumbs = InstanceType<typeof VBreadcrumbs>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\nexport const VCardActions = genericComponent()({\n name: 'VCardActions',\n\n props: makeComponentProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-card-actions',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VCardActions = InstanceType<typeof VCardActions>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCardSubtitle = createSimpleFunctional('v-card-subtitle')\n\nexport type VCardSubtitle = InstanceType<typeof VCardSubtitle>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCardTitle = createSimpleFunctional('v-card-title')\n\nexport type VCardTitle = InstanceType<typeof VCardTitle>\n","// Components\nimport { VCardSubtitle } from './VCardSubtitle'\nimport { VCardTitle } from './VCardTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VCardItemSlots = {\n default: never\n prepend: never\n append: never\n title: never\n subtitle: never\n}\n\nexport const makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: String,\n title: String,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n}, 'VCardItem')\n\nexport const VCardItem = genericComponent<VCardItemSlots>()({\n name: 'VCardItem',\n\n props: makeCardItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasTitle = !!(props.title || slots.title)\n const hasSubtitle = !!(props.subtitle || slots.subtitle)\n\n return (\n <div\n class={[\n 'v-card-item',\n props.class,\n ]}\n style={ props.style }\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-card-item__prepend\">\n { !slots.prepend ? (\n hasPrependMedia && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n icon={ props.prependIcon }\n image={ props.prependAvatar }\n />\n )\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n icon: props.prependIcon,\n image: props.prependAvatar,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-card-item__content\">\n { hasTitle && (\n <VCardTitle key=\"title\">\n { slots.title?.() ?? props.title }\n </VCardTitle>\n )}\n\n { hasSubtitle && (\n <VCardSubtitle key=\"subtitle\">\n { slots.subtitle?.() ?? props.subtitle }\n </VCardSubtitle>\n )}\n\n { slots.default?.() }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-card-item__append\">\n { !slots.append ? (\n hasAppendMedia && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n icon={ props.appendIcon }\n image={ props.appendAvatar }\n />\n )\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n icon: props.appendIcon,\n image: props.appendAvatar,\n },\n }}\n v-slots:default={ slots.append }\n />\n )}\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VCardItem = InstanceType<typeof VCardItem>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCardText = createSimpleFunctional('v-card-text')\n\nexport type VCardText = InstanceType<typeof VCardText>\n","/* eslint-disable complexity */\n\n// Styles\nimport './VCard.sass'\n\n// Components\nimport { VCardActions } from './VCardActions'\nimport { VCardItem } from './VCardItem'\nimport { VCardText } from './VCardText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardItemSlots } from './VCardItem'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined,\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: String,\n text: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VCard')\n\nexport type VCardSlots = VCardItemSlots & {\n default: never\n actions: never\n text: never\n loader: LoaderSlotProps\n image: never\n item: never\n}\n\nexport const VCard = genericComponent<VCardSlots>()({\n name: 'VCard',\n\n directives: { Ripple },\n\n props: makeVCardProps(),\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const link = useLink(props, attrs)\n\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value)\n )\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = !!(slots.title || props.title)\n const hasSubtitle = !!(slots.subtitle || props.subtitle)\n const hasHeader = hasTitle || hasSubtitle\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n const hasImage = !!(slots.image || props.image)\n const hasCardItem = hasHeader || hasPrepend || hasAppend\n const hasText = !!(slots.text || props.text)\n\n return (\n <Tag\n class={[\n 'v-card',\n {\n 'v-card--disabled': props.disabled,\n 'v-card--flat': props.flat,\n 'v-card--hover': props.hover && !(props.disabled || props.flat),\n 'v-card--link': isClickable.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n loaderClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n onClick={ isClickable.value && link.navigate }\n v-ripple={ isClickable.value && props.ripple }\n tabindex={ props.disabled ? -1 : undefined }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-card__image\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n cover\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n <LoaderSlot\n name=\"v-card\"\n active={ !!props.loading }\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n v-slots={{ default: slots.loader }}\n />\n\n { hasCardItem && (\n <VCardItem\n key=\"item\"\n prependAvatar={ props.prependAvatar }\n prependIcon={ props.prependIcon }\n title={ props.title }\n subtitle={ props.subtitle }\n appendAvatar={ props.appendAvatar }\n appendIcon={ props.appendIcon }\n >\n {{\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append,\n }}\n </VCardItem>\n )}\n\n { hasText && (\n <VCardText key=\"text\">\n { slots.text?.() ?? props.text }\n </VCardText>\n )}\n\n { slots.default?.() }\n\n { slots.actions && (\n <VCardActions v-slots={{ default: slots.actions }} />\n )}\n\n { genOverlays(isClickable.value, 'v-card') }\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VCard = InstanceType<typeof VCard>\n","// Utilities\nimport { keys } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nexport interface TouchHandlers {\n start?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n end?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n move?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n left?: (wrapper: TouchData) => void\n right?: (wrapper: TouchData) => void\n up?: (wrapper: TouchData) => void\n down?: (wrapper: TouchData) => void\n}\n\nexport interface TouchData {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n touchendX: number\n touchendY: number\n offsetX: number\n offsetY: number\n}\n\nexport type TouchWrapper = TouchHandlers & TouchData\n\nexport interface TouchValue extends TouchHandlers {\n parent?: boolean\n options?: AddEventListenerOptions\n}\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\nexport interface TouchDirectiveBinding extends Omit<DirectiveBinding, 'value'> {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start?.({ originalEvent: event, ...wrapper })\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end?.({ originalEvent: event, ...wrapper })\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move?.({ originalEvent: event, ...wrapper })\n}\n\nfunction createHandlers (value: TouchHandlers = {}): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction mounted (el: HTMLElement, binding: TouchDirectiveBinding) {\n const value = binding.value\n const target = value?.parent ? el.parentElement : el\n const options = value?.options ?? { passive: true }\n const uid = binding.instance?.$.uid // TODO: use custom uid generator\n\n if (!target || !uid) return\n\n const handlers = createHandlers(binding.value)\n\n target._touchHandlers = target._touchHandlers ?? Object.create(null)\n target._touchHandlers![uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options)\n })\n}\n\nfunction unmounted (el: HTMLElement, binding: TouchDirectiveBinding) {\n const target = binding.value?.parent ? el.parentElement : el\n const uid = binding.instance?.$.uid\n\n if (!target?._touchHandlers || !uid) return\n\n const handlers = target._touchHandlers[uid]\n\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n\n delete target._touchHandlers[uid]\n}\n\nexport const Touch = {\n mounted,\n unmounted,\n}\n\nexport default Touch\n","// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport { Touch } from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef<undefined | string>\n transitionCount: Ref<number>\n transitionHeight: Ref<undefined | string>\n isReversed: Ref<boolean>\n rootRef: Ref<HTMLElement | undefined>\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n ariaLabel: string\n}\n\nexport const VWindowSymbol: InjectionKey<WindowProvide> = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n touch: {\n type: [Object, Boolean] as PropType<boolean | TouchHandlers>,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force' as const,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent<VWindowSlots>()({\n name: 'VWindow',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (v: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref<undefined | string>(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n ariaLabel: t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : <VBtn { ...prevProps } />\n : <div />\n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n ariaLabel: t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : <VBtn { ...nextProps } />\n : <div />\n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n <props.tag\n ref={ rootRef }\n class={[\n 'v-window',\n {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n },\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-touch={ touchOptions.value }\n >\n <div\n class=\"v-window__container\"\n style={{\n height: transitionHeight.value,\n }}\n >\n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n <div class=\"v-window__controls\">\n { arrows.value }\n </div>\n )}\n </div>\n\n { slots.additional?.({ group }) }\n </props.tag>\n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType<typeof VWindow>\n","// Styles\nimport './VCarousel.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VProgressLinear } from '@/components/VProgressLinear'\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, ref, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VWindowSlots } from '@/components/VWindow/VWindow'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => Number(value) > 0,\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String] as PropType<boolean | 'left' | 'right'>,\n\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force' as const,\n showArrows: true,\n }),\n}, 'VCarousel')\n\ntype VCarouselSlots = VWindowSlots & {\n item: {\n props: Record<string, any>\n item: {\n id: number\n value: unknown\n disabled: boolean | undefined\n }\n }\n}\n\nexport const VCarousel = genericComponent<VCarouselSlots>()({\n name: 'VCarousel',\n\n props: makeVCarouselProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n const windowRef = ref<typeof VWindow>()\n\n let slideTimeout = -1\n watch(model, restartTimeout)\n watch(() => props.interval, restartTimeout)\n watch(() => props.cycle, val => {\n if (val) restartTimeout()\n else window.clearTimeout(slideTimeout)\n })\n\n onMounted(startTimeout)\n\n function startTimeout () {\n if (!props.cycle || !windowRef.value) return\n\n slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000)\n }\n\n function restartTimeout () {\n window.clearTimeout(slideTimeout)\n window.requestAnimationFrame(startTimeout)\n }\n\n useRender(() => {\n const [windowProps] = VWindow.filterProps(props)\n\n return (\n <VWindow\n ref={ windowRef }\n { ...windowProps }\n v-model={ model.value }\n class={[\n 'v-carousel',\n {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters,\n },\n props.class,\n ]}\n style={[\n { height: convertToUnit(props.height) },\n props.style,\n ]}\n >\n {{\n default: slots.default,\n additional: ({ group }: { group: GroupProvide }) => (\n <>\n { !props.hideDelimiters && (\n <div\n class=\"v-carousel__controls\"\n style={{\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto',\n }}\n >\n { group.items.value.length > 0 && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n scoped\n >\n { group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: [group.isSelected(item.id) && 'v-btn--active'],\n onClick: () => group.select(item.id, true),\n }\n\n return slots.item\n ? slots.item({ props, item })\n : (<VBtn { ...item } { ...props } />)\n })}\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { props.progress && (\n <VProgressLinear\n class=\"v-carousel__progress\"\n color={ typeof props.progress === 'string' ? props.progress : undefined }\n modelValue={ (group.getItemIndex(model.value) + 1) / group.items.value.length * 100 }\n />\n )}\n </>\n ),\n prev: slots.prev,\n next: slots.next,\n }}\n </VWindow>\n )\n })\n\n return {}\n },\n})\n\nexport type VCarousel = InstanceType<typeof VCarousel>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport Touch from '@/directives/touch'\n\n// Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VWindowGroupSymbol, VWindowSymbol } from './VWindow'\n\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n}, 'VWindowItem')\n\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const window = inject(VWindowSymbol)\n const groupItem = useGroupItem(props, VWindowGroupSymbol)\n const { isBooted } = useSsrBoot()\n\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow')\n\n const isTransitioning = shallowRef(false)\n const hasTransition = computed(() => isBooted.value && (\n window.isReversed.value\n ? props.reverseTransition !== false\n : props.transition !== false\n ))\n\n function onAfterTransition () {\n if (!isTransitioning.value || !window) {\n return\n }\n\n // Finalize transition state.\n isTransitioning.value = false\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined\n }\n }\n }\n\n function onBeforeTransition () {\n if (isTransitioning.value || !window) {\n return\n }\n\n // Initialize transition state here.\n isTransitioning.value = true\n\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight)\n }\n\n window.transitionCount.value += 1\n }\n\n function onTransitionCancelled () {\n onAfterTransition() // This should have the same path as normal transition end.\n }\n\n function onEnterTransition (el: Element) {\n if (!isTransitioning.value) {\n return\n }\n\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight)\n })\n }\n\n const transition = computed(() => {\n const name = window.isReversed.value\n ? props.reverseTransition\n : props.transition\n\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition,\n }\n })\n\n const { hasContent } = useLazy(props, groupItem.isSelected)\n\n useRender(() => (\n <MaybeTransition transition={ transition.value } disabled={ !isBooted.value }>\n <div\n class={[\n 'v-window-item',\n groupItem.selectedClass.value,\n props.class,\n ]}\n style={ props.style }\n v-show={ groupItem.isSelected.value }\n >\n { hasContent.value && slots.default?.() }\n </div>\n </MaybeTransition>\n ))\n\n return { groupItem }\n },\n})\n\nexport type VWindowItem = InstanceType<typeof VWindowItem>\n","// Components\nimport { makeVImgProps, VImg } from '@/components/VImg/VImg'\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VImgSlots } from '@/components/VImg/VImg'\n\nexport const makeVCarouselItemProps = propsFactory({\n ...makeVImgProps(),\n ...makeVWindowItemProps(),\n}, 'VCarouselItem')\n\nexport const VCarouselItem = genericComponent<VImgSlots>()({\n name: 'VCarouselItem',\n\n inheritAttrs: false,\n\n props: makeVCarouselItemProps(),\n\n setup (props, { slots, attrs }) {\n useRender(() => {\n const [imgProps] = VImg.filterProps(props)\n const [windowItemProps] = VWindowItem.filterProps(props)\n\n return (\n <VWindowItem\n class=\"v-carousel-item\"\n { ...windowItemProps }\n >\n <VImg\n { ...attrs }\n { ...imgProps }\n v-slots={ slots }\n />\n </VWindowItem>\n )\n })\n },\n})\n\nexport type VCarouselItem = InstanceType<typeof VCarouselItem>\n","// Styles\nimport './VCode.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCode = createSimpleFunctional('v-code')\n\nexport type VCode = InstanceType<typeof VCode>\n","// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue'\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerCanvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = shallowRef(false)\n const isOutsideUpdate = shallowRef(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.value?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n isOutsideUpdate.value = true\n\n dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class={[\n 'v-color-picker-canvas',\n props.class,\n ]}\n style={ props.style }\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n","// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n RGBtoHSV,\n} from '@/util/colorUtils'\nimport { has } from '@/util/helpers'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSV, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1)\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 1, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record<string, unknown>\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSV\n to: (color: HSV) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.r),\n getColor: (c: RGB, v: string): RGB => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.g),\n getColor: (c: RGB, v: string): RGB => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.b),\n getColor: (c: RGB, v: string): RGB => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoRGB,\n from: RGBtoHSV,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSL) => Math.round(c.h),\n getColor: (c: HSL, v: string): HSL => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.s * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.l * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoHSL,\n from: HSLtoHSV,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVtoHex,\n from: HexToHSV,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n} satisfies Record<string, ColorPickerMode>\n","// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { computed } from 'vue'\nimport { modes, nullColor } from './util'\nimport { defineComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util/colorUtils'\n\nconst VColorPickerInput = ({ label, ...rest }: any) => {\n return (\n <div\n class=\"v-color-picker-edit__input\"\n >\n <input { ...rest } />\n <span>{ label }</span>\n </div>\n )\n}\n\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object as PropType<HSV | null>,\n disabled: Boolean,\n mode: {\n type: String as PropType<keyof typeof modes>,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<readonly (keyof typeof modes)[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerEdit')\n\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n\n props: makeVColorPickerEditProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:mode': (mode: keyof typeof modes) => true,\n },\n\n setup (props, { emit }) {\n const enabledModes = computed(() => {\n return props.modes.map(key => ({ ...modes[key], name: key }))\n })\n\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode)\n\n if (!mode) return []\n\n const color = props.color ? mode.to(props.color) : null\n\n return mode.inputs?.map(({ getValue, getColor, ...inputProps }) => {\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | null\n\n if (!target) return\n\n emit('update:color', mode.from(getColor(color ?? nullColor, target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n <div\n class={[\n 'v-color-picker-edit',\n props.class,\n ]}\n style={ props.style }\n >\n { inputs.value?.map(props => (\n <VColorPickerInput { ...props } />\n ))}\n { enabledModes.value.length > 1 && (\n <VBtn\n icon=\"$unfold\"\n size=\"x-small\"\n variant=\"plain\"\n onClick={ () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode)\n\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name)\n }}\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType<typeof VColorPickerEdit>\n","/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | null | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref<boolean | null | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<readonly number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n horizontalDirection: Ref<'ltr' | 'rtl'>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<readonly number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const horizontalDirection = computed(() => {\n let hd: 'ltr' | 'rtl' = isRtl.value ? 'rtl' : 'ltr'\n\n if (props.reverse) {\n hd = hd === 'rtl' ? 'ltr' : 'rtl'\n }\n\n return hd\n })\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n const vertical = computed(() => props.direction === 'vertical')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n horizontalDirection,\n isReversed,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n","// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport Ripple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent<VSliderThumbSlots>()({\n name: 'VSliderThumb',\n\n directives: { Ripple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n thumbColor,\n step,\n vertical,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n readonly,\n elevation,\n isReversed,\n horizontalDirection,\n mousePressed,\n decimals,\n } = slider\n\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (props.max - props.min) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n value = value + (direction * _step * multipliers.value[multiplier])\n } else if (e.key === home) {\n value = props.min\n } else if (e.key === end) {\n value = props.max\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit((vertical.value || isReversed.value) ? 100 - props.position : props.position, '%')\n const { elevationClasses } = useElevation(computed(() => !disabled.value ? elevation.value : undefined))\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n props.class,\n rtlClasses.value,\n ]}\n style={[\n {\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n },\n props.style,\n ]}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-valuemin={ props.min }\n aria-valuemax={ props.max }\n aria-valuenow={ props.modelValue }\n aria-readonly={ !!readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[props.ripple, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n","// Styles\nimport './VSliderTrack.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useRounded } from '@/composables/rounded'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Tick } from './slider'\n\nexport type VSliderTrackSlots = {\n 'tick-label': { tick: Tick, index: number }\n}\n\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true,\n },\n stop: {\n type: Number,\n required: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderTrack')\n\nexport const VSliderTrack = genericComponent<VSliderTrackSlots>()({\n name: 'VSliderTrack',\n\n props: makeVSliderTrackProps(),\n\n emits: {},\n\n setup (props, { slots }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider')\n\n const {\n color,\n horizontalDirection,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n } = slider\n\n const { roundedClasses } = useRounded(rounded)\n\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles,\n } = useBackgroundColor(trackFillColor)\n\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles,\n } = useBackgroundColor(trackColor)\n\n const startDir = computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`)\n const endDir = computed(() => vertical.value ? 'height' : 'width')\n\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%',\n }\n })\n\n const trackFillWidth = computed(() => props.stop - props.start)\n\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%'),\n }\n })\n\n const computedTicks = computed(() => {\n if (!showTicks.value) return []\n\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value\n\n return ticks.map((tick, index) => {\n const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start'\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n <div\n key={ tick.value }\n class={[\n 'v-slider-track__tick',\n {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value,\n },\n ]}\n style={{ [directionProperty]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n <div class=\"v-slider-track__tick-label\">\n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n </div>\n )\n }\n </div>\n )\n })\n })\n\n useRender(() => {\n return (\n <div\n class={[\n 'v-slider-track',\n roundedClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value),\n direction: !vertical.value ? horizontalDirection.value : undefined,\n },\n props.style,\n ]}\n >\n <div\n class={[\n 'v-slider-track__background',\n trackColorClasses.value,\n {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value,\n },\n ]}\n style={{\n ...backgroundStyles.value,\n ...trackColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-track__fill',\n trackFillColorClasses.value,\n ]}\n style={{\n ...trackFillStyles.value,\n ...trackFillColorStyles.value,\n }}\n />\n\n { showTicks.value && (\n <div\n class={[\n 'v-slider-track__ticks',\n {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always',\n },\n ]}\n >\n { computedTicks.value }\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType<typeof VSliderTrack>\n","// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & {\n label: VInputSlot\n 'tick-label': never\n 'thumb-label': never\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n","// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VSlider } from '@/components/VSlider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { nullColor } from './util'\nimport { defineComponent, HSVtoCSS, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n\n ...makeComponentProps(),\n}, 'VColorPickerPreview')\n\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n\n props: makeVColorPickerPreviewProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class={[\n 'v-color-picker-preview',\n {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha,\n },\n props.class,\n ]}\n style={ props.style }\n >\n <div class=\"v-color-picker-preview__dot\">\n <div style={{ background: HSVtoCSS(props.color ?? nullColor) }} />\n </div>\n\n <div class=\"v-color-picker-preview__sliders\">\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__hue\"\n modelValue={ props.color?.h }\n onUpdate:modelValue={ h => emit('update:color', { ...(props.color ?? nullColor), h }) }\n step={ 0 }\n min={ 0 }\n max={ 360 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n\n { !props.hideAlpha && (\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__alpha\"\n modelValue={ props.color?.a ?? 1 }\n onUpdate:modelValue={ a => emit('update:color', { ...(props.color ?? nullColor), a }) }\n step={ 1 / 256 }\n min={ 0 }\n max={ 1 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n )}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType<typeof VColorPickerPreview>\n","const red = Object.freeze({\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000',\n})\n\nconst pink = Object.freeze({\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162',\n})\n\nconst purple = Object.freeze({\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff',\n})\n\nconst deepPurple = Object.freeze({\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea',\n})\n\nconst indigo = Object.freeze({\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe',\n})\n\nconst blue = Object.freeze({\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff',\n})\n\nconst lightBlue = Object.freeze({\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea',\n})\n\nconst cyan = Object.freeze({\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4',\n})\n\nconst teal = Object.freeze({\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5',\n})\n\nconst green = Object.freeze({\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853',\n})\n\nconst lightGreen = Object.freeze({\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17',\n})\n\nconst lime = Object.freeze({\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00',\n})\n\nconst yellow = Object.freeze({\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600',\n})\n\nconst amber = Object.freeze({\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00',\n})\n\nconst orange = Object.freeze({\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00',\n})\n\nconst deepOrange = Object.freeze({\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00',\n})\n\nconst brown = Object.freeze({\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723',\n})\n\nconst blueGrey = Object.freeze({\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238',\n})\n\nconst grey = Object.freeze({\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121',\n})\n\nconst shades = Object.freeze({\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00',\n})\n\nexport default Object.freeze({\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades,\n})\n","// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport {\n convertToUnit,\n deepEqual,\n defineComponent,\n getContrast,\n parseColor,\n propsFactory,\n RGBtoCSS,\n RGBtoHSV,\n useRender,\n} from '@/util'\nimport colors from '@/util/colors'\n\n// Types\nimport type { DeepReadonly, PropType } from 'vue'\nimport type { Color, HSV } from '@/util'\n\nexport const makeVColorPickerSwatchesProps = propsFactory({\n swatches: {\n type: Array as PropType<DeepReadonly<Color[][]>>,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType<HSV | null>,\n maxHeight: [Number, String],\n\n ...makeComponentProps(),\n}, 'VColorPickerSwatches')\n\nfunction parseDefaultColors (colors: Record<string, Record<string, string>>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n\n props: makeVColorPickerSwatchesProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class={[\n 'v-color-picker-swatches',\n props.class,\n ]}\n style={[\n { maxHeight: convertToUnit(props.maxHeight) },\n props.style,\n ]}\n >\n <div>\n { props.swatches.map(swatch => (\n <div class=\"v-color-picker-swatches__swatch\">\n { swatch.map(color => {\n const rgba = parseColor(color)\n const hsva = RGBtoHSV(rgba)\n const background = RGBtoCSS(rgba)\n\n return (\n <div\n class=\"v-color-picker-swatches__color\"\n onClick={ () => hsva && emit('update:color', hsva) }\n >\n <div style={{ background }}>\n { props.color && deepEqual(props.color, hsva)\n ? <VIcon size=\"x-small\" icon=\"$success\" color={ getContrast(color, '#FFFFFF') > 2 ? 'white' : 'black' } />\n : undefined\n }\n </div>\n </div>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerSwatches = InstanceType<typeof VColorPickerSwatches>\n","// Styles\nimport './VSheet.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSheetProps = propsFactory({\n color: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VSheet')\n\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n\n props: makeVSheetProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-sheet',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VSheet = InstanceType<typeof VSheet>\n","// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport { VColorPickerCanvas } from './VColorPickerCanvas'\nimport { VColorPickerEdit } from './VColorPickerEdit'\nimport { VColorPickerPreview } from './VColorPickerPreview'\nimport { VColorPickerSwatches } from './VColorPickerSwatches'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, ref } from 'vue'\nimport { extractColor, modes, nullColor } from './util'\nimport { consoleWarn, defineComponent, HSVtoCSS, omit, parseColor, propsFactory, RGBtoHSV, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly, PropType } from 'vue'\nimport type { Color, HSV } from '@/util'\n\nexport const makeVColorPickerProps = propsFactory({\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String as PropType<keyof typeof modes>,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<readonly (keyof typeof modes)[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n showSwatches: Boolean,\n swatches: Array as PropType<DeepReadonly<Color[][]>>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String] as PropType<Record<string, unknown> | string | undefined | null>,\n },\n\n ...omit(makeVSheetProps({ width: 300 }), [\n 'height',\n 'location',\n 'minHeight',\n 'maxHeight',\n 'minWidth',\n 'maxWidth',\n ]),\n}, 'VColorPicker')\n\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n\n props: makeVColorPickerProps(),\n\n emits: {\n 'update:modelValue': (color: any) => true,\n 'update:mode': (mode: keyof typeof modes) => true,\n },\n\n setup (props) {\n const mode = useProxiedModel(props, 'mode')\n const lastPickedColor = ref<HSV | null>(null)\n const currentColor = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => {\n if (v == null || v === '') return null\n\n let c: HSV\n try {\n c = RGBtoHSV(parseColor(v as any))\n } catch (err) {\n consoleWarn(err as any)\n return null\n }\n\n if (lastPickedColor.value) {\n c = { ...c, h: lastPickedColor.value.h }\n lastPickedColor.value = null\n }\n\n return c\n },\n v => {\n if (!v) return null\n\n return extractColor(v, props.modelValue)\n }\n )\n const { rtlClasses } = useRtl()\n\n const updateColor = (hsva: HSV) => {\n currentColor.value = hsva\n lastPickedColor.value = hsva\n }\n\n onMounted(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0]\n })\n\n provideDefaults({\n VSlider: {\n color: undefined,\n trackColor: undefined,\n trackFillColor: undefined,\n },\n })\n\n useRender(() => {\n const [sheetProps] = VSheet.filterProps(props)\n\n return (\n <VSheet\n rounded={ props.rounded }\n elevation={ props.elevation }\n theme={ props.theme }\n class={[\n 'v-color-picker',\n rtlClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-color-picker-color-hsv': HSVtoCSS({ ...(currentColor.value ?? nullColor), a: 1 }),\n },\n props.style,\n ]}\n { ...sheetProps }\n maxWidth={ props.width }\n >\n { !props.hideCanvas && (\n <VColorPickerCanvas\n key=\"canvas\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n dotSize={ props.dotSize }\n width={ props.width }\n height={ props.canvasHeight }\n />\n )}\n\n { (!props.hideSliders || !props.hideInputs) && (\n <div key=\"controls\" class=\"v-color-picker__controls\">\n { !props.hideSliders && (\n <VColorPickerPreview\n key=\"preview\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n hideAlpha={ !mode.value.endsWith('a') }\n disabled={ props.disabled }\n />\n )}\n\n { !props.hideInputs && (\n <VColorPickerEdit\n key=\"edit\"\n modes={ props.modes }\n mode={ mode.value }\n onUpdate:mode={ m => mode.value = m }\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n />\n )}\n </div>\n )}\n\n { props.showSwatches && (\n <VColorPickerSwatches\n key=\"swatches\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n maxHeight={ props.swatchesMaxHeight }\n swatches={ props.swatches }\n disabled={ props.disabled }\n />\n )}\n </VSheet>\n )\n })\n\n return {}\n },\n})\n\nexport type VColorPicker = InstanceType<typeof VColorPicker>\n","// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VTextField } from '@/components/VTextField'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from '../VSelect/useScrolling'\nimport { useTextColor } from '@/composables/color'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { transformItem, useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, getPropertyFromItem, noop, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = string | ([T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any))\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject> | null\n\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType<boolean | 'exact'>,\n },\n delimiters: Array as PropType<readonly string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VCombobox')\n\nexport const VCombobox = genericComponent<new <\n T extends readonly any[],\n Item = T extends readonly (infer U)[] ? U : never,\n ReturnObject extends boolean = true,\n Multiple extends boolean = false,\n V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>\n>(\n props: {\n items?: T\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (val: V) => void\n },\n slots: Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n chip: { item: ListItem<Item>, index: number, props: Record<string, unknown> }\n selection: { item: ListItem<Item>, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VCombobox',\n\n props: makeVComboboxProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n 'update:search': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = shallowRef(false)\n const isPristine = shallowRef(true)\n const listHasFocus = shallowRef(false)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n let cleared = false\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const _search = shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '')\n const search = computed<string>({\n get: () => {\n return _search.value\n },\n set: val => {\n _search.value = val\n if (!props.multiple) {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => (cleared = false))\n } else if (isFocused.value && !menu.value) {\n menu.value = true\n }\n\n emit('update:search', value)\n })\n watch(model, value => {\n if (!props.multiple) {\n _search.value = value[0]?.title ?? ''\n }\n })\n\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => {\n const itemRawValue = getPropertyFromItem(item.raw, props.itemValue)\n const modelRawValue = getPropertyFromItem(v.raw, props.itemValue)\n\n if (itemRawValue === undefined || modelRawValue === undefined) return false\n\n return props.returnObject\n ? props.valueComparator(itemRawValue, modelRawValue)\n : props.valueComparator(item.value, v.value)\n }) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true ||\n (props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title)\n return selectFirst &&\n displayItems.value.length > 0 &&\n !isPristine.value &&\n !listHasFocus.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref<VList>()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n cleared = true\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = true\n }\n function onMousedownMenuIcon (e: MouseEvent) {\n if (menuDisabled.value) return\n\n if (isFocused.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {\n select(filteredItems.value[0])\n }\n\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n const originalSelectionIndex = selectionIndex.value\n\n if (selection.value) select(selection.value)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value))\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n function select (item: ListItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n\n search.value = ''\n } else {\n model.value = [item]\n _search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n setTimeout(() => {\n listHasFocus.value = true\n })\n }\n function onFocusout (e: FocusEvent) {\n listHasFocus.value = false\n }\n function onUpdateModelValue (v: any) {\n if (v == null || (v === '' && !props.multiple)) model.value = []\n }\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return\n\n selectionIndex.value = -1\n menu.value = false\n\n if (\n highlightFirst.value &&\n !listHasFocus.value &&\n !selections.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\n select(displayItems.value[0])\n } else if (props.multiple && search.value) {\n model.value = [...model.value, transformItem(props, search.value)]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ search.value }\n onUpdate:modelValue={ onUpdateModelValue }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selection-slot': !!slots.selection,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n props.class,\n ]}\n style={ props.style }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-combobox__content\"\n disabled={ menuDisabled.value }\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n color={ props.itemColor ?? props.color }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n <VVirtualScroll renderless items={ displayItems.value }>\n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: (highlightFirst.value && index === 0) ? true : undefined,\n onClick: () => select(item),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n <VListItem { ...itemProps }>\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n key={ item.value }\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )\n }}\n </VVirtualScroll>\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-combobox__selection',\n index === selectionIndex.value && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-combobox__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { (!props.hideNoData || props.items.length) && props.menuIcon ? (\n <VIcon\n class=\"v-combobox__menu-icon\"\n icon={ props.menuIcon }\n onMousedown={ onMousedownMenuIcon }\n onClick={ noop }\n />\n ) : undefined }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition as Component },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n watch(isActive, async val => {\n await nextTick()\n if (val) {\n overlay.value!.contentEl?.focus({ preventScroll: true })\n } else {\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'dialog',\n 'aria-expanded': String(isActive.value),\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps.value }\n role=\"dialog\"\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const makeVExpansionPanelsProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n },\n VExpansionPanelTitle: {\n readonly: toRef(props, 'readonly'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n themeClasses.value,\n variantClass.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VExpandTransition } from '@/components/transitions'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\n\n// Utilities\nimport { inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelTextProps = propsFactory({\n ...makeComponentProps(),\n ...makeLazyProps(),\n}, 'VExpansionPanelText')\n\nexport const VExpansionPanelText = genericComponent()({\n name: 'VExpansionPanelText',\n\n props: makeVExpansionPanelTextProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel')\n\n const { hasContent, onAfterLeave } = useLazy(props, expansionPanel.isSelected)\n\n useRender(() => (\n <VExpandTransition onAfterLeave={ onAfterLeave }>\n <div\n class={[\n 'v-expansion-panel-text',\n props.class,\n ]}\n style={ props.style }\n v-show={ expansionPanel.isSelected.value }\n >\n { slots.default && hasContent.value && (\n <div class=\"v-expansion-panel-text__wrapper\">\n { slots.default?.() }\n </div>\n )}\n </div>\n </VExpandTransition>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelText = InstanceType<typeof VExpansionPanelText>\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n },\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <span class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <span class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </span>\n )}\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VExpansionPanelText } from './VExpansionPanelText'\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeLazyProps } from '@/composables/lazy'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n}, 'VExpansionPanel')\n\nexport type VExpansionPanelSlots = {\n default: never\n title: never\n text: never\n}\n\nexport const VExpansionPanel = genericComponent<VExpansionPanelSlots>()({\n name: 'VExpansionPanel',\n\n props: makeVExpansionPanelProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const selectedIndices = computed(() => groupItem.group.items.value.reduce<number[]>((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n return arr\n }, []))\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n provideDefaults({\n VExpansionPanelText: {\n eager: toRef(props, 'eager'),\n },\n })\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n return (\n <props.tag\n class={[\n 'v-expansion-panel',\n {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value,\n },\n roundedClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n >\n <div\n class={[\n 'v-expansion-panel__shadow',\n ...elevationClasses.value,\n ]}\n />\n\n { hasTitle && (\n <VExpansionPanelTitle\n key=\"title\"\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n expandIcon={ props.expandIcon }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n )}\n\n { hasText && (\n <VExpansionPanelText key=\"text\">\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n )}\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n","// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n {\n 'v-text-field--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n","// Styles\nimport './VFooter.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFooterProps = propsFactory({\n app: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'footer' }),\n ...makeThemeProps(),\n}, 'VFooter')\n\nexport const VFooter = genericComponent()({\n name: 'VFooter',\n\n props: makeVFooterProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const autoHeight = shallowRef(32)\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n autoHeight.value = entries[0].target.clientHeight\n })\n const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10))\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: height,\n elementSize: computed(() => props.height === 'auto' ? undefined : height.value),\n active: computed(() => props.app),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-footer',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.app ? layoutItemStyles.value : {\n height: convertToUnit(props.height),\n },\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VFooter = InstanceType<typeof VFooter>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createForm, makeFormProps } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { SubmitEventPromise } from '@/composables/form'\n\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps(),\n}, 'VForm')\n\ntype VFormSlots = {\n default: ReturnType<typeof createForm>\n}\n\nexport const VForm = genericComponent<VFormSlots>()({\n name: 'VForm',\n\n props: makeVFormProps(),\n\n emits: {\n 'update:modelValue': (val: boolean | null) => true,\n submit: (e: SubmitEventPromise) => true,\n },\n\n setup (props, { slots, emit }) {\n const form = createForm(props)\n const formRef = ref<HTMLFormElement>()\n\n function onReset (e: Event) {\n e.preventDefault()\n form.reset()\n }\n\n function onSubmit (_e: Event) {\n const e = _e as SubmitEventPromise\n\n const ready = form.validate()\n e.then = ready.then.bind(ready)\n e.catch = ready.catch.bind(ready)\n e.finally = ready.finally.bind(ready)\n\n emit('submit', e)\n\n if (!e.defaultPrevented) {\n ready.then(({ valid }) => {\n if (valid) {\n formRef.value?.submit()\n }\n })\n }\n\n e.preventDefault()\n }\n\n useRender(() => ((\n <form\n ref={ formRef }\n class={[\n 'v-form',\n props.class,\n ]}\n style={ props.style }\n novalidate\n onReset={ onReset }\n onSubmit={ onSubmit }\n >\n { slots.default?.(form) }\n </form>\n )))\n\n return forwardRefs(form, formRef)\n },\n})\n\nexport type VForm = InstanceType<typeof VForm>\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVContainerProps = propsFactory({\n fluid: {\n type: Boolean,\n default: false,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VContainer')\n\nexport const VContainer = genericComponent()({\n name: 'VContainer',\n\n props: makeVContainerProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n <props.tag\n class={[\n 'v-container',\n { 'v-container--fluid': props.fluid },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VContainer = InstanceType<typeof VContainer>\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { breakpoints } from '@/composables/display'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\nimport type { Breakpoint } from '@/composables/display'\n\ntype BreakpointOffset = `offset${Capitalize<Breakpoint>}`\ntype BreakpointOrder = `order${Capitalize<Breakpoint>}`\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Record<Breakpoint, Prop<boolean | string | number, false>>)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n const offsetKey = ('offset' + capitalize(val)) as BreakpointOffset\n props[offsetKey] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record<BreakpointOffset, Prop<string | number, null>>)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n const orderKey = ('order' + capitalize(val)) as BreakpointOrder\n props[orderKey] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record<BreakpointOrder, Prop<string | number, null>>)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className: string = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n if (type === 'col') {\n className = 'v-' + className\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert <v-col sm></v-col> to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .v-col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch'] as const\n\nexport const makeVColProps = propsFactory({\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String as PropType<typeof ALIGN_SELF_VALUES[number]>,\n default: null,\n validator: (str: any) => ALIGN_SELF_VALUES.includes(str),\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCol')\n\nexport const VCol = genericComponent()({\n name: 'VCol',\n\n props: makeVColProps(),\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('v-col-'))\n\n classList.push({\n // Default to .v-col if no other col-{bp}-* classes generated nor `cols` specified.\n 'v-col': !hasColClasses || !props.cols,\n [`v-col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: [\n classes.value,\n props.class,\n ],\n style: props.style,\n }, slots.default?.())\n },\n})\n\nexport type VCol = InstanceType<typeof VCol>\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { breakpoints } from '@/composables/display'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\nimport type { Breakpoint } from '@/composables/display'\n\nconst ALIGNMENT = ['start', 'end', 'center'] as const\n\ntype BreakpointAlign = `align${Capitalize<Breakpoint>}`\ntype BreakpointJustify = `justify${Capitalize<Breakpoint>}`\ntype BreakpointAlignContent = `alignContent${Capitalize<Breakpoint>}`\n\nconst SPACE = ['space-between', 'space-around', 'space-evenly'] as const\n\nfunction makeRowProps <\n Name extends BreakpointAlign | BreakpointJustify | BreakpointAlignContent,\n Type,\n> (prefix: string, def: () => Prop<Type, null>) {\n return breakpoints.reduce((props, val) => {\n const prefixKey = prefix + capitalize(val) as Name\n props[prefixKey] = def()\n return props\n }, {} as Record<Name, Prop<Type, null>>)\n}\n\nconst ALIGN_VALUES = [...ALIGNMENT, 'baseline', 'stretch'] as const\ntype AlignValue = typeof ALIGN_VALUES[number]\nconst alignValidator = (str: any) => ALIGN_VALUES.includes(str)\nconst alignProps = makeRowProps<BreakpointAlign, AlignValue>('align', () => ({\n type: String as PropType<AlignValue>,\n default: null,\n validator: alignValidator,\n}))\n\nconst JUSTIFY_VALUES = [...ALIGNMENT, ...SPACE] as const\ntype JustifyValue = typeof JUSTIFY_VALUES[number]\nconst justifyValidator = (str: any) => JUSTIFY_VALUES.includes(str)\nconst justifyProps = makeRowProps<BreakpointJustify, JustifyValue>('justify', () => ({\n type: String as PropType<JustifyValue>,\n default: null,\n validator: justifyValidator,\n}))\n\nconst ALIGN_CONTENT_VALUES = [...ALIGNMENT, ...SPACE, 'stretch'] as const\ntype AlignContentValue = typeof ALIGN_CONTENT_VALUES[number]\nconst alignContentValidator = (str: any) => ALIGN_CONTENT_VALUES.includes(str)\nconst alignContentProps = makeRowProps<BreakpointAlignContent, AlignContentValue>('alignContent', () => ({\n type: String as PropType<AlignContentValue>,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nexport const makeVRowProps = propsFactory({\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String as PropType<typeof ALIGN_VALUES[number]>,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n default: null,\n validator: alignContentValidator,\n },\n\n ...alignContentProps,\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VRow')\n\nexport const VRow = genericComponent()({\n name: 'VRow',\n\n props: makeVRowProps(),\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'v-row--no-gutters': props.noGutters,\n 'v-row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: [\n 'v-row',\n classes.value,\n props.class,\n ],\n style: props.style,\n }, slots.default?.())\n },\n})\n\nexport type VRow = InstanceType<typeof VRow>\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VSpacer = createSimpleFunctional('flex-grow-1', 'div', 'VSpacer')\n\nexport type VSpacer = InstanceType<typeof VSpacer>\n","// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\ntype VHoverSlots = {\n default: {\n isHovering: boolean | undefined\n props: Record<string, unknown>\n }\n}\n\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: undefined,\n },\n\n ...makeDelayProps(),\n}, 'VHover')\n\nexport const VHover = genericComponent<VHoverSlots>()({\n name: 'VHover',\n\n props: makeVHoverProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isHovering = useProxiedModel(props, 'modelValue')\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => !props.disabled && (isHovering.value = value))\n\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay,\n },\n })\n },\n})\n\nexport type VHover = InstanceType<typeof VHover>\n","// Styles\nimport './VItemGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\nexport const VItemGroupSymbol = Symbol.for('vuetify:v-item-group')\n\nexport const makeVItemGroupProps = propsFactory({\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-item--selected',\n }),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VItemGroup')\n\ntype VItemGroupSlots = {\n default: {\n isSelected: (id: number) => boolean\n select: (id: number, value: boolean) => void\n next: () => void\n prev: () => void\n selected: readonly number[]\n }\n}\n\nexport const VItemGroup = genericComponent<VItemGroupSlots>()({\n name: 'VItemGroup',\n\n props: makeVItemGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isSelected, select, next, prev, selected } = useGroup(props, VItemGroupSymbol)\n\n return () => (\n <props.tag\n class={[\n 'v-item-group',\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n </props.tag>\n )\n },\n})\n\nexport type VItemGroup = InstanceType<typeof VItemGroup>\n","// Composables\nimport { VItemGroupSymbol } from './VItemGroup'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\n\n// Utilities\nimport { genericComponent } from '@/util'\n\ntype VItemSlots = {\n default: {\n isSelected: boolean | undefined\n selectedClass: boolean | (string | undefined)[] | undefined\n select: ((value: boolean) => void) | undefined\n toggle: (() => void) | undefined\n value: unknown\n disabled: boolean | undefined\n }\n}\n\nexport const VItem = genericComponent<VItemSlots>()({\n name: 'VItem',\n\n props: makeGroupItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const { isSelected, select, toggle, selectedClass, value, disabled } = useGroupItem(props, VItemGroupSymbol)\n return () => slots.default?.({\n isSelected: isSelected.value,\n selectedClass: selectedClass.value,\n select,\n toggle,\n value: value.value,\n disabled: disabled.value,\n })\n },\n})\n\nexport type VItem = InstanceType<typeof VItem>\n","// Styles\nimport './VKbd.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VKbd = createSimpleFunctional('v-kbd')\n\nexport type VKbd = InstanceType<typeof VKbd>\n","// Styles\nimport './VLayout.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps(),\n}, 'VLayout')\n\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n\n props: makeVLayoutProps(),\n\n setup (props, { slots }) {\n const { layoutClasses, layoutStyles, getLayoutItem, items, layoutRef } = createLayout(props)\n\n useRender(() => (\n <div\n ref={ layoutRef }\n class={[\n layoutClasses.value,\n props.class,\n ]}\n style={[\n layoutStyles.value,\n props.style,\n ]}\n >\n { slots.default?.() }\n </div>\n ))\n\n return {\n getLayoutItem,\n items,\n }\n },\n})\n\nexport type VLayout = InstanceType<typeof VLayout>\n","// Styles\nimport './VLayoutItem.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String as PropType<'top' | 'right' | 'bottom' | 'left'>,\n required: true,\n },\n size: {\n type: [Number, String],\n default: 300,\n },\n modelValue: Boolean,\n\n ...makeComponentProps(),\n ...makeLayoutItemProps(),\n}, 'VLayoutItem')\n\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n\n props: makeVLayoutItemProps(),\n\n setup (props, { slots }) {\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute'),\n })\n\n return () => (\n <div\n class={[\n 'v-layout-item',\n props.class,\n ]}\n style={[\n layoutItemStyles.value,\n props.style,\n ]}\n >\n { slots.default?.() }\n </div>\n )\n },\n})\n\nexport type VLayoutItem = InstanceType<typeof VLayoutItem>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VLazy')\n\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n\n directives: { intersect },\n\n props: makeVLazyProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n\n function onIntersect (isIntersecting: boolean) {\n if (isActive.value) return\n\n isActive.value = isIntersecting\n }\n\n useRender(() => (\n <props.tag\n class={[\n 'v-lazy',\n props.class,\n ]}\n v-intersect={[\n {\n handler: onIntersect,\n options: props.options,\n },\n null,\n isActive.value ? [] : ['once'],\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n { isActive.value && (\n <MaybeTransition transition={ props.transition } appear>\n { slots.default?.() }\n </MaybeTransition>\n )}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VLazy = InstanceType<typeof VLazy>\n","// Styles\nimport './VLocaleProvider.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLocaleProviderProps = propsFactory({\n locale: String,\n fallbackLocale: String,\n messages: Object,\n rtl: {\n type: Boolean,\n default: undefined,\n },\n\n ...makeComponentProps(),\n}, 'VLocaleProvider')\n\nexport const VLocaleProvider = genericComponent()({\n name: 'VLocaleProvider',\n\n props: makeVLocaleProviderProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = provideLocale(props)\n\n useRender(() => (\n <div\n class={[\n 'v-locale-provider',\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VLocaleProvider = InstanceType<typeof VLocaleProvider>\n","// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useLayout } from '@/composables/layout'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n\n ...makeComponentProps(),\n ...makeTagProps({ tag: 'main' }),\n}, 'VMain')\n\nexport const VMain = genericComponent()({\n name: 'VMain',\n\n props: makeVMainProps(),\n\n setup (props, { slots }) {\n const { mainStyles } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n <props.tag\n class={[\n 'v-main',\n { 'v-main--scrollable': props.scrollable },\n props.class,\n ]}\n style={[\n mainStyles.value,\n ssrBootStyles.value,\n props.style,\n ]}\n >\n { props.scrollable\n ? (\n <div class=\"v-main__scroller\">\n { slots.default?.() }\n </div>\n )\n : slots.default?.()\n }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VMain = InstanceType<typeof VMain>\n","// Utilities\nimport { CircularBuffer } from '@/util'\n\nconst HORIZON = 100 // ms\nconst HISTORY = 20 // number of samples to keep\n\nexport interface Sample {\n t: number\n d: number\n}\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity (work: number) {\n const sqrt2 = 1.41421356237\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity (samples: Sample[]) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t)\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue\n }\n const vprev = kineticEnergyToVelocity(work) // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t) // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr)\n if (i === samples.length - 1) {\n work *= 0.5\n }\n }\n return kineticEnergyToVelocity(work) * 1000\n}\n\nexport function useVelocity () {\n const touches: Record<number, CircularBuffer<[number, Touch]> | undefined> = {}\n\n function addMovement (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY))\n samples.push([e.timeStamp, touch])\n })\n }\n\n function endTouch (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier]\n })\n }\n\n function getVelocity (id: number) {\n const samples = touches[id]?.values().reverse()\n\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`)\n }\n\n const newest = samples[0]\n const x: Sample[] = []\n const y: Sample[] = []\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break\n\n x.push({ t: val[0], d: val[1].clientX })\n y.push({ t: val[0], d: val[1].clientY })\n }\n\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction () {\n const { x, y } = this\n const [absX, absY] = [Math.abs(x), Math.abs(y)]\n\n return absX > absY && x >= 0 ? 'right'\n : absX > absY && x <= 0 ? 'left'\n : absY > absX && y >= 0 ? 'down'\n : absY > absX && y <= 0 ? 'up'\n : oops()\n },\n }\n }\n\n return { addMovement, endTouch, getVelocity }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n","// Composables\nimport { useVelocity } from '@/composables/touch'\n\n// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTouch ({ isActive, isTemporary, width, touchless, position }: {\n isActive: Ref<boolean>\n isTemporary: Ref<boolean>\n width: Ref<number>\n touchless: Ref<boolean>\n position: Ref<'left' | 'right' | 'top' | 'bottom'>\n}) {\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, { passive: true })\n window.addEventListener('touchmove', onTouchmove, { passive: false })\n window.addEventListener('touchend', onTouchend, { passive: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart)\n window.removeEventListener('touchmove', onTouchmove)\n window.removeEventListener('touchend', onTouchend)\n })\n\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value))\n\n const { addMovement, endTouch, getVelocity } = useVelocity()\n let maybeDragging = false\n const isDragging = shallowRef(false)\n const dragProgress = shallowRef(0)\n const offset = shallowRef(0)\n let start: [number, number] | undefined\n\n function getOffset (pos: number, active: boolean): number {\n return (\n position.value === 'left' ? pos\n : position.value === 'right' ? document.documentElement.clientWidth - pos\n : position.value === 'top' ? pos\n : position.value === 'bottom' ? document.documentElement.clientHeight - pos\n : oops()\n ) - (active ? width.value : 0)\n }\n\n function getProgress (pos: number, limit = true): number {\n const progress = (\n position.value === 'left' ? (pos - offset.value) / width.value\n : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value\n : position.value === 'top' ? (pos - offset.value) / width.value\n : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value\n : oops()\n )\n return limit ? Math.max(0, Math.min(1, progress)) : progress\n }\n\n function onTouchstart (e: TouchEvent) {\n if (touchless.value) return\n\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n const touchZone = 25\n const inTouchZone: boolean =\n position.value === 'left' ? touchX < touchZone\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone\n : position.value === 'top' ? touchY < touchZone\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone\n : oops()\n\n const inElement: boolean = isActive.value && (\n position.value === 'left' ? touchX < width.value\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value\n : position.value === 'top' ? touchY < width.value\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value\n : oops()\n )\n\n if (\n inTouchZone ||\n inElement ||\n (isActive.value && isTemporary.value)\n ) {\n maybeDragging = true\n start = [touchX, touchY]\n\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value)\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY)\n\n endTouch(e)\n addMovement(e)\n }\n }\n\n function onTouchmove (e: TouchEvent) {\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false\n return\n }\n\n const dx = Math.abs(touchX - start![0])\n const dy = Math.abs(touchY - start![1])\n\n const thresholdMet = isHorizontal.value\n ? dx > dy && dx > 3\n : dy > dx && dy > 3\n\n if (thresholdMet) {\n isDragging.value = true\n maybeDragging = false\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false\n }\n }\n\n if (!isDragging.value) return\n\n e.preventDefault()\n addMovement(e)\n\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false)\n dragProgress.value = Math.max(0, Math.min(1, progress))\n\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true)\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false)\n }\n }\n\n function onTouchend (e: TouchEvent) {\n maybeDragging = false\n\n if (!isDragging.value) return\n\n addMovement(e)\n\n isDragging.value = false\n\n const velocity = getVelocity(e.changedTouches[0].identifier)\n const vx = Math.abs(velocity.x)\n const vy = Math.abs(velocity.y)\n const thresholdMet = isHorizontal.value\n ? vx > vy && vx > 400\n : vy > vx && vy > 3\n\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up',\n }[position.value] || oops())\n } else {\n isActive.value = dragProgress.value > 0.5\n }\n }\n\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform:\n position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))`\n : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))`\n : oops(),\n transition: 'none',\n } : undefined\n })\n\n return {\n isDragging,\n dragProgress,\n dragStyles,\n }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\nimport { useRtl } from '@/composables'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, shallowRef, toRef, Transition, watch } from 'vue'\nimport { genericComponent, propsFactory, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string | undefined\n}\n\nexport type VNavigationDrawerSlots = {\n default: never\n prepend: never\n append: never\n image: VNavigationDrawerImageSlot\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n}, 'VNavigationDrawer')\n\nexport const VNavigationDrawer = genericComponent<VNavigationDrawerSlots>()({\n name: 'VNavigationDrawer',\n\n props: makeVNavigationDrawerProps(),\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n const { scopeId } = useScopeId()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = shallowRef(false)\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n if (props.expandOnHover && props.rail != null) {\n watch(isHovering, val => emit('update:rail', !val))\n }\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n\n const { layoutItemStyles, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n function onMouseenter () {\n isHovering.value = true\n }\n function onMouseleave () {\n isHovering.value = false\n }\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n props.style,\n ]}\n { ...scopeId }\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => isActive.value = false }\n { ...scopeId }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { convertToUnit } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref } from 'vue'\n\ninterface StickyProps {\n rootEl: Ref<HTMLElement | undefined>\n isSticky: Ref<boolean>\n layoutItemStyles: Ref<CSSProperties>\n}\n\nexport function useSticky ({ rootEl, isSticky, layoutItemStyles }: StickyProps) {\n const isStuck = shallowRef<boolean | 'top' | 'bottom'>(false)\n const stuckPosition = shallowRef(0)\n\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value\n return [\n isSticky.value ? { top: 'auto', bottom: 'auto', height: undefined } : undefined,\n isStuck.value\n ? { [side]: convertToUnit(stuckPosition.value) }\n : { top: layoutItemStyles.value.top },\n ]\n })\n\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, { passive: true })\n } else {\n window.removeEventListener('scroll', onScroll)\n }\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll)\n })\n\n let lastScrollTop = 0\n function onScroll () {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down'\n const rect = rootEl.value!.getBoundingClientRect()\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0)\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop)\n const bottom =\n rect.height +\n Math.max(stuckPosition.value, layoutTop) -\n window.scrollY -\n window.innerHeight\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value!).getPropertyValue('--v-body-scroll-y')) || 0\n\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top'\n stuckPosition.value = layoutTop\n } else if (\n (direction === 'up' && isStuck.value === 'bottom') ||\n (direction === 'down' && isStuck.value === 'top')\n ) {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll\n isStuck.value = true\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0\n isStuck.value = 'bottom'\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top\n isStuck.value = 'top'\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop\n isStuck.value = 'top'\n }\n }\n\n lastScrollTop = window.scrollY\n }\n\n return { isStuck, stickyStyles }\n}\n","// Composables\nimport { useHydration } from '@/composables/hydration'\n\n// Utilities\nimport { defineComponent } from '@/util'\n\nexport const VNoSsr = defineComponent({\n name: 'VNoSsr',\n\n setup (_, { slots }) {\n const show = useHydration()\n\n return () => show.value && slots.default?.()\n },\n})\n\nexport type VNoSsr = InstanceType<typeof VNoSsr>\n","// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record<string, any>\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n ariaLabel: string\n ariaDisabled: boolean\n}\n\nexport type VPaginationSlots = {\n item: ItemSlot\n first: ControlSlot\n prev: ControlSlot\n next: ControlSlot\n last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { width } = useDisplay()\n const maxButtons = shallowRef(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, itemWidth)\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n }\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.first } />\n )}\n </li>\n )}\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.prev } />\n )}\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" { ...item.props }>{ item.page }</VBtn>\n )}\n </li>\n ))}\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.next } />\n )}\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.last } />\n )}\n </li>\n )}\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n","// Utilities\nimport { onBeforeUpdate, ref } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useRefs <T extends {}> () {\n const refs = ref<(T | undefined)[]>([]) as Ref<(T | undefined)[]>\n\n onBeforeUpdate(() => (refs.value = []))\n\n function updateRef (e: any, i: number) {\n refs.value[i] = e\n }\n\n return { refs, updateRef }\n}\n","// Styles\nimport './VParallax.sass'\n\n// Components\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, getScrollParent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VImgSlots } from '@/components/VImg/VImg'\n\nfunction floor (val: number) {\n return Math.floor(Math.abs(val)) * Math.sign(val)\n}\n\nexport const makeVParallaxProps = propsFactory({\n scale: {\n type: [Number, String],\n default: 0.5,\n },\n\n ...makeComponentProps(),\n}, 'VParallax')\n\nexport const VParallax = genericComponent<VImgSlots>()({\n name: 'VParallax',\n\n props: makeVParallaxProps(),\n\n setup (props, { slots }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n const { resizeRef, contentRect } = useResizeObserver()\n const { height: displayHeight } = useDisplay()\n\n const root = ref<VImg>()\n\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el\n })\n\n let scrollParent: Element | Document\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value)\n scrollParent = scrollParent === document.scrollingElement ? document : scrollParent\n scrollParent.addEventListener('scroll', onScroll, { passive: true })\n onScroll()\n } else {\n scrollParent.removeEventListener('scroll', onScroll)\n }\n })\n\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll)\n })\n\n watch(displayHeight, onScroll)\n watch(() => contentRect.value?.height, onScroll)\n\n const scale = computed(() => {\n return 1 - clamp(+props.scale)\n })\n\n let frame = -1\n function onScroll () {\n if (!isIntersecting.value) return\n\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n const el: HTMLElement | null = (root.value?.$el as Element).querySelector('.v-img__img')\n if (!el) return\n\n const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight\n const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop\n const top = intersectionRef.value!.getBoundingClientRect().top + scrollPos\n const height = contentRect.value!.height\n\n const center = top + (height - scrollHeight) / 2\n const translate = floor((scrollPos - center) * scale.value)\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height)\n\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`)\n })\n }\n\n useRender(() => (\n <VImg\n class={[\n 'v-parallax',\n { 'v-parallax--active': isIntersecting.value },\n props.class,\n ]}\n style={ props.style }\n ref={ root }\n cover\n onLoadstart={ onScroll }\n onLoad={ onScroll }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VParallax = InstanceType<typeof VParallax>\n","// Components\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport const makeVRadioProps = propsFactory({\n ...makeVSelectionControlProps({\n falseIcon: '$radioOff',\n trueIcon: '$radioOn',\n }),\n}, 'VRadio')\n\nexport const VRadio = genericComponent<VSelectionControlSlots>()({\n name: 'VRadio',\n\n props: makeVRadioProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VSelectionControl\n { ...props }\n class={[\n 'v-radio',\n props.class,\n ]}\n style={ props.style }\n type=\"radio\"\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VRadio = InstanceType<typeof VRadio>\n","// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControl } from '@/components/VSelectionControl'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport type VRadioGroupSlots = VInputSlots & VSelectionControlSlots\n\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n}, 'VRadioGroup')\n\nexport const VRadioGroup = genericComponent<VRadioGroupSlots>()({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: makeVRadioGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class={[\n 'v-radio-group',\n props.class,\n ]}\n style={ props.style }\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel id={ id.value }>\n { label }\n </VLabel>\n )}\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n aria-describedby={ messagesId.value }\n defaultsTarget=\"VRadio\"\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n aria-labelledby={ label ? id.value : undefined }\n multiple={ false }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType<typeof VRadioGroup>\n","// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<readonly (string | number)[]>,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n","// Styles\nimport './VRating.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { clamp, createRange, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport type { Variant } from '@/composables/variant'\n\ntype VRatingItemSlot = {\n value: number\n index: number\n isFilled: boolean\n isHovered: boolean\n icon: IconValue\n color?: string\n props: Record<string, unknown>\n rating: number\n}\n\ntype VRatingItemLabelSlot = {\n value: number\n index: number\n label?: string\n}\n\ntype VRatingSlots = {\n item: VRatingItemSlot\n 'item-label': VRatingItemLabelSlot\n}\n\nexport const makeVRatingProps = propsFactory({\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item',\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty',\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull',\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5,\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n itemLabels: Array as Prop<string[]>,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: (v: any) => ['top', 'bottom'].includes(v),\n },\n ripple: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VRating')\n\nexport const VRating = genericComponent<VRatingSlots>()({\n name: 'VRating',\n\n props: makeVRatingProps(),\n\n emits: {\n 'update:modelValue': (value: number | string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const rating = useProxiedModel(props, 'modelValue')\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length))\n\n const range = computed(() => createRange(Number(props.length), 1))\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]))\n const hoverIndex = shallowRef(-1)\n\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1\n const isFilled = normalizedValue.value >= value\n const isHovered = hoverIndex.value >= value\n const isFullIcon = isHovering ? isHovered : isFilled\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon\n const activeColor = props.activeColor ?? props.color\n const color = (isFilled || isHovered) ? activeColor : props.color\n\n return { isFilled, isHovered, icon, color }\n }))\n\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter () {\n hoverIndex.value = value\n }\n\n function onMouseleave () {\n hoverIndex.value = -1\n }\n\n function onClick () {\n if (props.disabled || props.readonly) return\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value\n }\n\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick,\n }\n }))\n\n const name = computed(() => props.name ?? `v-rating-${getUid()}`)\n\n function VRatingItem ({ value, index, showStar = true }: { value: number, index: number, showStar?: boolean }) {\n const { onMouseenter, onMouseleave, onClick } = eventState.value[index + 1]\n const id = `${name.value}-${String(value).replace('.', '-')}`\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain' as Variant,\n }\n\n return (\n <>\n <label\n for={ id }\n class={{\n 'v-rating__item--half': props.halfIncrements && value % 1 > 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0,\n }}\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n onClick={ onClick }\n >\n <span class=\"v-rating__hidden\">{ t(props.itemAriaLabel, value, props.length) }</span>\n {\n !showStar ? undefined\n : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value,\n })\n : (\n <VBtn\n aria-label={ t(props.itemAriaLabel, value, props.length) }\n { ...btnProps }\n />\n )\n }\n </label>\n\n <input\n class=\"v-rating__hidden\"\n name={ name.value }\n id={ id }\n type=\"radio\"\n value={ value }\n checked={ normalizedValue.value === value }\n tabindex={ -1 }\n readonly={ props.readonly }\n disabled={ props.disabled }\n />\n </>\n )\n }\n\n function createLabel (labelProps: { value: number, index: number, label?: string }) {\n if (slots['item-label']) return slots['item-label'](labelProps)\n\n if (labelProps.label) return <span>{ labelProps.label }</span>\n\n return <span> </span>\n }\n\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label']\n\n return (\n <props.tag\n class={[\n 'v-rating',\n {\n 'v-rating--hover': props.hover,\n 'v-rating--readonly': props.readonly,\n },\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n <VRatingItem value={ 0 } index={ -1 } showStar={ false } />\n\n { range.value.map((value, i) => (\n <div class=\"v-rating__wrapper\">\n {\n hasLabels && props.itemLabelPosition === 'top'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n <div class=\"v-rating__item\">\n { props.halfIncrements ? (\n <>\n <VRatingItem value={ value - 0.5 } index={ i * 2 } />\n <VRatingItem value={ value } index={ (i * 2) + 1 } />\n </>\n ) : (\n <VRatingItem value={ value } index={ i } />\n )}\n </div>\n {\n hasLabels && props.itemLabelPosition === 'bottom'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n </div>\n ))}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VRating = InstanceType<typeof VRating>\n","export function bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset ({\n selectedElement,\n containerSize,\n contentSize,\n isRtl,\n currentScrollOffset,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerSize: number\n contentSize: number\n isRtl: boolean\n currentScrollOffset: number\n isHorizontal: boolean\n}): number {\n const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight\n const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop\n const adjustedOffsetStart = isRtl && isHorizontal ? (contentSize - offsetStart - clientSize) : offsetStart\n\n const totalSize = containerSize + currentScrollOffset\n const itemOffset = clientSize + adjustedOffsetStart\n const additionalOffset = clientSize * 0.4\n\n if (adjustedOffsetStart <= currentScrollOffset) {\n currentScrollOffset = Math.max(adjustedOffsetStart - additionalOffset, 0)\n } else if (totalSize <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalSize - itemOffset - additionalOffset), contentSize - containerSize)\n }\n\n return currentScrollOffset\n}\n\nexport function calculateCenteredOffset ({\n selectedElement,\n containerSize,\n contentSize,\n isRtl,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerSize: number\n contentSize: number\n isRtl: boolean\n isHorizontal: boolean\n}): number {\n const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight\n const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop\n\n const offsetCentered = isRtl && isHorizontal\n ? contentSize - offsetStart - clientSize / 2 - containerSize / 2\n : offsetStart + clientSize / 2 - containerSize / 2\n\n return Math.min(contentSize - containerSize, Math.max(0, offsetCentered))\n}\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport { bias, calculateCenteredOffset, calculateUpdatedOffset } from './helpers'\nimport { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<VSlideGroupSlots>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { mobile } = useDisplay()\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n if (firstSelectedIndex.value === 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (props.centerActive) {\n scrollOffset.value = calculateCenteredOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n isHorizontal: isHorizontal.value,\n })\n } else if (isOverflowing.value) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n }\n }\n })\n })\n }\n\n const disableTransition = shallowRef(false)\n\n let startTouch = 0\n let startOffset = 0\n\n function onTouchstart (e: TouchEvent) {\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n startOffset = sign * scrollOffset.value\n startTouch = e.touches[0][sizeProperty]\n disableTransition.value = true\n }\n\n function onTouchmove (e: TouchEvent) {\n if (!isOverflowing.value) return\n\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n scrollOffset.value = sign * (startOffset + startTouch - e.touches[0][sizeProperty])\n }\n\n function onTouchend (e: TouchEvent) {\n const maxScrollOffset = contentSize.value - containerSize.value\n\n if (scrollOffset.value < 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (scrollOffset.value >= maxScrollOffset) {\n scrollOffset.value = maxScrollOffset\n }\n\n disableTransition.value = false\n }\n\n function onScroll () {\n if (!containerRef.value) return\n\n containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0\n }\n\n const isFocused = shallowRef(false)\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.value.children) {\n if (item === el) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement: item as HTMLElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n focus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n focus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n }\n }\n\n if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n focusable[0]?.focus()\n } else if (location === 'next') {\n const el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('first')\n } else if (location === 'prev') {\n const el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('last')\n } else if (location === 'first') {\n (contentRef.value.firstElementChild as HTMLElement)?.focus()\n } else if (location === 'last') {\n (contentRef.value.lastElementChild as HTMLElement)?.focus()\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const newAbsoluteOffset = scrollOffset.value + (location === 'prev' ? -1 : 1) * containerSize.value\n\n scrollOffset.value = clamp(newAbsoluteOffset, 0, contentSize.value - containerSize.value)\n }\n\n const contentStyles = computed(() => {\n // This adds friction when scrolling the 'wrong' way when at max offset\n let scrollAmount = scrollOffset.value > contentSize.value - containerSize.value\n ? -(contentSize.value - containerSize.value) + bias(contentSize.value - containerSize.value - scrollOffset.value)\n : -scrollOffset.value\n\n // This adds friction when scrolling the 'wrong' way when at min offset\n if (scrollOffset.value <= 0) {\n scrollAmount = bias(-scrollOffset.value)\n }\n\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n return {\n transform: `translate${isHorizontal.value ? 'X' : 'Y'}(${sign * scrollAmount}px)`,\n transition: disableTransition.value ? 'none' : '',\n willChange: disableTransition.value ? 'transform' : '',\n }\n })\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n return Math.abs(scrollOffset.value) > 0\n })\n\n const hasNext = computed(() => {\n // Check one scroll ahead to know the width of right-most item\n return contentSize.value > Math.abs(scrollOffset.value) + containerSize.value\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onClick={ () => scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n style={ contentStyles.value }\n onTouchstartPassive={ onTouchstart }\n onTouchmovePassive={ onTouchmove }\n onTouchendPassive={ onTouchend }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onClick={ () => scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n","// Composables\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\n\n// Utilities\nimport { VSlideGroupSymbol } from './VSlideGroup'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { UnwrapRef } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\ntype VSlideGroupItemSlots = {\n default: {\n isSelected: UnwrapRef<GroupItemProvide['isSelected']>\n select: GroupItemProvide['select']\n toggle: GroupItemProvide['toggle']\n selectedClass: UnwrapRef<GroupItemProvide['selectedClass']>\n }\n}\n\nexport const VSlideGroupItem = genericComponent<VSlideGroupItemSlots>()({\n name: 'VSlideGroupItem',\n\n props: makeGroupItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const slideGroupItem = useGroupItem(props, VSlideGroupSymbol)\n\n return () => slots.default?.({\n isSelected: slideGroupItem.isSelected.value,\n select: slideGroupItem.select,\n toggle: slideGroupItem.toggle,\n selectedClass: slideGroupItem.selectedClass.value,\n })\n },\n})\n\nexport type VSlideGroupItem = InstanceType<typeof VSlideGroupItem>\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { mergeProps, onMounted, ref, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: never\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n\n const overlay = ref<VOverlay>()\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function onPointerenter () {\n window.clearTimeout(activeTimeout)\n }\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--vertical': props.vertical,\n },\n positionClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n locationStyles.value,\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave: startTimeout,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { slots.default && (\n <div\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.default() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions() }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n","// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VProgressCircular } from '@/components/VProgressCircular'\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { LoaderSlot, useLoader } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type VSwitchSlots =\n & VInputSlots\n & VSelectionControlSlots\n & { loader: LoaderSlotProps }\n\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n\n ...makeVInputProps(),\n ...makeVSelectionControlProps(),\n}, 'VSwitch')\n\nexport const VSwitch = genericComponent<VSwitchSlots>()({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: makeVSwitchProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': () => true,\n 'update:indeterminate': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n const { loaderClasses } = useLoader(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== ''\n ? props.loading\n : props.color\n })\n\n const uid = getUid()\n const id = computed(() => props.id || `switch-${uid}`)\n\n function onChange () {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const control = ref<VSelectionControl>()\n\n function onClick (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n control.value?.input?.click()\n }\n\n return (\n <VInput\n class={[\n 'v-switch',\n { 'v-switch--inset': props.inset },\n { 'v-switch--indeterminate': indeterminate.value },\n loaderClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputAttrs }\n { ...inputProps }\n id={ id.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n <VSelectionControl\n ref={ control }\n { ...controlProps }\n v-model={ model.value }\n id={ id.value }\n aria-describedby={ messagesId.value }\n type=\"checkbox\"\n onUpdate:modelValue={ onChange }\n aria-checked={ indeterminate.value ? 'mixed' : undefined }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n onFocus={ focus }\n onBlur={ blur }\n { ...controlAttrs }\n >\n {{\n ...slots,\n default: () => (<div class=\"v-switch__track\" onClick={ onClick }></div>),\n input: ({ textColorClasses, textColorStyles }) => (\n <div\n class={[\n 'v-switch__thumb',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { props.loading && (\n <LoaderSlot\n name=\"v-switch\"\n active\n color={ isValid.value === false ? undefined : loaderColor.value }\n >\n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n <VProgressCircular\n active={ slotProps.isActive }\n color={ slotProps.color }\n indeterminate\n size=\"16\"\n width=\"2\"\n />\n )\n )}\n </LoaderSlot>\n )}\n </div>\n ),\n }}\n </VSelectionControl>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType<typeof VSwitch>\n","// Styles\nimport './VSystemBar.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VSystemBar')\n\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n\n props: makeVSystemBarProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { ssrBootStyles } = useSsrBoot()\n const height = computed(() => props.height ?? (props.window ? 32 : 24))\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-system-bar',\n { 'v-system-bar--window': props.window },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n ssrBootStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VSystemBar = InstanceType<typeof VSystemBar>\n","// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VTabsSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-tabs')\n","// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = shallowRef(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n ]}\n style={ props.style }\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VTab } from './VTab'\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: readonly TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<readonly TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({ mandatory: 'force' as const }),\n ...makeDensityProps(),\n ...makeTagProps(),\n}, 'VTabs')\n\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n\n props: makeVTabsProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => {\n const [slideGroupProps] = VSlideGroup.filterProps(props)\n\n return (\n <VSlideGroup\n { ...slideGroupProps }\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n props.style,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n ))}\n </VSlideGroup>\n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n","// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover,\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.top?.() }\n\n { slots.default ? (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n","// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextarea')\n\ntype VTextareaSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n counter: VCounterSlot\n}\n\nexport const VTextarea = genericComponent<VTextareaSlots>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextareaProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = shallowRef('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLTextAreaElement\n model.value = el.value\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n const rows = ref(+props.rows)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows\n })\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n const newHeight = clamp(height ?? 0, minHeight, maxHeight)\n rows.value = Math.floor((newHeight - padding) / lineHeight)\n\n controlHeight.value = convertToUnit(newHeight)\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n","// Styles\nimport './VThemeProvider.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\nexport const makeVThemeProviderProps = propsFactory({\n withBackground: Boolean,\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n ...makeTagProps(),\n}, 'VThemeProvider')\n\nexport const VThemeProvider = genericComponent()({\n name: 'VThemeProvider',\n\n props: makeVThemeProviderProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n\n return () => {\n if (!props.withBackground) return slots.default?.()\n\n return (\n <props.tag\n class={[\n 'v-theme-provider',\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </props.tag>\n )\n }\n },\n})\n\nexport type VThemeProvider = InstanceType<typeof VThemeProvider>\n","// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const makeVTimelineProps = propsFactory({\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop<TimelineAlign>,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop<TimelineDirection>,\n justify: {\n type: String,\n default: 'auto',\n validator: (v: any) => ['auto', 'center'].includes(v),\n },\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop<TimelineSide>,\n lineInset: {\n type: [String, Number],\n default: 0,\n },\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop<TimelineTruncateLine>,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTimeline')\n\nexport const VTimeline = genericComponent()({\n name: 'VTimeline',\n\n props: makeVTimelineProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { rtlClasses } = useRtl()\n\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor'),\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n lineInset: toRef(props, 'lineInset'),\n },\n })\n\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-timeline',\n `v-timeline--${props.direction}`,\n `v-timeline--align-${props.align}`,\n `v-timeline--justify-${props.justify}`,\n truncateClasses.value,\n {\n 'v-timeline--inset-line': !!props.lineInset,\n },\n themeClasses.value,\n densityClasses.value,\n sideClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness),\n },\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VTimeline = InstanceType<typeof VTimeline>\n","// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVTimelineDividerProps = propsFactory({\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps(),\n}, 'VTimelineDivider')\n\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n\n props: makeVTimelineDividerProps(),\n\n setup (props, { slots }) {\n const { sizeClasses, sizeStyles } = useSize(props, 'v-timeline-divider__dot')\n const { backgroundColorStyles, backgroundColorClasses } = useBackgroundColor(toRef(props, 'dotColor'))\n const { roundedClasses } = useRounded(props, 'v-timeline-divider__dot')\n const { elevationClasses } = useElevation(props)\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles,\n } = useBackgroundColor(toRef(props, 'lineColor'))\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-divider',\n {\n 'v-timeline-divider--fill-dot': props.fillDot,\n },\n props.class,\n ]}\n style={ props.style }\n >\n <div\n class={[\n 'v-timeline-divider__before',\n lineColorClasses.value,\n ]}\n style={ lineColorStyles.value }\n />\n\n { !props.hideDot && (\n <div\n key=\"dot\"\n class={[\n 'v-timeline-divider__dot',\n elevationClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n ]}\n style={ sizeStyles.value }\n >\n <div\n class={[\n 'v-timeline-divider__inner-dot',\n backgroundColorClasses.value,\n roundedClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { !slots.default ? (\n <VIcon\n key=\"icon\"\n color={ props.iconColor }\n icon={ props.icon }\n size={ props.size }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n disabled={ !props.icon }\n defaults={{\n VIcon: {\n color: props.iconColor,\n icon: props.icon,\n size: props.size,\n },\n }}\n v-slots:default={ slots.default }\n />\n )}\n </div>\n </div>\n )}\n\n <div\n class={[\n 'v-timeline-divider__after',\n lineColorClasses.value,\n ]}\n style={ lineColorStyles.value }\n />\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VTimelineDivider = InstanceType<typeof VTimelineDivider>\n","// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { ref, shallowRef, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n default: never\n icon: never\n opposite: never\n}\n\nexport const makeVTimelineItemProps = propsFactory({\n density: String as PropType<'default' | 'compact'>,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined,\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n}, 'VTimelineItem')\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n name: 'VTimelineItem',\n\n props: makeVTimelineItemProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const dotSize = shallowRef(0)\n const dotRef = ref<VTimelineDivider>()\n watch(dotRef, newValue => {\n if (!newValue) return\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n }, {\n flush: 'post',\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-item',\n {\n 'v-timeline-item--fill-dot': props.fillDot,\n },\n props.class,\n ]}\n style={[\n {\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0),\n },\n props.style,\n ]}\n >\n <div\n class=\"v-timeline-item__body\"\n style={ dimensionStyles.value }\n >\n { slots.default?.() }\n </div>\n\n <VTimelineDivider\n ref={ dotRef }\n hideDot={ props.hideDot }\n icon={ props.icon }\n iconColor={ props.iconColor }\n size={ props.size }\n elevation={ props.elevation }\n dotColor={ props.dotColor }\n fillDot={ props.fillDot }\n rounded={ props.rounded }\n v-slots={{ default: slots.icon }}\n />\n\n { props.density !== 'compact' && (\n <div class=\"v-timeline-item__opposite\">\n { !props.hideOpposite && slots.opposite?.() }\n </div>\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VTimelineItem = InstanceType<typeof VTimelineItem>\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVToolbarItemsProps = propsFactory({\n ...makeComponentProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VToolbarItems')\n\nexport const VToolbarItems = genericComponent()({\n name: 'VToolbarItems',\n\n props: makeVToolbarItemsProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n height: 'inherit',\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-toolbar-items',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VToolbarItems = InstanceType<typeof VToolbarItems>\n","// Styles\nimport './VTooltip.sass'\n\n// Components\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, mergeProps, ref } from 'vue'\nimport { genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVTooltipProps = propsFactory({\n id: String,\n text: String,\n\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end' as const,\n locationStrategy: 'connected' as const,\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto' as const,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: false,\n }), [\n 'absolute',\n 'persistent',\n ]),\n}, 'VTooltip')\n\nexport const VTooltip = genericComponent<OverlaySlots>()({\n name: 'VTooltip',\n\n props: makeVTooltipProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-tooltip-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const location = computed(() => {\n return props.location.split(' ').length > 1\n ? props.location\n : props.location + ' center' as StrategyProps['location']\n })\n\n const origin = computed(() => {\n return (\n props.origin === 'auto' ||\n props.origin === 'overlap' ||\n props.origin.split(' ').length > 1 ||\n props.location.split(' ').length > 1\n ) ? props.origin\n : props.origin + ' center' as StrategyProps['origin']\n })\n\n const transition = computed(() => {\n if (props.transition) return props.transition\n return isActive.value ? 'scale-transition' : 'fade-transition'\n })\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-describedby': id.value,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-tooltip',\n props.class,\n ]}\n style={ props.style }\n id={ id.value }\n { ...overlayProps }\n v-model={ isActive.value }\n transition={ transition.value }\n absolute\n location={ location.value }\n origin={ origin.value }\n persistent\n role=\"tooltip\"\n activatorProps={ activatorProps.value }\n _disableGlobalStack\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => slots.default?.(...args) ?? props.text,\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VTooltip = InstanceType<typeof VTooltip>\n","// Composables\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { genericComponent } from '@/util'\n\nexport type VValidationSlots = {\n default: ReturnType<typeof useValidation>\n}\n\nexport const VValidation = genericComponent<VValidationSlots>()({\n name: 'VValidation',\n\n props: makeValidationProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const validation = useValidation(props, 'validation')\n\n return () => slots.default?.(validation)\n },\n})\n\nexport type VValidation = InstanceType<typeof VValidation>\n","// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { MutationOptions } from '@/composables/mutationObserver'\n\nexport interface MutationDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value: MutationCallback | { handler: MutationCallback, options?: MutationObserverInit }\n modifiers: MutationOptions\n}\n\nfunction mounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { once, immediate, ...modifierKeys } = modifiers\n const defaultValue = !Object.keys(modifierKeys).length\n\n const { handler, options } = typeof value === 'object'\n ? value\n : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue,\n },\n }\n\n const observer = new MutationObserver((\n mutations: MutationRecord[] = [],\n observer: MutationObserver\n ) => {\n handler?.(mutations, observer)\n\n if (once) unmounted(el, binding)\n })\n\n if (immediate) handler?.([], observer)\n\n el._mutate = Object(el._mutate)\n el._mutate![binding.instance!.$.uid] = { observer }\n\n observer.observe(el, options)\n}\n\nfunction unmounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n if (!el._mutate?.[binding.instance!.$.uid]) return\n\n el._mutate[binding.instance!.$.uid]!.observer.disconnect()\n delete el._mutate[binding.instance!.$.uid]\n}\n\nexport const Mutate = {\n mounted,\n unmounted,\n}\n\nexport default Mutate\n","// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ResizeDirectiveBinding extends Omit<DirectiveBinding, 'modifiers'> {\n value: () => void\n modifiers?: {\n active?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ResizeDirectiveBinding) {\n const handler = binding.value\n const options: AddEventListenerOptions = {\n passive: !binding.modifiers?.active,\n }\n\n window.addEventListener('resize', handler, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![binding.instance!.$.uid] = {\n handler,\n options,\n }\n\n if (!binding.modifiers?.quiet) {\n handler()\n }\n}\n\nfunction unmounted (el: HTMLElement, binding: ResizeDirectiveBinding) {\n if (!el._onResize?.[binding.instance!.$.uid]) return\n\n const { handler, options } = el._onResize[binding.instance!.$.uid]!\n\n window.removeEventListener('resize', handler, options)\n\n delete el._onResize[binding.instance!.$.uid]\n}\n\nexport const Resize = {\n mounted,\n unmounted,\n}\n\nexport default Resize\n","// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ScrollDirectiveBinding extends Omit<DirectiveBinding, 'modifiers'> {\n value: EventListener | {\n handler: EventListener\n options?: AddEventListenerOptions\n } | EventListenerObject & { options?: AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ScrollDirectiveBinding) {\n const { self = false } = binding.modifiers ?? {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![binding.instance!.$.uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unmounted (el: HTMLElement, binding: ScrollDirectiveBinding) {\n if (!el._onScroll?.[binding.instance!.$.uid]) return\n\n const { handler, options, target = el } = el._onScroll[binding.instance!.$.uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[binding.instance!.$.uid]\n}\n\nfunction updated (el: HTMLElement, binding: ScrollDirectiveBinding) {\n if (binding.value === binding.oldValue) return\n\n unmounted(el, binding)\n mounted(el, binding)\n}\n\nexport const Scroll = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Scroll\n","// Utilities\nimport { createRange } from '@/util'\n\n// Types\nimport type { DateAdapter } from '../DateAdapter'\n\nconst firstDay: Record<string, number> = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AG: 0,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AS: 0,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BD: 0,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BR: 0,\n BS: 0,\n BT: 0,\n BW: 0,\n BY: 1,\n BZ: 0,\n CA: 0,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CO: 0,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DM: 0,\n DO: 0,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n ET: 0,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n 'GB-alt-variant': 0,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n GT: 0,\n GU: 0,\n HK: 0,\n HN: 0,\n HR: 1,\n HU: 1,\n ID: 0,\n IE: 1,\n IL: 0,\n IN: 0,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JM: 0,\n JO: 6,\n JP: 0,\n KE: 0,\n KG: 1,\n KH: 0,\n KR: 0,\n KW: 6,\n KZ: 1,\n LA: 0,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MH: 0,\n MK: 1,\n MM: 0,\n MN: 1,\n MO: 0,\n MQ: 1,\n MT: 0,\n MV: 5,\n MX: 0,\n MY: 1,\n MZ: 0,\n NI: 0,\n NL: 1,\n NO: 1,\n NP: 0,\n NZ: 1,\n OM: 6,\n PA: 0,\n PE: 0,\n PH: 0,\n PK: 0,\n PL: 1,\n PR: 0,\n PT: 0,\n PY: 0,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SA: 0,\n SD: 6,\n SE: 1,\n SG: 0,\n SI: 1,\n SK: 1,\n SM: 1,\n SV: 0,\n SY: 6,\n TH: 0,\n TJ: 1,\n TM: 1,\n TR: 1,\n TT: 0,\n TW: 0,\n UA: 1,\n UM: 0,\n US: 0,\n UY: 1,\n UZ: 1,\n VA: 1,\n VE: 0,\n VI: 0,\n VN: 1,\n WS: 0,\n XK: 1,\n YE: 0,\n ZA: 0,\n ZW: 0,\n}\n\nfunction getWeekArray (date: Date, locale: string) {\n const weeks = []\n let currentWeek = []\n const firstDayOfMonth = startOfMonth(date)\n const lastDayOfMonth = endOfMonth(date)\n const firstDayWeekIndex = firstDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()]\n const lastDayWeekIndex = lastDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()]\n\n for (let i = 0; i < firstDayWeekIndex; i++) {\n const adjacentDay = new Date(firstDayOfMonth)\n adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i))\n currentWeek.push(adjacentDay)\n }\n\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const day = new Date(date.getFullYear(), date.getMonth(), i)\n\n // Add the day to the current week\n currentWeek.push(day)\n\n // If the current week has 7 days, add it to the weeks array and start a new week\n if (currentWeek.length === 7) {\n weeks.push(currentWeek)\n currentWeek = []\n }\n }\n\n for (let i = 1; i < 7 - lastDayWeekIndex; i++) {\n const adjacentDay = new Date(lastDayOfMonth)\n adjacentDay.setDate(adjacentDay.getDate() + i)\n currentWeek.push(adjacentDay)\n }\n\n weeks.push(currentWeek)\n\n return weeks\n}\n\nfunction startOfMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction parseLocalDate (value: string): Date {\n const parts = value.split('-').map(Number)\n\n // new Date() uses local time zone when passing individual date component values\n return new Date(parts[0], parts[1] - 1, parts[2])\n}\n\nconst _YYYMMDD = /([12]\\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\\d|3[01]))/\n\nfunction date (value?: any): Date | null {\n if (value == null) return new Date()\n\n if (value instanceof Date) return value\n\n if (typeof value === 'string') {\n let parsed\n\n if (_YYYMMDD.test(value)) {\n return parseLocalDate(value)\n } else {\n parsed = Date.parse(value)\n }\n\n if (!isNaN(parsed)) return new Date(parsed)\n }\n\n return null\n}\n\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2)\n\nfunction getWeekdays (locale: string) {\n const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()]\n\n return createRange(7).map(i => {\n const weekday = new Date(sundayJanuarySecond2000)\n weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i)\n return new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(weekday)\n })\n}\n\nfunction format (value: Date, formatString: string, locale: string): string {\n const date = new Date(value)\n\n let options: Intl.DateTimeFormatOptions = {}\n switch (formatString) {\n case 'fullDateWithWeekday':\n options = { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }\n break\n case 'normalDateWithWeekday':\n options = { weekday: 'short', day: 'numeric', month: 'short' }\n break\n case 'keyboardDate':\n options = {}\n break\n case 'monthAndDate':\n options = { month: 'long', day: 'numeric' }\n break\n case 'monthAndYear':\n options = { month: 'long', year: 'numeric' }\n break\n case 'dayOfMonth':\n options = { day: 'numeric' }\n break\n default:\n options = { timeZone: 'UTC', timeZoneName: 'short' }\n }\n\n return new Intl.DateTimeFormat(locale, options).format(date)\n}\n\nfunction addDays (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(d.getDate() + amount)\n return d\n}\n\nfunction addMonths (date: Date, amount: number) {\n const d = new Date(date)\n d.setMonth(d.getMonth() + amount)\n return d\n}\n\nfunction getYear (date: Date) {\n return date.getFullYear()\n}\n\nfunction getMonth (date: Date) {\n return date.getMonth()\n}\n\nfunction startOfYear (date: Date) {\n return new Date(date.getFullYear(), 0, 1)\n}\nfunction endOfYear (date: Date) {\n return new Date(date.getFullYear(), 11, 31)\n}\n\nfunction isWithinRange (date: Date, range: [Date, Date]) {\n return isAfter(date, range[0]) && isBefore(date, range[1])\n}\n\nfunction isValid (date: any) {\n const d = new Date(date)\n\n return d instanceof Date && !isNaN(d.getTime())\n}\n\nfunction isAfter (date: Date, comparing: Date) {\n return date.getTime() > comparing.getTime()\n}\n\nfunction isBefore (date: Date, comparing: Date) {\n return date.getTime() < comparing.getTime()\n}\n\nfunction isEqual (date: Date, comparing: Date) {\n return date.getTime() === comparing.getTime()\n}\n\nfunction isSameDay (date: Date, comparing: Date) {\n return date.getDate() === comparing.getDate() &&\n date.getMonth() === comparing.getMonth() &&\n date.getFullYear() === comparing.getFullYear()\n}\n\nfunction isSameMonth (date: Date, comparing: Date) {\n return date.getMonth() === comparing.getMonth() &&\n date.getFullYear() === comparing.getFullYear()\n}\n\nfunction getDiff (date: Date, comparing: Date | string, unit?: string) {\n const d = new Date(date)\n const c = new Date(comparing)\n\n if (unit === 'month') {\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12\n }\n\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24))\n}\n\nfunction setYear (date: Date, year: number) {\n const d = new Date(date)\n d.setFullYear(year)\n return d\n}\n\nexport class VuetifyDateAdapter implements DateAdapter<Date> {\n locale: string\n\n constructor (options: { locale: string }) {\n this.locale = options.locale\n }\n\n date (value?: any) {\n return date(value)\n }\n\n toJsDate (date: Date) {\n return date\n }\n\n addDays (date: Date, amount: number) {\n return addDays(date, amount)\n }\n\n addMonths (date: Date, amount: number) {\n return addMonths(date, amount)\n }\n\n getWeekArray (date: Date) {\n return getWeekArray(date, this.locale)\n }\n\n startOfMonth (date: Date) {\n return startOfMonth(date)\n }\n\n endOfMonth (date: Date) {\n return endOfMonth(date)\n }\n\n format (date: Date, formatString: string) {\n return format(date, formatString, this.locale)\n }\n\n isEqual (date: Date, comparing: Date) {\n return isEqual(date, comparing)\n }\n\n isValid (date: any) {\n return isValid(date)\n }\n\n isWithinRange (date: Date, range: [Date, Date]) {\n return isWithinRange(date, range)\n }\n\n isAfter (date: Date, comparing: Date) {\n return isAfter(date, comparing)\n }\n\n isBefore (date: Date, comparing: Date) {\n return !isAfter(date, comparing) && !isEqual(date, comparing)\n }\n\n isSameDay (date: Date, comparing: Date) {\n return isSameDay(date, comparing)\n }\n\n isSameMonth (date: Date, comparing: Date) {\n return isSameMonth(date, comparing)\n }\n\n setYear (date: Date, year: number) {\n return setYear(date, year)\n }\n\n getDiff (date: Date, comparing: Date | string, unit?: string) {\n return getDiff(date, comparing, unit)\n }\n\n getWeekdays () {\n return getWeekdays(this.locale)\n }\n\n getYear (date: Date) {\n return getYear(date)\n }\n\n getMonth (date: Date) {\n return getMonth(date)\n }\n\n startOfYear (date: Date) {\n return startOfYear(date)\n }\n\n endOfYear (date: Date) {\n return endOfYear(date)\n }\n}\n","// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { inject, reactive, watch } from 'vue'\nimport { mergeDeep, propsFactory } from '@/util'\n\n// Adapters\nimport { VuetifyDateAdapter } from './adapters/vuetify'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { DateAdapter } from './DateAdapter'\n\nexport interface DateInstance<T> extends DateAdapter<T> {\n locale?: any\n}\n\nexport type InternalDateOptions<T = any> = {\n adapter: (new (options: { locale: any }) => DateInstance<T>) | DateInstance<T>\n formats?: Record<string, string>\n locale: Record<string, any>\n}\n\nexport type DateOptions<T = any> = Partial<InternalDateOptions<T>>\n\nexport const DateAdapterSymbol: InjectionKey<InternalDateOptions> = Symbol.for('vuetify:date-adapter')\n\nexport interface DateProps {\n displayDate: any\n hideAdjacentMonths: boolean\n modelValue: readonly any[]\n}\n\nexport function createDate (options?: DateOptions) {\n return mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: '',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'nn-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW',\n },\n }, options)\n}\n\n// TODO: revisit this after it starts being implemented\nexport const makeDateProps = propsFactory({\n displayDate: {\n type: Object as PropType<Date>,\n default: new Date(),\n },\n hideAdjacentMonths: Boolean,\n modelValue: {\n type: null as unknown as PropType<readonly any[]>,\n default: () => [],\n },\n}, 'date')\n\nexport function useDate () {\n const date = inject(DateAdapterSymbol)\n const locale = useLocale()\n\n if (!date) throw new Error('[Vuetify] Could not find injected date')\n\n const instance = reactive(typeof date.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new date.adapter({ locale: date.locale?.[locale.current.value] ?? locale.current.value })\n : date.adapter)\n\n watch(locale.current, value => {\n const newLocale = date.locale ? date.locale[value] : value\n instance.locale = newLocale ?? instance.locale\n })\n\n return instance\n}\n\nexport function toIso (adapter: DateAdapter<any>, value: any) {\n const date = adapter.toJsDate(value)\n return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n}\n\nfunction getMondayOfFirstWeekOfYear (year: number) {\n return new Date(year, 0, 1)\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek (adapter: DateAdapter<any>, value: any) {\n const date = adapter.toJsDate(value)\n let year = date.getFullYear()\n let d1w1 = getMondayOfFirstWeekOfYear(year)\n\n if (date < d1w1) {\n year = year - 1\n d1w1 = getMondayOfFirstWeekOfYear(year)\n } else {\n const tv = getMondayOfFirstWeekOfYear(year + 1)\n if (date >= tv) {\n year = year + 1\n d1w1 = tv\n }\n }\n\n const diffTime = Math.abs(date.getTime() - d1w1.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n\n return Math.floor(diffDays / 7) + 1\n}\n","// Composables\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\nimport { createDisplay, DisplaySymbol } from '@/composables/display'\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createLocale, LocaleSymbol } from '@/composables/locale'\nimport { createTheme, ThemeSymbol } from '@/composables/theme'\nimport { createDate, DateAdapterSymbol } from '@/labs/date/date'\n\n// Utilities\nimport { nextTick, reactive } from 'vue'\nimport { defineComponent, getUid, IN_BROWSER, mergeDeep } from '@/util'\n\n// Types\nimport type { App, ComponentPublicInstance, InjectionKey } from 'vue'\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { DisplayOptions, SSROptions } from '@/composables/display'\nimport type { IconOptions } from '@/composables/icons'\nimport type { LocaleOptions, RtlOptions } from '@/composables/locale'\nimport type { ThemeOptions } from '@/composables/theme'\nimport type { DateOptions } from '@/labs/date'\n\nexport * from './composables'\nexport type { DateOptions, DateInstance } from '@/labs/date'\n\nexport interface VuetifyOptions {\n aliases?: Record<string, any>\n blueprint?: Blueprint\n components?: Record<string, any>\n date?: DateOptions\n directives?: Record<string, any>\n defaults?: DefaultsOptions\n display?: DisplayOptions\n theme?: ThemeOptions\n icons?: IconOptions\n locale?: LocaleOptions & RtlOptions\n ssr?: SSROptions\n}\n\nexport interface Blueprint extends Omit<VuetifyOptions, 'blueprint'> {}\n\nexport function createVuetify (vuetify: VuetifyOptions = {}) {\n const { blueprint, ...rest } = vuetify\n const options: VuetifyOptions = mergeDeep(blueprint, rest)\n const {\n aliases = {},\n components = {},\n directives = {},\n } = options\n\n const defaults = createDefaults(options.defaults)\n const display = createDisplay(options.display, options.ssr)\n const theme = createTheme(options.theme)\n const icons = createIcons(options.icons)\n const locale = createLocale(options.locale)\n const date = createDate(options.date)\n\n const install = (app: App) => {\n for (const key in directives) {\n app.directive(key, directives[key])\n }\n\n for (const key in components) {\n app.component(key, components[key])\n }\n\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name,\n }))\n }\n\n theme.install(app)\n\n app.provide(DefaultsSymbol, defaults)\n app.provide(DisplaySymbol, display)\n app.provide(ThemeSymbol, theme)\n app.provide(IconSymbol, icons)\n app.provide(LocaleSymbol, locale)\n app.provide(DateAdapterSymbol, date)\n\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update()\n })\n } else {\n const { mount } = app\n app.mount = (...args) => {\n const vm = mount(...args)\n nextTick(() => display.update())\n app.mount = mount\n return vm\n }\n }\n }\n\n getUid.reset()\n\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify () {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol),\n })\n },\n },\n })\n }\n }\n\n return {\n install,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n }\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\n// Vue's inject() can only be used in setup\nfunction inject (this: ComponentPublicInstance, key: InjectionKey<any> | string) {\n const vm = this.$\n\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides\n\n if (provides && (key as any) in provides) {\n return provides[(key as string)]\n }\n}\n","/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n components,\n directives,\n}\nexport * from './composables'\n"],"names":["propsFactory","props","source","defaults","Object","keys","reduce","obj","prop","definition","Array","isArray","type","default","makeComponentProps","class","String","style","IN_BROWSER","window","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","navigator","maxTouchPoints","getNestedValue","path","fallback","last","length","undefined","i","deepEqual","a","b","Date","getTime","every","p","getObjectValueByPath","replace","split","getPropertyFromItem","item","property","value","createRange","start","arguments","from","v","k","convertToUnit","str","unit","isNaN","isFinite","Number","isObject","refElement","$el","keyCodes","freeze","enter","tab","delete","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","shift","keyValues","o","has","key","hasOwnProperty","pick","paths","exclude","found","create","rest","some","RegExp","test","omit","clone","forEach","filterInputAttrs","attrs","wrapInArray","clamp","min","max","Math","getDecimals","trimmedStr","toString","trim","includes","indexOf","padEnd","char","repeat","humanReadableFileSize","bytes","base","prefix","abs","toFixed","mergeDeep","target","arrayFn","out","sourceProperty","targetProperty","flattenFragments","nodes","map","node","Fragment","children","flat","toKebabCase","cache","get","kebab","toLowerCase","set","findChildrenWithProvide","vnode","child","component","getOwnPropertySymbols","provides","subTree","Map","_arr","WeakMap","_pointer","CircularBuffer","constructor","size","_classPrivateFieldInitSpec","writable","this","push","val","_classPrivateFieldGet","_classPrivateFieldSet","values","slice","concat","destructComputed","getter","refs","reactive","computed","watchEffect","flush","toRefs","arr","onRE","isOn","eventName","propName","EventProp","Function","hasEvent","name","capitalize","callEvent","handler","_len2","args","_key2","h","focusableChildren","el","filterByTabIndex","targets","s","join","querySelectorAll","getNextElement","elements","location","condition","_el","idx","document","activeElement","inc","offsetParent","focusChild","focusable","focus","at","contains","noop","matchesSelector","selector","CSS","supports","matches","err","block","inline","parseAnchor","anchor","isRtl","side","align","toPhysical","flipSide","center","top","bottom","flipAlign","flipCorner","getAxis","Box","_ref","x","y","width","height","getOverflow","before","after","nullifyTransforms","rect","getBoundingClientRect","getComputedStyle","tx","transform","ta","sx","sy","dx","dy","startsWith","to","transformOrigin","parseFloat","w","offsetWidth","offsetHeight","animate","keyframes","options","finished","Promise","resolve","animation","onfinish","handlers","bindProps","n","fn","removeEventListener","addEventListener","_handler","Set","add","removeAttribute","setAttribute","unbindProps","consoleWarn","message","warn","consoleError","delta","cielabForwardTransform","t","cbrt","cielabReverseTransform","fromXYZ","xyz","transformedY","toXYZ","lab","Ln","srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","rgb","matrix","round","r","g","isCssColor","color","cssColorRe","mappers","rgba","hsl","l","HSLtoRGB","hsla","hsv","HSVtoRGB","hsva","parseColor","groups","match","realValues","endsWith","hex","int","parseInt","HexToRGB","HSLtoHSV","TypeError","f","RGBtoHSV","HSVtoHSL","RGBtoCSS","HSVtoCSS","toHex","substr","toUpperCase","RGBtoHex","_ref2","parseHex","chunked","index","chunk","c","HSVtoHex","lighten","amount","CIELAB","sRGB","darken","getLuma","getContrast","first","second","l1","l2","useToggleScope","scope","effectScope","run","stop","watch","active","immediate","onScopeDispose","DefaultsSymbol","Symbol","for","createDefaults","ref","injectDefaults","inject","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","unref","disabled","scoped","reset","root","properties","prev","len","Infinity","provide","propIsDefined","internalUseDefaults","vm","getCurrentInstance","__name","componentDefaults","_as","_props","Proxy","propValue","Reflect","filter","global","_subcomponentDefaults","shallowRef","provideSubDefaults","injectSelf","subComponents","entries","fromEntries","defineComponent","_setup","setup","propKeys","filterProps","ctx","setupBindings","genericComponent","exposeDefaults","_defineComponent","createSimpleFunctional","klass","tag","camelize","slots","attachedRoot","getRootNode","parentNode","composed","standardEasing","_getCurrentInstance","getCurrentInstanceName","aliasName","_uid","_map","getUid","uid","getScrollParent","includeHidden","isPotentiallyScrollable","hasScrollbar","parentElement","scrollingElement","getScrollParents","stopAt","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","useRender","render","useResizeObserver","callback","box","resizeRef","contentRect","observer","ResizeObserver","onBeforeUnmount","disconnect","newValue","oldValue","unobserve","observe","readonly","VuetifyLayoutKey","VuetifyLayoutItemKey","makeLayoutProps","overlaps","fullHeight","Boolean","makeLayoutItemProps","order","absolute","useLayout","layout","getLayoutItem","mainRect","mainStyles","useLayoutItem","id","isKeptAlive","onDeactivated","onActivated","layoutItemStyles","layoutItemScrimStyles","register","unregister","layoutRect","createLayout","parentLayout","rootZIndex","registered","positions","layoutSizes","priorities","activeItems","disabledTransitions","computedOverlaps","overlap","topPosition","bottomPosition","topAmount","bottomAmount","position","layers","uniquePriorities","sort","items","generateLayers","previousLayer","layer","transitionsEnabled","transition","find","rootVm","isMounted","onMounted","layoutSize","elementSize","disableTransitions","instanceIndex","splice","findIndex","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","styles","layoutClasses","layoutStyles","overflow","layoutRef","en","badge","close","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","ariaLabel","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","sortBy","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","dateRangeInput","divider","datePicker","ok","cancel","range","title","header","input","placeholder","noDataText","carousel","next","delimiter","calendar","moreEvents","clear","prependAction","appendAction","otp","fileInput","counter","counterSize","timePicker","am","pm","pagination","previous","page","currentPage","stepper","rating","loading","infiniteScroll","loadMore","empty","defaultRtl","af","ar","bg","ca","ckb","cs","de","es","et","fa","fi","fr","hr","hu","he","it","ja","ko","lv","lt","nl","no","pl","pt","ro","ru","sk","sl","srCyrl","srLatn","sv","th","tr","az","uk","vi","zhHans","zhHant","useProxiedModel","defaultValue","transformIn","transformOut","internal","kebabProp","checkKebab","isControlled","model","externalValue","internalValue","toRaw","emit","defineProperty","LANG_PREFIX","params","createTranslateFunction","current","messages","_len","_key","shortKey","currentLocale","fallbackLocale","createNumberFunction","Intl","NumberFormat","format","useProvided","provided","createProvideFunction","state","LocaleSymbol","createLocale","i18n","adapter","locale","createVuetifyAdapter","rtl","rtlClasses","createRtl","useLocale","provideLocale","provideRtl","data","useRtl","mainTRC","Rco","Gco","Bco","blkThrs","loConFactor","loConOffset","APCAcontrast","text","background","Rtxt","Gtxt","Btxt","Rbg","Gbg","Bbg","outputContrast","Ytxt","Ybg","SAPC","ThemeSymbol","makeThemeProps","theme","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","surface","primary","secondary","error","info","success","warning","variables","createTheme","parsedOptions","isDisabled","parseThemeOptions","computedThemes","acc","original","variation","onColor","colorVal","blackContrast","whiteContrast","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","flatMap","getHead","nonce","cspNonce","themeClasses","install","app","head","_context","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","getElementById","updateStyles","createElement","appendChild","innerHTML","provideTheme","newTheme","useTheme","content","line","lightOverlay","darkOverlay","makeVAppProps","VApp","_createVNode","createVNode","makeTagProps","makeVToolbarTitleProps","VToolbarTitle","hasText","makeTransitionProps","group","hideOnLeave","leaveAbsolute","mode","origin","createCssTransition","functions","onBeforeEnter","onLeave","offsetTop","offsetLeft","_transitionInitialStyles","setProperty","onAfterLeave","TransitionGroup","Transition","css","createJavascriptTransition","ExpandTransitionGenerator","expandedParentClass","sizeProperty","offsetProperty","_parent","_initialStyle","onEnter","initialStyle","offset","classList","requestAnimationFrame","onAfterEnter","resetStyles","onEnterCancelled","onLeaveCancelled","remove","makeVDialogTransitionProps","VDialogTransition","pointerEvents","visibility","done","speed","getDimensions","opacity","duration","easing","getChildren","then","removeProperty","onBeforeLeave","_mergeProps","els","querySelector","targetBox","elBox","originX","originY","anchorSide","anchorOffset","getPropertyValue","offsetX","offsetY","tsx","tsy","maxs","asa","innerWidth","innerHeight","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","makeVDefaultsProviderProps","VDefaultsProvider","makeDimensionProps","maxHeight","maxWidth","minHeight","minWidth","useDimension","dimensionStyles","makeVResponsiveProps","aspectRatio","contentClass","VResponsive","aspectStyles","ratio","paddingBottom","useAspectStyles","additional","validator","MaybeTransition","customProps","mergeProps","unmounted","binding","_observe","instance","$","Intersect","modifiers","IntersectionObserver","isIntersecting","quiet","init","once","makeVImgProps","alt","cover","eager","gradient","lazySrc","rootMargin","threshold","sizes","src","srcset","VImg","directives","intersect","emits","loadstart","load","currentSrc","image","naturalWidth","naturalHeight","normalisedSrc","aspect","lazyImg","Image","pollForSize","nextTick","complete","onError","onLoad","getSrc","img","oldVal","onBeforeMount","timer","timeout","poll","clearTimeout","imgHeight","imgWidth","setTimeout","containClasses","__image","sources","appear","withDirectives","vShow","__preloadImage","__placeholder","__error","__gradient","backgroundImage","isBooted","responsiveProps","_withDirectives","role","_Fragment","_resolveDirective","makeBorderProps","border","useBorder","borderClasses","isRef","classes","useColor","backgroundColor","caretColor","colorClasses","colorStyles","useTextColor","textColorClasses","textColorStyles","useBackgroundColor","backgroundColorClasses","backgroundColorStyles","makeElevationProps","elevation","useElevation","elevationClasses","makeRoundedProps","rounded","useRounded","roundedClasses","allowedDensities","makeVToolbarProps","collapse","density","extended","extensionHeight","floating","VToolbar","toRef","isExtended","extension","contentHeight","VBtn","variant","hasTitle","hasImage","VTabs","prepend","append","makeScrollProps","scrollTarget","scrollThreshold","useSsrBoot","ssrBootStyles","makeVAppBarProps","scrollBehavior","modelValue","VAppBar","vToolbarRef","isActive","behavior","hide","inverted","elevate","fadeImage","canScroll","currentScroll","isScrollingUp","scrollRatio","previousScroll","savedScroll","currentThreshold","isScrollActive","onScroll","targetEl","pageYOffset","scrollTop","newTarget","passive","useScroll","isCollapsed","isFlat","toolbarProps","makeDensityProps","useDensity","densityClasses","allowedVariants","genOverlays","isClickable","makeVariantProps","useVariant","variantClasses","makeVBtnGroupProps","divided","VBtnGroup","makeGroupProps","multiple","mandatory","selectedClass","makeGroupItemProps","useGroupItem","injectKey","required","description","isSelected","toggle","select","useGroup","isUnmounted","selected","getIds","ids","itemIndex","getValues","groupVm","forceMandatoryValue","step","currentId","currentIndex","newIndex","newItem","unwrapped","getItemIndex","itemByIndex","VBtnToggleSymbol","makeVBtnToggleProps","VBtnToggle","btnGroupProps","aliases","checkboxOn","checkboxOff","checkboxIndeterminate","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","unfold","file","plus","minus","mdi","VClassIcon","IconValue","IconSymbol","makeIconProps","icon","VComponentIcon","Icon","VSvgIcon","inheritAttrs","xmlns","viewBox","d","VLigatureIcon","defaultSets","svg","createIcons","defaultSet","sets","vuetify","predefinedSizes","makeSizeProps","useSize","sizeClasses","sizeStyles","makeVIconProps","VIcon","slotIcon","iconData","icons","iconAlias","iconSetName","setName","iconName","useIcon","slotValue","Text","onClick","fontSize","useIntersectionObserver","intersectionRef","makeVProgressCircularProps","bgColor","indeterminate","rotate","VProgressCircular","CIRCUMFERENCE","PI","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","fill","cx","cy","oppositeMap","makeLocationProps","useLocation","opposite","locationStyles","getOffset","makeVProgressLinearProps","bgOpacity","bufferValue","clickable","reverse","stream","striped","roundedBar","VProgressLinear","progress","barColorClasses","barColorStyles","normalizedBuffer","isReversed","handleClick","e","clientX","borderTop","bar","buffer","makeLoaderProps","useLoader","loaderClasses","LoaderSlot","positionValues","makePositionProps","usePosition","positionClasses","useRouter","proxy","$router","useLink","RouterLink","resolveDynamicComponent","isLink","href","link","route","navigate","exact","isExactActive","makeRouterProps","inTransition","stopSymbol","webkitTransform","isTouchEvent","isKeyboardEvent","ripples","show","_ripple","enabled","container","className","radius","scale","centerX","centerY","localX","localY","touches","clientY","circle","clientWidth","sqrt","calculate","dataset","previousPosition","activated","performance","now","getElementsByClassName","isHiding","diff","delay","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","Ripple","updated","makeVBtnProps","symbol","prependIcon","appendIcon","stacked","ripple","isElevated","valueAttr","JSON","stringify","metaKey","ctrlKey","shiftKey","button","useSelectLink","Tag","hasPrepend","hasAppend","hasIcon","hasColor","loader","makeVAppBarNavIconProps","VAppBarNavIcon","VAppBarTitle","VAlertTitle","allowedTypes","makeVAlertProps","borderColor","closable","closeIcon","closeLabel","prominent","VAlert","variantProps","closeProps","hasClose","makeVLabelProps","VLabel","VSelectionControlGroupSymbol","makeSelectionControlGroupProps","defaultsTarget","falseIcon","trueIcon","valueComparator","makeVSelectionControlGroupProps","VSelectionControlGroup","updateHandlers","forceUpdate","onForceUpdate","cb","makeVSelectionControlProps","label","trueValue","falseValue","VSelectionControl","isMultiple","currentValue","newVal","useSelectionControl","isFocused","isFocusVisible","onFocus","onBlur","onInput","checked","rootAttrs","inputAttrs","makeVCheckboxBtnProps","indeterminateIcon","VCheckboxBtn","onChange","$event","useInputIcon","InputIcon","localeKey","prependInner","appendInner","listener","makeVMessagesProps","VMessages","makeFocusProps","focused","useFocus","focusClasses","blur","FormKey","makeFormProps","fastFail","validateOn","useForm","makeValidationProps","errorMessages","maxErrors","rules","validationValue","useValidation","validationModel","form","internalErrorMessages","isPristine","isDirty","isReadonly","submit","lazy","isValid","isValidating","validationClasses","resetValidation","validate","async","silent","results","rule","result","console","update","unwatch","makeVInputProps","centerAffix","hideDetails","hint","persistentHint","direction","VInput","messagesId","slotProps","hasMessages","hasDetails","details","makeVCheckboxProps","VCheckbox","controlAttrs","inputProps","_1","checkboxProps","_2","makeVAvatarProps","VAvatar","VChipGroupSymbol","makeVChipGroupProps","column","VChipGroup","VChip","makeVChipProps","activeClass","appendAvatar","draggable","filterIcon","pill","prependAvatar","onClickOnce","click","onKeyDown","preventDefault","hasAppendMedia","hasFilter","hasPrependMedia","tabindex","onKeydown","_vShow","ListKey","createList","parent","updateHasPrepend","useList","singleOpenStrategy","open","opened","parents","newOpened","multipleOpenStrategy","listOpenStrategy","_ref3","independentSelectStrategy","strategy","on","in","independentSingleSelectStrategy","parentStrategy","singleSelected","VNestedSymbol","emptyNested","openOnSelect","selectedValues","makeNestedProps","selectStrategy","openStrategy","useNested","_ref5","leafSingleSelectStrategy","_ref4","leafSelectStrategy","_ref6","childrenIds","everySelected","cid","noneSelected","_ref7","classicSelectStrategy","getPath","unshift","nested","parentId","isGroup","list","event","newSelected","useNestedItem","uidSymbol","computedId","isOpen","isIndeterminate","isLeaf","isGroupActivator","VListGroupActivator","_","useNestedGroupActivator","makeVListGroupProps","activeColor","baseColor","collapseIcon","expandIcon","fluid","VListGroup","_id","activatorProps","toggleIcon","activatorDefaults","VListItem","activator","VListItemSubtitle","VListItemTitle","makeVListItemProps","nav","subtitle","roundedProps","lineClasses","hasSubtitle","replacement","VListItemAction","resolveDirective","makeVListSubheaderProps","inset","sticky","VListSubheader","makeVDividerProps","thickness","vertical","VDivider","dividerStyles","makeVListChildrenProps","VListChildren","itemProps","raw","subheader","slotsWithItem","listGroupProps","makeItemsProps","itemTitle","itemValue","itemChildren","returnObject","transformItem","transformItems","array","useItems","useTransformItems","itemType","isPrimitive","makeVListProps","VList","useListItems","contentRef","onFocusin","onFocusout","relatedTarget","VListImg","makeVListItemActionProps","makeVListItemMediaProps","VListItemMedia","elementToViewport","point","anchorToPoint","locationStrategies","static","connected","contentStyles","isFixedPosition","activatorEl","assign","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","updateLocation","contentEl","contentBox","getIntrinsicSize","scrollParents","documentElement","viewport","scrollBox","viewportMargin","placement","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","hasOverflowY","newPlacement","flip","newOverflows","pixelRound","pixelCeil","newActivatorEl","newContentEl","oldActivatorEl","oldContentEl","makeLocationStrategyProps","locationStrategy","devicePixelRatio","ceil","clean","frames","raf","cancelAnimationFrame","frame","scrollStrategies","none","bindScroll","scrollElements","contained","scrollbarWidth","scrollableParent","scrollLeft","reposition","slow","ric","time","requestIdleCallback","cancelIdleCallback","makeScrollStrategyProps","scrollStrategy","VMenuSymbol","makeDelayProps","closeDelay","openDelay","useDelay","delays","runDelayFactory","runCloseDelay","runOpenDelay","makeActivatorProps","openOnClick","openOnHover","openOnFocus","closeOnContentClick","useActivator","isTop","isHovered","firstEnter","availableEvents","stopPropagation","sourceCapabilities","firesTouchEvents","activatorEvents","events","onMouseenter","onMouseleave","contentEvents","closeParents","scrimEvents","activatorRef","bindActivatorProps","getActivator","unbindActivatorProps","hasAttribute","_useActivator","breakpoints","DisplaySymbol","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","getClientWidth","ssr","getClientHeight","getPlatform","userAgent","regexp","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","createDisplay","parseDisplayOptions","platform","updateSize","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","useDisplay","display","useHydration","makeLazyProps","useLazy","hasContent","useScopeId","scopeId","StackSymbol","globalStack","defaultConditional","checkEvent","checkIsActive","ShadowRoot","host","include","closeConditional","handleShadow","ClickOutside","mounted","_clickOutside","lastMousedownWasOutside","directive","onMousedown","Scrim","makeVOverlayProps","attach","closeOnBack","contentProps","noClickAnimation","persistent","scrim","VOverlay","_disableGlobalStack","afterLeave","teleportTarget","_target","targetElement","body","scrimColor","globalTop","localTop","stackStyles","disableGlobalStack","createStackEntry","stack","activeChildren","_zIndex","lastZIndex","_isTop","useStack","onResize","useLocationStrategies","onClickOutside","animateClick","useScrollStrategies","router","removeBefore","removeAfter","popped","onPopstate","replaced","beforeEach","afterEach","useBackButton","scrollParent","Teleport","persisted","Refs","getDescriptor","currentObj","descriptor","getOwnPropertyDescriptor","getPrototypeOf","forwardRefs","bind","setupState","childRefs","queue","makeVMenuProps","VMenu","overlay","openChildren","onFocusIn","tabIndex","onActivatorKeydown","overlayProps","ΨopenChildren","makeVCounterProps","VCounter","functional","makeVFieldLabelProps","VFieldLabel","makeVFieldProps","appendInnerIcon","clearable","clearIcon","dirty","persistentClear","prependInnerIcon","singleLine","VField","hasLabel","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","targetRect","targetWidth","targetStyle","transitionDuration","isOutlined","hasClear","filterFieldProps","activeTypes","makeVTextFieldProps","autofocus","counterValue","persistentPlaceholder","persistentCounter","suffix","modelModifiers","VTextField","maxlength","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","selectionStart","selectionEnd","hasCounter","fieldProps","fieldClass","inputNode","cloneVNode","makeVVirtualScrollItemProps","renderless","VVirtualScrollItem","itemRef","makeVirtualProps","itemHeight","useVirtual","baseItemHeight","containerRef","sizeMap","visibleItems","calculateOffset","lastScrollTop","computedItems","paddingTop","scrollToIndex","handleScroll","midPointIndex","middle","middleOffset","calculateMidPointIndex","firstIndex","lastIndex","handleItemResize","makeVVirtualScrollProps","VVirtualScroll","useScrolling","listRef","textFieldRef","isScrolling","scrollTimeout","onListScroll","onListKeydown","scrollTo","finishScrolling","makeSelectProps","chips","closableChips","hideNoData","hideSelected","menuIcon","menuProps","openOnClear","itemColor","makeVSelectProps","VSelect","vTextFieldRef","vMenuRef","_menu","transformed","selections","itemRawValue","modelRawValue","selection","keyboardLookupLastTime","keyboardLookupPrefix","displayItems","menuDisabled","onMousedownControl","isPrintableChar","noModifier","altKey","checkPrintable","onModelUpdate","hasChips","chip","hasList","textFieldProps","inputmode","onScrollPassive","_createTextVNode","createTextVNode","defaultFilter","query","toLocaleLowerCase","makeFilterProps","customFilter","customKeyFilter","filterKeys","filterMode","noFilter","useFilter","filteredItems","filteredMatches","transformedItems","_query","strQuery","customFiltersLength","loop","customMatches","defaultMatches","keyFilter","defaultMatchesLength","customMatchesLength","filterItems","originalItems","_filteredItems","_filteredMatches","getMatches","makeVAutocompleteProps","autoSelectFirst","search","VAutocomplete","listHasFocus","selectionIndex","filteredItem","highlightFirst","onMousedownMenuIcon","originalSelectionIndex","setSelectionRange","onUpdateModelValue","isSelecting","highlightResult","makeVBadgeProps","bordered","dot","textColor","VBadge","badgeAttrs","makeVBannerActionsProps","VBannerActions","VBannerText","makeVBannerProps","avatar","VBanner","actions","makeVBottomNavigationProps","grow","VBottomNavigation","makeVBreadcrumbsDividerProps","VBreadcrumbsDivider","makeVBreadcrumbsItemProps","VBreadcrumbsItem","makeVBreadcrumbsProps","VBreadcrumbs","VCardActions","VCardSubtitle","VCardTitle","makeCardItemProps","VCardItem","VCardText","makeVCardProps","hover","VCard","hasHeader","hasCardItem","touchstart","wrapper","changedTouches","touchstartX","touchstartY","originalEvent","touchend","touchendX","touchendY","handleGesture","touchmove","touchmoveX","touchmoveY","move","Touch","createHandlers","_touchHandlers","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","continuous","nextIcon","prevIcon","showArrows","VWindow","rootRef","isRtlReverse","transitionCount","transitionHeight","activeIndex","itemsLength","canMoveBack","canMoveForward","arrows","prevProps","nextProps","touchOptions","makeVCarouselProps","cycle","delimiterIcon","hideDelimiters","hideDelimiterBackground","interval","verticalDelimiters","VCarousel","windowRef","slideTimeout","startTimeout","restartTimeout","windowProps","makeVWindowItemProps","reverseTransition","VWindowItem","groupItem","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","makeVCarouselItemProps","VCarouselItem","imgProps","windowItemProps","VCode","VColorPickerCanvas","dotSize","makeVColorPickerCanvasProps","hue","isInteracting","isOutsideUpdate","dotPosition","dotStyles","canvasRef","canvasWidth","canvasHeight","updateDotPosition","handleMouseDown","handleMouseMove","handleMouseUp","coords","getEventCoordinates","updateCanvas","canvas","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","deep","onTouchstart","nullColor","inputs","getValue","getColor","hexa","modes","VColorPickerInput","VColorPickerEdit","m","makeVColorPickerEditProps","enabledModes","mi","VSliderSymbol","makeSliderProps","thumbColor","thumbLabel","thumbSize","showTicks","ticks","tickSize","trackColor","trackFillColor","trackSize","useSteps","decimals","roundValue","clamped","useSlider","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","horizontalDirection","hd","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","trackStart","trackLength","clickOffset","getPosition","clickPos","handleStop","handleStart","moveListenerOptions","capture","onMouseMove","onSliderMouseUp","onSliderTouchend","percentage","parsedTicks","hasLabels","onSliderMousedown","onSliderTouchstart","makeVSliderThumbProps","VSliderThumb","slider","relevantKeys","multipliers","_step","multiplier","parseKeydown","positionPercentage","makeVSliderTrackProps","VSliderTrack","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","tick","directionProperty","directionValue","makeVSliderProps","VSlider","thumbContainerRef","roundedValue","trackStop","onTouchstartPassive","VColorPickerPreview","hideAlpha","makeVColorPickerPreviewProps","red","lighten5","lighten4","lighten3","lighten2","lighten1","darken1","darken2","darken3","darken4","accent1","accent2","accent3","accent4","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","grey","shades","black","white","transparent","VColorPickerSwatches","swatches","parseDefaultColors","makeVColorPickerSwatchesProps","swatch","makeVSheetProps","VSheet","VColorPicker","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","makeVColorPickerProps","lastPickedColor","currentColor","converted","stripAlpha","extractColor","updateColor","sheetProps","makeVComboboxProps","delimiters","VCombobox","cleared","_search","makeVDialogProps","fullscreen","retainFocus","scrollable","VDialog","firstElement","lastElement","preventScroll","VExpansionPanelSymbol","makeVExpansionPanelsProps","VExpansionPanels","variantClass","VExpansionPanel","VExpansionPanelTitle","makeVExpansionPanelTextProps","VExpansionPanelText","expansionPanel","makeVExpansionPanelTitleProps","hideActions","expanded","makeVExpansionPanelProps","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","makeVFileInputProps","counterSizeString","counterString","showSize","VFileInput","files","totalBytes","totalBytesReadable","fileNames","fileCount","onClickPrepend","makeVFooterProps","VFooter","autoHeight","makeVFormProps","VForm","errors","valid","invalid","itemErrorMessages","createForm","formRef","onReset","onSubmit","_e","ready","catch","finally","defaultPrevented","novalidate","makeVContainerProps","VContainer","breakpointProps","offsetProps","orderProps","propMap","col","breakpointClass","ALIGN_SELF_VALUES","makeVColProps","cols","alignSelf","VCol","hasColClasses","ALIGNMENT","SPACE","makeRowProps","def","ALIGN_VALUES","alignValidator","alignProps","JUSTIFY_VALUES","justifyValidator","justifyProps","ALIGN_CONTENT_VALUES","alignContentValidator","alignContentProps","justify","alignContent","classMap","makeVRowProps","dense","noGutters","VRow","VSpacer","makeVHoverProps","VHover","isHovering","VItemGroupSymbol","makeVItemGroupProps","VItemGroup","VItem","VKbd","makeVLayoutProps","VLayout","makeVLayoutItemProps","VLayoutItem","makeVLazyProps","VLazy","makeVLocaleProviderProps","VLocaleProvider","makeVMainProps","VMain","kineticEnergyToVelocity","work","calculateImpulseVelocity","samples","vprev","vcurr","useVelocity","addMovement","identifier","timeStamp","endTouch","getVelocity","newest","absX","absY","oops","locations","makeVNavigationDrawerProps","disableResizeWatcher","disableRouteWatcher","expandOnHover","permanent","rail","railWidth","temporary","touchless","VNavigationDrawer","rootEl","isTemporary","isSticky","currentRoute","isDragging","dragProgress","dragStyles","onTouchmove","onTouchend","maybeDragging","pos","getProgress","limit","touchX","touchY","inTouchZone","inElement","cancelable","velocity","vx","vy","thresholdMet","useTouch","isStuck","stickyStyles","stuckPosition","scrollY","layoutTop","bodyScroll","useSticky","scrimStyles","VNoSsr","makeVPaginationProps","totalVisible","firstIcon","lastIcon","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","VPagination","maxButtons","firstItem","totalWidth","itemWidth","marginRight","getMax","minButtons","floor","MAX_SAFE_INTEGER","even","rangeLength","rangeStart","setValue","updateRef","onBeforeUpdate","useRefs","VPaginationBtn","ariaCurrent","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","makeVParallaxProps","VParallax","displayHeight","Document","scrollPos","translate","sign","sizeScale","onLoadstart","makeVRadioProps","VRadio","makeVRadioGroupProps","VRadioGroup","controlProps","makeVRangeSliderProps","strict","VRangeSlider","startThumbRef","stopThumbRef","stopOffset","makeVRatingProps","itemAriaLabel","emptyIcon","fullIcon","halfIncrements","itemLabels","itemLabelPosition","VRating","increments","hoverIndex","itemState","isFilled","eventState","VRatingItem","showStar","btnProps","createLabel","labelProps","bias","calculateUpdatedOffset","selectedElement","containerSize","contentSize","currentScrollOffset","clientSize","offsetStart","adjustedOffsetStart","totalSize","itemOffset","additionalOffset","VSlideGroupSymbol","makeVSlideGroupProps","centerActive","VSlideGroup","isOverflowing","scrollOffset","containerRect","firstSelectedIndex","lastSelectedIndex","offsetCentered","calculateCenteredOffset","disableTransition","startTouch","maxScrollOffset","composedPath","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","newAbsoluteOffset","scrollAmount","willChange","hasAffixes","hasPrev","hasNext","onTouchmovePassive","onTouchendPassive","VSlideGroupItem","slideGroupItem","makeVSnackbarProps","multiLine","VSnackbar","activeTimeout","onPointerenter","onPointerleave","makeVSwitchProps","VSwitch","update:modelValue","loaderColor","control","makeVSystemBarProps","VSystemBar","VTabsSymbol","makeVTabProps","fixed","sliderColor","hideSlider","VTab","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevEl","nextEl","prevBox","nextBox","xy","XY","rightBottom","widthHeight","sigma","makeVTabsProps","alignTabs","fixedTabs","parsedItems","parseItems","slideGroupProps","makeVTableProps","fixedHeader","fixedFooter","VTable","makeVTextareaProps","autoGrow","noResize","rows","maxRows","VTextarea","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","padding","lineHeight","newHeight","_vModelText","makeVThemeProviderProps","withBackground","VThemeProvider","makeVTimelineProps","lineInset","lineThickness","lineColor","truncateLine","VTimeline","VTimelineDivider","VTimelineItem","sideClasses","truncateClasses","makeVTimelineDividerProps","dotColor","fillDot","hideDot","iconColor","lineColorClasses","lineColorStyles","makeVTimelineItemProps","hideOpposite","dotRef","makeVToolbarItemsProps","VToolbarItems","makeVTooltipProps","VTooltip","VValidation","validation","_mutate","Mutate","modifierKeys","attributes","attr","characterData","childList","subtree","sub","MutationObserver","mutations","Resize","_onResize","self","arg","_onScroll","Scroll","firstDay","AD","AE","AF","AG","AI","AL","AM","AN","AR","AS","AT","AU","AX","AZ","BA","BD","BE","BG","BH","BM","BN","BR","BS","BT","BW","BY","BZ","CA","CH","CL","CM","CN","CO","CR","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","ET","FI","FJ","FO","FR","GB","GE","GF","GP","GR","GT","GU","HK","HN","HR","HU","ID","IE","IL","IN","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KR","KW","KZ","LA","LB","LI","LK","LT","LU","LV","LY","MC","MD","ME","MH","MK","MM","MN","MO","MQ","MT","MV","MX","MY","MZ","NI","NL","NO","NP","NZ","OM","PA","PE","PH","PK","PL","PR","PT","PY","QA","RE","RO","RS","RU","SA","SD","SE","SG","SI","SK","SM","SV","SY","TH","TJ","TM","TR","TT","TW","UA","UM","US","UY","UZ","VA","VE","VI","VN","WS","XK","YE","ZA","ZW","startOfMonth","date","getFullYear","getMonth","endOfMonth","_YYYMMDD","parsed","parts","parseLocalDate","parse","sundayJanuarySecond2000","isAfter","comparing","isEqual","VuetifyDateAdapter","toJsDate","addDays","setDate","getDate","addMonths","setMonth","getWeekArray","weeks","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","getDay","lastDayWeekIndex","adjacentDay","day","formatString","weekday","month","year","timeZone","timeZoneName","DateTimeFormat","isWithinRange","isBefore","isSameDay","isSameMonth","setYear","setFullYear","getDiff","getWeekdays","daysFromSunday","getYear","startOfYear","endOfYear","DateAdapterSymbol","createDate","createVuetify","blueprint","components","$nuxt","hook","mount","__VUE_OPTIONS_API__","mixin","$vuetify","call","appContext","version","_createVuetify"],"mappings":"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"}
|