{"version":3,"file":"vuetify.min.js","sources":["../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/color/APCA.ts","../src/util/console.ts","../src/util/color/transformCIELAB.ts","../src/util/color/transformSRGB.ts","../src/util/colorUtils.ts","../src/util/propsFactory.ts","../src/composables/component.ts","../src/util/getCurrentInstance.ts","../src/composables/defaults.ts","../src/util/injectSelf.ts","../src/util/defineComponent.tsx","../src/util/createSimpleFunctional.ts","../src/util/dom.ts","../src/util/easing.ts","../src/util/events.ts","../src/util/getScrollParent.ts","../src/util/useRender.ts","../src/composables/icons.tsx","../src/iconsets/mdi.ts","../src/blueprints/md1.ts","../src/blueprints/md2.ts","../src/blueprints/md3.ts","../src/composables/resizeObserver.ts","../src/composables/layout.ts","../src/composables/toggleScope.ts","../src/composables/proxiedModel.ts","../src/locale/en.ts","../src/locale/adapters/vuetify.ts","../src/composables/locale.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/color.ts","../src/composables/rounded.ts","../src/composables/transition.ts","../src/directives/intersect/index.ts","../src/components/VImg/VImg.tsx","../src/composables/border.ts","../src/composables/elevation.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/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/VAvatar/VAvatar.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/composables/display.ts","../src/composables/goto.ts","../src/components/VSlideGroup/helpers.ts","../src/components/VSlideGroup/VSlideGroup.tsx","../src/components/VChipGroup/VChipGroup.tsx","../src/components/VChip/VChip.tsx","../src/components/VList/list.ts","../src/composables/nested/activeStrategies.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.tsx","../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/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/VDialog/VDialog.tsx","../src/components/VBottomSheet/VBottomSheet.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.tsx","../src/components/VCard/VCardTitle.ts","../src/components/VCard/VCardItem.tsx","../src/components/VCard/VCardText.tsx","../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/composables/date/adapters/vuetify.ts","../src/composables/date/date.ts","../src/components/VConfirmEdit/VConfirmEdit.tsx","../src/components/VDataTable/composables/expand.ts","../src/components/VDataTable/composables/group.ts","../src/components/VDataTable/composables/options.ts","../src/components/VDataTable/composables/paginate.ts","../src/components/VDataTable/composables/select.ts","../src/components/VDataTable/composables/sort.ts","../src/components/VDataIterator/composables/items.ts","../src/components/VDataIterator/VDataIterator.tsx","../src/components/VPagination/VPagination.tsx","../src/composables/refs.ts","../src/components/VDataTable/VDataTableFooter.tsx","../src/components/VDataTable/VDataTableColumn.tsx","../src/components/VDataTable/composables/headers.ts","../src/components/VDataTable/VDataTableHeaders.tsx","../src/components/VDataTable/VDataTableGroupHeaderRow.tsx","../src/components/VDataTable/VDataTableRow.tsx","../src/components/VDataTable/VDataTableRows.tsx","../src/components/VTable/VTable.tsx","../src/components/VDataTable/composables/items.ts","../src/components/VDataTable/VDataTable.tsx","../src/components/VDataTable/VDataTableVirtual.tsx","../src/components/VDataTable/VDataTableServer.tsx","../src/components/VGrid/VContainer.tsx","../src/components/VGrid/VCol.ts","../src/components/VGrid/VRow.ts","../src/components/VGrid/VSpacer.ts","../src/components/VDatePicker/VDatePickerControls.tsx","../src/components/VDatePicker/VDatePickerHeader.tsx","../src/composables/calendar.ts","../src/components/VDatePicker/VDatePickerMonth.tsx","../src/components/VDatePicker/VDatePickerMonths.tsx","../src/components/VDatePicker/VDatePickerYears.tsx","../src/labs/VPicker/VPickerTitle.ts","../src/labs/VPicker/VPicker.tsx","../src/components/VDatePicker/VDatePicker.tsx","../src/components/VEmptyState/VEmptyState.tsx","../src/components/VExpansionPanel/shared.ts","../src/components/VExpansionPanel/VExpansionPanelText.tsx","../src/components/VExpansionPanel/VExpansionPanelTitle.tsx","../src/components/VExpansionPanel/VExpansionPanel.tsx","../src/components/VExpansionPanel/VExpansionPanels.tsx","../src/components/VFab/VFab.tsx","../src/components/VFileInput/VFileInput.tsx","../src/components/VFooter/VFooter.tsx","../src/components/VForm/VForm.tsx","../src/components/VHover/VHover.tsx","../src/components/VInfiniteScroll/VInfiniteScroll.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/VOtpInput/VOtpInput.tsx","../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/VSkeletonLoader/VSkeletonLoader.tsx","../src/components/VSlideGroup/VSlideGroupItem.tsx","../src/components/VSnackbar/VSnackbar.tsx","../src/components/VSparkline/util/line.ts","../src/components/VSparkline/VBarline.tsx","../src/components/VSparkline/util/path.ts","../src/components/VSparkline/VTrendline.tsx","../src/components/VSparkline/VSparkline.tsx","../src/components/VSpeedDial/VSpeedDial.tsx","../src/components/VStepper/shared.ts","../src/components/VStepper/VStepperActions.tsx","../src/components/VStepper/VStepperHeader.ts","../src/components/VStepper/VStepperItem.tsx","../src/components/VStepper/VStepperWindow.tsx","../src/components/VStepper/VStepperWindowItem.tsx","../src/components/VStepper/VStepper.tsx","../src/components/VSwitch/VSwitch.tsx","../src/components/VSystemBar/VSystemBar.tsx","../src/components/VTabs/shared.ts","../src/components/VTabs/VTab.tsx","../src/components/VTabs/VTabsWindow.tsx","../src/components/VTabs/VTabsWindowItem.tsx","../src/components/VTabs/VTabs.tsx","../src/components/VTextarea/VTextarea.tsx","../src/components/VThemeProvider/VThemeProvider.tsx","../src/components/VTimeline/VTimelineDivider.tsx","../src/components/VTimeline/VTimelineItem.tsx","../src/components/VTimeline/VTimeline.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/directives/tooltip/index.ts","../src/composables/directiveComponent.ts","../src/framework.ts","../src/entry-bundler.ts"],"sourcesContent":["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)\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window\n","// Utilities\nimport { capitalize, Comment, computed, Fragment, isVNode, reactive, readonly, shallowRef, toRefs, unref, 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 ToRefs,\n VNode,\n VNodeArrayChildren,\n VNodeChild,\n WatchOptions,\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 | null, 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 | null | undefined // Ignored\n | string // Lookup by key, can use dot notation for nested objects\n | readonly (string | number)[] // Nested lookup by key, each array item is a key in the next level\n | ((item: T, fallback?: any) => any)\n\nexport function getPropertyFromItem (\n item: any,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property === true) return item === undefined ? fallback : item\n\n if (property == null || typeof property === 'boolean') return fallback\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 Record {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n\nexport function isPlainObject (obj: any): obj is Record {\n let proto\n return obj !== null && typeof obj === 'object' && (\n (proto = Object.getPrototypeOf(obj)) === Object.prototype ||\n proto === null\n )\n}\n\nexport function refElement (obj?: ComponentPublicInstance | HTMLElement): HTMLElement | undefined {\n if (obj && '$el' in obj) {\n const el = obj.$el as HTMLElement\n if (el?.nodeType === Node.TEXT_NODE) {\n // Multi-root component, use the first element\n return el.nextElementSibling as HTMLElement\n }\n return el\n }\n return 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 = 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: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\nexport function has (obj: object, key: T[]): obj is Record {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\ntype MaybePick<\n T extends object,\n U extends Extract\n> = Record extends T ? Partial> : Pick\n\n// Array of keys\nexport function pick<\n T extends object,\n U extends Extract\n> (obj: T, paths: U[]): MaybePick {\n const found: any = {}\n\n const keys = new Set(Object.keys(obj))\n for (const path of paths) {\n if (keys.has(path)) {\n found[path] = obj[path]\n }\n }\n\n return found\n}\n\n// Array of keys\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: U[], exclude?: E[]): [yes: MaybePick>, no: Omit>]\n// Array of keys or RegExp to test keys against\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial, no: Partial]\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial, no: Partial] {\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\n> (obj: T, exclude: U[]): Omit {\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\n> (obj: T, include: U[]): Pick {\n const clone = {} as T\n\n include.forEach(prop => clone[prop] = obj[prop])\n\n return clone\n}\n\nconst onRE = /^on[^a-z]/\nexport const isOn = (key: string) => onRE.test(key)\n\nconst bubblingEvents = [\n 'onAfterscriptexecute',\n 'onAnimationcancel',\n 'onAnimationend',\n 'onAnimationiteration',\n 'onAnimationstart',\n 'onAuxclick',\n 'onBeforeinput',\n 'onBeforescriptexecute',\n 'onChange',\n 'onClick',\n 'onCompositionend',\n 'onCompositionstart',\n 'onCompositionupdate',\n 'onContextmenu',\n 'onCopy',\n 'onCut',\n 'onDblclick',\n 'onFocusin',\n 'onFocusout',\n 'onFullscreenchange',\n 'onFullscreenerror',\n 'onGesturechange',\n 'onGestureend',\n 'onGesturestart',\n 'onGotpointercapture',\n 'onInput',\n 'onKeydown',\n 'onKeypress',\n 'onKeyup',\n 'onLostpointercapture',\n 'onMousedown',\n 'onMousemove',\n 'onMouseout',\n 'onMouseover',\n 'onMouseup',\n 'onMousewheel',\n 'onPaste',\n 'onPointercancel',\n 'onPointerdown',\n 'onPointerenter',\n 'onPointerleave',\n 'onPointermove',\n 'onPointerout',\n 'onPointerover',\n 'onPointerup',\n 'onReset',\n 'onSelect',\n 'onSubmit',\n 'onTouchcancel',\n 'onTouchend',\n 'onTouchmove',\n 'onTouchstart',\n 'onTransitioncancel',\n 'onTransitionend',\n 'onTransitionrun',\n 'onTransitionstart',\n 'onWheel',\n]\n\nconst compositionIgnoreKeys = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowRight',\n 'ArrowLeft',\n 'Enter',\n 'Escape',\n 'Tab',\n ' ',\n]\n\nexport function isComposingIgnoreKey (e: KeyboardEvent): boolean {\n return e.isComposing && compositionIgnoreKeys.includes(e.key)\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of an input component. Remaining\n * attributes should be passed to the element inside.\n */\nexport function filterInputAttrs (attrs: Record) {\n const [events, props] = pickWithRest(attrs, [onRE])\n const inputEvents = omit(events, bubblingEvents)\n const [rootAttrs, inputAttrs] = pickWithRest(props, ['class', 'style', 'id', /^data-/])\n Object.assign(rootAttrs, events)\n Object.assign(inputAttrs, inputEvents)\n return [rootAttrs, inputAttrs]\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 = 0 extends (1 & T) ? Y : N;\nexport function wrapInArray (\n v: T | null | undefined\n): T extends readonly any[]\n ? IfAny\n : NonNullable[] {\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 debounce (fn: Function, delay: MaybeRef) {\n let timeoutId = 0 as any\n const wrap = (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), unref(delay))\n }\n wrap.clear = () => {\n clearTimeout(timeoutId)\n }\n wrap.immediate = fn\n return wrap\n}\n\nexport function throttle any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters): void | ReturnType => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\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 chunkArray (array: any[], size = 1) {\n return Array.from({ length: Math.ceil(array.length / size) }, (v, i) =>\n array.slice(i * size, i * size + size)\n )\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 mergeDeep (\n source: Record = {},\n target: Record = {},\n arrayFn?: (a: unknown[], b: unknown[]) => unknown[],\n) {\n const out: Record = {}\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 plain objects\n if (isPlainObject(sourceProperty) && isPlainObject(targetProperty)) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n continue\n }\n\n if (arrayFn && Array.isArray(sourceProperty) && Array.isArray(targetProperty)) {\n out[key] = arrayFn(sourceProperty, targetProperty)\n\n continue\n }\n\n out[key] = targetProperty\n }\n\n return out\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 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()\n\nexport type MaybeRef = T | Ref\n\nexport function findChildrenWithProvide (\n key: InjectionKey | 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 (vnode.suspense) {\n return findChildrenWithProvide(key, vnode.ssContent!)\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 {\n readonly #arr: Array = []\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 =\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] extends [infer U] ? _NotAUnion : never\ntype _NotAUnion = 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 (getter: ComputedGetter>): ToRefs\nexport function destructComputed (getter: ComputedGetter) {\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\nexport function eventName (propName: string) {\n return propName[2].toLowerCase() + propName.slice(3)\n}\n\nexport type EventProp void> = F\nexport const EventProp = () => [Function, Array] as PropType>\n\nexport function hasEvent (props: Record, 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 (handler: EventProp | 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\nexport function ensureValidVNode (vnodes: VNodeArrayChildren): VNodeArrayChildren | null {\n return vnodes.some(child => {\n if (!isVNode(child)) return true\n if (child.type === Comment) return false\n return child.type !== Fragment ||\n ensureValidVNode(child.children as VNodeArrayChildren)\n })\n ? vnodes\n : null\n}\n\nexport function defer (timeout: number, cb: () => void) {\n if (!IN_BROWSER || timeout === 0) {\n cb()\n\n return () => {}\n }\n\n const timeoutId = window.setTimeout(cb, timeout)\n\n return () => window.clearTimeout(timeoutId)\n}\n\nexport function eagerComputed (fn: () => T, options?: WatchOptions): Readonly> {\n const result = shallowRef()\n\n watchEffect(() => {\n result.value = fn()\n }, {\n flush: 'sync',\n ...options,\n })\n\n return readonly(result)\n}\n\nexport function isClickInsideElement (event: MouseEvent, targetDiv: HTMLElement) {\n const mouseX = event.clientX\n const mouseY = event.clientY\n\n const divRect = targetDiv.getBoundingClientRect()\n const divLeft = divRect.left\n const divTop = divRect.top\n const divRight = divRect.right\n const divBottom = divRect.bottom\n\n return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom\n}\n\nexport type TemplateRef = {\n (target: Element | ComponentPublicInstance | null): void\n value: HTMLElement | ComponentPublicInstance | null | undefined\n readonly el: HTMLElement | undefined\n}\nexport function templateRef () {\n const el = shallowRef()\n const fn = (target: HTMLElement | ComponentPublicInstance | null) => {\n el.value = target\n }\n Object.defineProperty(fn, 'value', {\n enumerable: true,\n get: () => el.value,\n set: val => el.value = val,\n })\n Object.defineProperty(fn, 'el', {\n enumerable: true,\n get: () => refElement(el.value),\n })\n\n return fn as TemplateRef\n}\n\nexport 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","// 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\nexport function getTargetBox (target: HTMLElement | [x: number, y: number]) {\n if (Array.isArray(target)) {\n return new Box({\n x: target[0],\n y: target[1],\n width: 0,\n height: 0,\n })\n } else {\n return target.getBoundingClientRect()\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 void]>>()\n\nexport function bindProps (el: HTMLElement, props: Record) {\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) {\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","/**\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","/* 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 { APCAcontrast } from './color/APCA'\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\nexport function isParsableColor (color: string): boolean {\n return isCssColor(color) && !/^((rgb|hsl)a?\\()?var\\(--/.test(color)\n}\n\nconst cssColorRe = /^(?(?:rgb|hsl)a?)\\((?.+)\\)/\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>,\n currentTheme: Partial,\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>,\n currentTheme: Partial,\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\nexport function getForeground (color: Color) {\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), parseColor(color)))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), parseColor(color)))\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 return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n}\n","// 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) => 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 = {}>(\n defaults?: Defaults\n ): AppendDefault => {\n return Object.keys(props).reduce((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> = {\n [P in keyof T]-?: unknown extends D[P]\n ? T[P]\n : T[P] extends Record\n ? Omit & {\n type: PropType>\n default: MergeDefault\n }\n : {\n type: PropType>\n default: MergeDefault\n }\n}\n\ntype MergeTypeDefault> = unknown extends D\n ? P\n : (P | D)\ntype MergeDefault> = unknown extends D\n ? P\n : (NonNullable

| D)\n\n/**\n * Like `Partial` but doesn't care what the value is\n */\ntype PartialKeys = { [P in keyof T]?: unknown }\n\n// Copied from Vue\ntype InferPropType = [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\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\n : InferPropType\n : [T] extends [Prop]\n ? unknown extends V\n ? IfAny\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, Object] as PropType,\n style: {\n type: [String, Array, Object] as PropType,\n default: null,\n },\n}, 'component')\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()\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","// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\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\n global?: Record\n}\n\nexport type DefaultsOptions = Partial\n\nexport const DefaultsSymbol: InjectionKey> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref {\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,\n options?: {\n disabled?: MaybeRef\n reset?: MaybeRef\n root?: MaybeRef\n scoped?: MaybeRef\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 if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\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\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 = {},\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] !== undefined ? componentDefaults.value?.[prop]\n : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop]\n : 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 _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record\nexport function useDefaults (\n props: Record = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n","// Utilities\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\n\n// Types\nimport type { ComponentInternalInstance, InjectionKey } from 'vue'\n\nexport function injectSelf(key: InjectionKey | string, vm?: ComponentInternalInstance): T | undefined\nexport function injectSelf (key: InjectionKey | string, vm = getCurrentInstance('injectSelf')) {\n const { provides } = vm\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","// 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 Component,\n ComponentCustomProps,\n ComponentInjectOptions,\n ComponentObjectPropsOptions,\n ComponentOptions,\n ComponentOptionsMixin,\n ComponentOptionsWithObjectProps,\n ComponentOptionsWithoutProps,\n ComponentPropsOptions,\n ComponentPublicInstance,\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\n\n// Object Props\nexport function defineComponent<\n PropsOptions extends Readonly,\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 & FilterPropsOptions\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).filter(key => key !== 'class' && key !== 'style')\n options.filterProps = function filterProps (props: Record) {\n return pick(props, propKeys)\n }\n\n options.props._as = String\n options.setup = function setup (props: Record, 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 = { [K in T]: K extends `on${infer U}` ? Uncapitalize : K }[T]\n\nexport type SlotsToProps<\n U extends RawSlots,\n T = MakeInternalSlots\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\ntype Slot = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild\ntype VueSlot = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[]\ntype MakeInternalSlots = {\n [K in keyof T]: Slot\n}\ntype MakeSlots = {\n [K in keyof T]: VueSlot\n}\n\nexport type GenericProps> = {\n $props: Props & SlotsToProps\n $slots: MakeSlots\n}\n\ntype DefineComponentWithGenericProps, slots: RawSlots) => {\n $props?: Record\n})> = <\n PropsOptions extends Readonly,\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,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n // Slots extends RawSlots = ConstructorParameters extends [any, infer SS extends RawSlots | undefined] ? Exclude : {},\n Slots extends RawSlots = ConstructorParameters[1],\n S extends SlotsType = SlotsType>>,\n III = InstanceType,\n P = III extends Record<'$props', any>\n ? Omit\n : PropsOptions,\n EEE extends EmitsOptions = E extends any[]\n ? E\n : III extends Record<'$props', any>\n ? Omit>\n : E,\n Base = DefineComponent<\n P,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n EEE,\n EE,\n PublicProps,\n ExtractPropTypes

& ({} extends E ? {} : EmitsToProps),\n ExtractDefaultPropTypes

,\n S\n >\n>(\n options: ComponentOptionsWithObjectProps\n) => Base & T & FilterPropsOptions\n\ntype DefineComponentWithSlots = <\n PropsOptions extends Readonly,\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,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n S extends SlotsType = SlotsType>>,\n>(\n options: ComponentOptionsWithObjectProps\n) => DefineComponent<\n ExtractPropTypes & SlotsToProps,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n PublicProps,\n ExtractPropTypes & SlotsToProps & ({} extends E ? {} : EmitsToProps),\n ExtractDefaultPropTypes,\n S\n> & FilterPropsOptions\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, slots: any) => {\n $props?: Record\n})> (exposeDefaults?: boolean): DefineComponentWithGenericProps\n\n// Slots argument - simple slots\nexport function genericComponent<\n Slots extends RawSlots\n> (exposeDefaults?: boolean): DefineComponentWithSlots\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,\n PropsOptions = ComponentObjectPropsOptions,\n Defaults = ExtractDefaultPropTypes,\n Props = Readonly>,\n> (props: PropsOptions, render: T): FunctionalComponent & Omit> {\n render.props = props as any\n return render as any\n}\n\ntype EmitsToProps = T extends string[]\n ? {\n [K in string & `on${Capitalize}`]?: (...args: any[]) => any\n }\n : T extends ObjectEmitsOptions\n ? {\n [K in string &\n `on${Capitalize}`]?: K extends `on${infer C}`\n ? T[Uncapitalize] extends null\n ? (...args: any[]) => any\n : (\n ...args: T[Uncapitalize] 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, Props = ExtractPropTypes> {\n filterProps<\n T extends Partial,\n U extends Exclude>\n > (props: T): Partial>\n}\n\n// https://github.com/vuejs/core/pull/10557\nexport type ComponentInstance = T extends { new (): ComponentPublicInstance }\n ? InstanceType\n : T extends FunctionalComponent\n ? ComponentPublicInstance>\n : T extends Component<\n infer Props,\n infer RawBindings,\n infer D,\n infer C,\n infer M\n >\n ? // NOTE we override Props/RawBindings/D to make sure is not `unknown`\n ComponentPublicInstance<\n unknown extends Props ? {} : Props,\n unknown extends RawBindings ? {} : RawBindings,\n unknown extends D ? {} : D,\n C,\n M\n >\n : never // not a vue Component\n\ntype ShortEmitsToObject = E extends Record ? {\n [K in keyof E]: (...args: E[K]) => any;\n} : E;\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 { isOn } from '@/util/helpers'\n\ntype EventHandler = (event: Event) => any\n\nexport function getPrefixedEventHandlers (\n attrs: Record,\n suffix: T,\n getData: EventHandler\n): Record<`${string}${T}`, EventHandler> {\n return Object.keys(attrs)\n .filter(key => isOn(key) && key.endsWith(suffix))\n .reduce((acc: any, key) => {\n acc[key.slice(0, -suffix.length)] = (event: Event) => attrs[key](event, getData(event))\n return acc\n }, {} as Record<`${string}${T}`, EventHandler>)\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 './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","// Icons\nimport { aliases, mdi } from '@/iconsets/mdi'\n\n// Utilities\nimport { computed, inject, unref } from 'vue'\nimport { consoleWarn, defineComponent, genericComponent, mergeDeep, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, FunctionalComponent, InjectionKey, PropType, Ref } from 'vue'\n\nexport type JSXComponent =\n | { new (): ComponentPublicInstance }\n | FunctionalComponent\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | JSXComponent\nexport const IconValue = [String, Function, Object, Array] as PropType\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\n\nexport interface IconSet {\n component: IconComponent\n}\n\nexport type InternalIconOptions = {\n defaultSet: string\n aliases: Partial\n sets: Record\n}\n\nexport type IconOptions = Partial\n\ntype IconInstance = {\n component: IconComponent\n icon?: IconValue\n}\n\nexport const IconSymbol: InjectionKey = 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 \n { props.icon ? : slots.default?.() }\n \n )\n }\n },\n})\nexport type VComponentIcon = InstanceType\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 \n \n { Array.isArray(props.icon)\n ? props.icon.map(path => (\n Array.isArray(path)\n ? \n : \n ))\n : \n }\n \n \n )\n }\n },\n})\nexport type VSvgIcon = InstanceType\n\nexport const VLigatureIcon = defineComponent({\n name: 'VLigatureIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return { props.icon }\n }\n },\n})\nexport type VLigatureIcon = InstanceType\n\nexport const VClassIcon = defineComponent({\n name: 'VClassIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return \n }\n },\n})\nexport type VClassIcon = InstanceType\n\nfunction genDefaults (): Record {\n return {\n svg: {\n component: VSvgIcon,\n },\n class: {\n component: VClassIcon,\n },\n }\n}\n\n// Composables\nexport function createIcons (options?: IconOptions) {\n const sets = genDefaults()\n const defaultSet = options?.defaultSet ?? 'mdi'\n\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi\n }\n\n return mergeDeep({\n defaultSet,\n sets,\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 'vuetify-play': [\n 'm6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z',\n ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6],\n ],\n /* eslint-enable max-len */\n },\n }, options) as InternalIconOptions\n}\n\nexport const useIcon = (props: Ref) => {\n const icons = inject(IconSymbol)\n\n if (!icons) throw new Error('Missing Vuetify Icons provide!')\n\n const iconData = computed(() => {\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) consoleWarn(`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","// 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 treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\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 { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md1: Blueprint = {\n defaults: {\n global: {\n rounded: 'sm',\n },\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'underlined',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n color: 'primary',\n rounded: 0,\n },\n VCheckbox: {\n color: 'secondary',\n },\n VCombobox: {\n variant: 'underlined',\n },\n VSelect: {\n variant: 'underlined',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'underlined',\n },\n VTextField: {\n variant: 'underlined',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#3F51B5',\n 'primary-darken-1': '#303F9F',\n 'primary-lighten-1': '#C5CAE9',\n secondary: '#FF4081',\n 'secondary-darken-1': '#F50057',\n 'secondary-lighten-1': '#FF80AB',\n accent: '#009688',\n },\n },\n },\n },\n}\n","// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md2: Blueprint = {\n defaults: {\n global: {\n rounded: 'md',\n },\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'filled',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n color: 'primary',\n },\n VCheckbox: {\n color: 'secondary',\n },\n VCombobox: {\n variant: 'filled',\n },\n VSelect: {\n variant: 'filled',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'filled',\n },\n VTextField: {\n variant: 'filled',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n },\n },\n },\n },\n}\n","// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md3: Blueprint = {\n defaults: {\n VAppBar: {\n flat: true,\n },\n VAutocomplete: {\n variant: 'filled',\n },\n VBanner: {\n color: 'primary',\n },\n VBottomSheet: {\n contentClass: 'rounded-t-xl overflow-hidden',\n },\n VBtn: {\n color: 'primary',\n rounded: 'xl',\n },\n VBtnGroup: {\n rounded: 'xl',\n VBtn: { rounded: null },\n },\n VCard: {\n rounded: 'lg',\n },\n VCheckbox: {\n color: 'secondary',\n inset: true,\n },\n VChip: {\n rounded: 'sm',\n },\n VCombobox: {\n variant: 'filled',\n },\n VNavigationDrawer: {\n // VList: {\n // nav: true,\n // VListItem: {\n // rounded: 'xl',\n // },\n // },\n },\n VSelect: {\n variant: 'filled',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'filled',\n },\n VTextField: {\n variant: 'filled',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6750a4',\n secondary: '#b4b0bb',\n tertiary: '#7d5260',\n error: '#b3261e',\n surface: '#fffbfe',\n },\n },\n },\n },\n}\n","// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport { templateRef } from '@/util'\nimport { IN_BROWSER } from '@/util/globals'\n\n// Types\nimport type { DeepReadonly, Ref } from 'vue'\nimport type { TemplateRef } from '@/util'\n\ninterface ResizeState {\n resizeRef: TemplateRef\n contentRect: DeepReadonly>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback, box: 'content' | 'border' = 'content'): ResizeState {\n const resizeRef = templateRef()\n const contentRect = ref()\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.el, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(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\nexport type 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\n position: Ref\n layoutSize: Ref\n elementSize: Ref\n active: Ref\n disableTransitions?: Ref\n absolute: Ref\n }\n ) => {\n layoutItemStyles: Ref\n layoutItemScrimStyles: Ref\n zIndex: Ref\n }\n unregister: (id: string) => void\n mainRect: Ref\n mainStyles: Ref\n getLayoutItem: (id: string) => LayoutItem | undefined\n items: Ref\n layoutRect: Ref\n rootZIndex: Ref\n}\n\nexport const VuetifyLayoutKey: InjectionKey = 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,\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\n position: Ref\n layoutSize: Ref\n elementSize: Ref\n active: Ref\n disableTransitions?: Ref\n absolute: Ref\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>,\n layoutSizes: Map>,\n activeItems: Map>,\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([])\n const positions = reactive(new Map>())\n const layoutSizes = reactive(new Map>())\n const priorities = reactive(new Map>())\n const activeItems = reactive(new Map>())\n const disabledTransitions = reactive(new Map>())\n const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n const computedOverlaps = computed(() => {\n const map = new Map()\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(() => {\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(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right'\n const isOppositeHorizontal = position.value === 'right'\n const isOppositeVertical = position.value === 'bottom'\n const size = elementSize.value ?? layoutSize.value\n const unit = size === 0 ? '%' : 'px'\n\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,\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(() => ({\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: parentLayout ? rootZIndex.value : undefined,\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","// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue'\n\n// Types\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource, 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, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { EventProp } from '@/util'\n\ntype InnerVal = T extends any[] ? Readonly : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: EventProp | undefined },\n Prop extends Extract,\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\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> & { 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","export default {\n badge: 'Badge',\n open: 'Open',\n close: 'Close',\n dismiss: 'Dismiss',\n confirmEdit: {\n ok: 'OK',\n cancel: 'Cancel',\n },\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 itemsSelected: '{0} selected',\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 today: 'Today',\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 title: 'Select Time',\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","// 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,\n fallback: Ref,\n messages: Ref,\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, fallback: Ref) {\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 (props: any, prop: string, provided: Ref) {\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\n}\n\nfunction createProvideFunction (state: { current: Ref, fallback: Ref, messages: Ref }) {\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 { 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\n current: Ref\n fallback: Ref\n t: (key: string, ...params: unknown[]) => string\n n: (value: number) => string\n provide: (props: LocaleOptions) => LocaleInstance\n}\n\nexport const LocaleSymbol: InjectionKey = 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\n}\n\nexport interface RtlProps {\n rtl?: boolean\n}\n\nexport interface RtlInstance {\n isRtl: Ref\n rtl: Ref>\n rtlClasses: Ref\n}\n\nexport const RtlSymbol: InjectionKey = Symbol.for('vuetify:rtl')\n\nfunction genDefaults () {\n return {\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 km: 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}\n\nexport function createRtl (i18n: LocaleInstance, options?: RtlOptions): RtlInstance {\n const rtl = ref>(options?.rtl ?? genDefaults())\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","// 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 getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\n\n// Types\nimport type { VueHeadClient } from '@unhead/vue'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record\n}\nexport type ThemeDefinition = DeepPartial\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record\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\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>\n\n readonly name: Readonly>\n readonly current: DeepReadonly>\n readonly computedThemes: DeepReadonly>>\n\n readonly themeClasses: Readonly>\n readonly styles: Readonly>\n\n readonly global: {\n readonly name: Ref\n readonly current: DeepReadonly>\n }\n}\n\nexport const ThemeSymbol: InjectionKey = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nfunction genDefaults () {\n return {\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-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\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-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#a3a3a3',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\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}\n\nfunction parseThemeOptions (options: ThemeOptions = genDefaults()): InternalThemeOptions {\n const defaults = genDefaults()\n\n if (!options) return { ...defaults, isDisabled: true } as any\n\n const themes: Record = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaults.themes?.dark\n : defaults.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaults,\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 = {}\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 theme.colors[onColor] = getForeground(colorVal)\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 & VueHeadClient | 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(() => {\n return props.theme ?? theme.name.value\n })\n const current = computed(() => theme.themes.value[name.value])\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n current,\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, getLayoutItem, items, layoutRef } = createLayout(props)\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n \n

\n { slots.default?.() }\n
\n \n ))\n\n return {\n getLayoutItem,\n items,\n theme,\n }\n },\n})\n\nexport type VApp = InstanceType\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()({\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 \n { hasText && (\n
\n { slots.text ? slots.text() : props.text }\n\n { slots.default?.() }\n
\n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VToolbarTitle = InstanceType\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,\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 group: Boolean,\n },\n\n setup (props, { slots }) {\n const tag = props.group ? TransitionGroup : Transition\n\n return () => {\n return h(tag as FunctionalComponent, {\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'\nimport { getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDialogTransitionProps = propsFactory({\n target: [Object, Array] as PropType,\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 \n )\n : \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 | [x: number, y: number], el: HTMLElement) {\n const targetBox = getTargetBox(target)\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\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\nexport type VDialogBottomTransition = InstanceType\nexport type VDialogTopTransition = InstanceType\nexport type VFadeTransition = InstanceType\nexport type VScaleTransition = InstanceType\nexport type VScrollXTransition = InstanceType\nexport type VScrollXReverseTransition = InstanceType\nexport type VScrollYTransition = InstanceType\nexport type VScrollYReverseTransition = InstanceType\nexport type VSlideXTransition = InstanceType\nexport type VSlideXReverseTransition = InstanceType\nexport type VSlideYTransition = InstanceType\nexport type VSlideYReverseTransition = InstanceType\nexport type VExpandTransition = InstanceType\nexport type VExpandXTransition = InstanceType\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,\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\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 const styles: Record = {}\n\n const height = convertToUnit(props.height)\n const maxHeight = convertToUnit(props.maxHeight)\n const maxWidth = convertToUnit(props.maxWidth)\n const minHeight = convertToUnit(props.minHeight)\n const minWidth = convertToUnit(props.minWidth)\n const width = convertToUnit(props.width)\n\n if (height != null) styles.height = height\n if (maxHeight != null) styles.maxHeight = maxHeight\n if (maxWidth != null) styles.maxWidth = maxWidth\n if (minHeight != null) styles.minHeight = minHeight\n if (minWidth != null) styles.minWidth = minWidth\n if (width != null) styles.width = width\n\n return styles\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: null,\n inline: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VResponsive')\n\nexport const VResponsive = genericComponent()({\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 \n
\n\n { slots.additional?.() }\n\n { slots.default && (\n
{ slots.default() }
\n )}\n
\n ))\n\n return {}\n },\n})\n\nexport type VResponsive = InstanceType\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } 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\n textColorStyles: Ref\n}\n\nexport interface BackgroundColorData {\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\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\n if (!colors.value.text && isParsableColor(colors.value.background)) {\n const backgroundColor = parseColor(colors.value.background)\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n const textColor = getForeground(backgroundColor)\n\n styles.color = textColor\n styles.caretColor = textColor\n }\n }\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): TextColorData\nexport function useTextColor , K extends string> (props: T, name: K): TextColorData\nexport function useTextColor , K extends string> (\n props: T | Ref,\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): BackgroundColorData\nexport function useBackgroundColor , K extends string> (props: T, name: K): BackgroundColorData\nexport function useBackgroundColor , K extends string> (\n props: T | Ref,\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 { 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\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n tile: Boolean,\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const tile = isRef(props) ? props.value : props.tile\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 } else if (tile || rounded === false) {\n classes.push('rounded-0')\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n","// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } 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,\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 group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(\n typeof transition === 'string'\n ? { name: disabled ? '' : transition }\n : customProps as any,\n typeof transition === 'string'\n ? {}\n : Object.fromEntries(Object.entries({ disabled, group }).filter(([_, v]) => v !== undefined)),\n rest as any,\n ),\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 {\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 { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\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 onBeforeUnmount,\n ref,\n shallowRef,\n toRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\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 absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String] as PropType,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType,\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,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent()({\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 { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { roundedClasses } = useRounded(props)\n const vm = getCurrentInstance('VImg')\n\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef()\n const naturalHeight = shallowRef()\n\n const normalisedSrc = computed(() => {\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 setTimeout(() => {\n if (vm.isUnmounted) return\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 if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n if (vm.isUnmounted) return\n\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n if (vm.isUnmounted) return\n\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\n onBeforeUnmount(() => {\n clearTimeout(timer)\n })\n\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n if (vm.isUnmounted) return\n\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 \n )\n\n const sources = slots.sources?.()\n\n return (\n \n {\n withDirectives(\n sources\n ? { sources }{ img }\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n \n )\n }\n\n const __preloadImage = () => (\n \n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n \n )}\n \n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n \n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n
{ slots.placeholder() }
\n }\n
\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n \n { state.value === 'error' &&\n
{ slots.error() }
\n }\n
\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return
\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 {{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n \n ),\n default: slots.default,\n }}\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType\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 { 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\n}\n\nexport function useElevation (props: ElevationProps | Ref): 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","// 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,\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()({\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 \n { hasImage && (\n
\n { !slots.image ? (\n \n ) : (\n \n )}\n
\n )}\n\n \n \n { slots.prepend && (\n
\n { slots.prepend?.() }\n
\n )}\n\n { hasTitle && (\n \n {{ text: slots.title }}\n \n )}\n\n { slots.default?.() }\n\n { slots.append && (\n
\n { slots.append?.() }\n
\n )}\n
\n \n\n \n \n { isExtended.value && (\n \n { extension }\n \n )}\n \n \n \n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType\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\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>\n}\n\nexport function useScroll (\n props: ScrollProps,\n args: ScrollArguments = {},\n) {\n const { canScroll } = args\n let previousScroll = 0\n let previousScrollHeight = 0\n const target = ref(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 const currentScrollHeight = targetEl instanceof Window ? document.documentElement.scrollHeight : targetEl.scrollHeight\n if (previousScrollHeight !== currentScrollHeight) {\n previousScrollHeight = currentScrollHeight\n return\n }\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 as PropType<'hide' | 'fully-hide' | 'inverted' | 'collapse' | 'elevate' | 'fade-image' | (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()({\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()\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 canHide = computed(() => (\n scrollBehavior.value.hide ||\n scrollBehavior.value.fullyHide\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.fullyHide &&\n !isActive.value\n ) || (\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 if (!canHide.value) return (height + extensionHeight)\n\n return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide\n ? (height + extensionHeight)\n : height\n })\n\n useToggleScope(computed(() => !!props.scrollBehavior), () => {\n watchEffect(() => {\n if (canHide.value) {\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 \n )\n })\n\n return {}\n },\n})\n\nexport type VAppBar = InstanceType\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,\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 && }\n\n \n \n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef,\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 baseColor: String,\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 baseColor: toRef(props, 'baseColor'),\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 \n )\n })\n },\n})\n\nexport type VBtnGroup = InstanceType\n","// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, 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'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: number\n value: Ref\n disabled: Ref\n useIndexAsValue?: boolean\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': EventProp<[unknown]> | 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>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref\n items: ComputedRef<{\n id: number\n value: unknown\n disabled: boolean | undefined\n }[]>\n disabled: Ref\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: number\n isSelected: Ref\n isFirst: Ref\n isLast: Ref\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref\n disabled: Ref\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,\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> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\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 const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === 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 }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\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\n) {\n let isUnmounted = false\n const items = reactive([])\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\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 (unref(unwrapped.value) == null) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\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 onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\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, 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, 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, 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'\nimport type { GenericProps } from '@/util'\n\nexport type BtnToggleSlotProps = 'isSelected' | 'select' | 'selected' | 'next' | 'prev'\nexport interface DefaultBtnToggleSlot extends Pick {}\n\nexport const VBtnToggleSymbol: InjectionKey = 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(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VBtnToggleSlots,\n) => GenericProps>()({\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 \n { slots.default?.({\n isSelected,\n next,\n prev,\n select,\n selected,\n })}\n \n )\n })\n\n return {\n next,\n prev,\n select,\n }\n },\n})\n\nexport type VBtnToggle = InstanceType\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 disabled: Boolean,\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()\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 const hasClick = !!(attrs.onClick || attrs.onClickOnce)\n\n return (\n \n { slotValue }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType\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()\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,\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()({\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()\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 \n \n \n\n \n \n\n { slots.default && (\n
\n { slots.default({ value: normalizedValue.value }) }\n
\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VProgressCircular = InstanceType\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 | null | undefined\n}\n\nexport const makeLocationProps = propsFactory({\n location: String as PropType,\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 { clamp, convertToUnit, genericComponent, IN_BROWSER, 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 bufferColor: String,\n bufferOpacity: [Number, String],\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 opacity: [Number, String],\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()({\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 {\n backgroundColorClasses,\n backgroundColorStyles,\n } = useBackgroundColor(computed(() => props.bgColor || props.color))\n const {\n backgroundColorClasses: bufferColorClasses,\n backgroundColorStyles: bufferColorStyles,\n } = useBackgroundColor(computed(() => props.bufferColor || props.bgColor || props.color))\n const {\n backgroundColorClasses: barColorClasses,\n backgroundColorStyles: barColorStyles,\n } = useBackgroundColor(props, 'color')\n const { roundedClasses } = useRounded(props)\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n\n const max = computed(() => parseFloat(props.max))\n const height = computed(() => parseFloat(props.height))\n const normalizedBuffer = computed(() => clamp(parseFloat(props.bufferValue) / max.value * 100, 0, 100))\n const normalizedValue = computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100))\n const isReversed = computed(() => isRtl.value !== props.reverse)\n const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition')\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches\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 \n { props.stream && (\n \n )}\n\n \n\n \n\n \n { !props.indeterminate ? (\n \n ) : (\n
\n {['long', 'short'].map(bar => (\n \n ))}\n
\n )}\n
\n\n { slots.default && (\n
\n { slots.default({ value: normalizedValue.value, buffer: normalizedBuffer.value }) }\n
\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VProgressLinear = InstanceType\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 absolute?: boolean\n active: boolean\n name: string\n color?: string\n } & ExtractPropTypes>,\n { slots }: SetupContext,\n) {\n return (\n
\n { slots.default?.({\n color: props.color,\n isActive: props.active,\n } as LoaderSlotProps) || (\n \n )}\n
\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,\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, reactive,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { deepEqual, 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 {\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>, 'href'> {\n isLink: ComputedRef\n isClickable: ComputedRef\n href: Ref\n linkProps: Record\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' || !('useLink' in RouterLink)) {\n const href = toRef(props, 'href')\n return {\n isLink,\n isClickable,\n href,\n linkProps: reactive({ href }),\n }\n }\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const linkProps = computed(() => ({\n ...props,\n to: toRef(() => props.to || ''),\n }))\n\n const routerLink = RouterLink.useLink(linkProps.value as UseLinkOptions)\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined)\n const route = useRoute()\n const isActive = computed(() => {\n if (!link.value) return false\n if (!props.exact) return link.value.isActive?.value ?? false\n if (!route.value) return link.value.isExactActive?.value ?? false\n\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query)\n })\n const href = computed(() => props.to ? link.value?.route.value.href : props.href)\n\n return {\n isLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': computed(() => isActive.value ? 'page' : undefined),\n }),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType,\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 {\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, withDirectives } 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 activeColor: String,\n baseColor: String,\n symbol: {\n type: null,\n default: VBtnToggleSymbol,\n },\n flat: Boolean,\n icon: [Boolean, String, Function, Object] as PropType,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n block: Boolean,\n readonly: Boolean,\n slim: Boolean,\n stacked: Boolean,\n\n ripple: {\n type: [Boolean, Object] as PropType,\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()({\n name: 'VBtn',\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 { 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\n const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color)\n const variantProps = computed(() => {\n const showColor = (\n (group?.isSelected.value && (!link.isLink.value || link.isActive?.value)) ||\n (!group || link.isActive?.value)\n )\n return ({\n color: showColor ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n })\n })\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\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 || typeof props.value === 'symbol') return undefined\n\n return Object(props.value) === props.value\n ? JSON.stringify(props.value, null, 0)\n : 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\n return withDirectives(\n \n { genOverlays(true, 'v-btn') }\n\n { !props.icon && hasPrepend && (\n \n { !slots.prepend ? (\n \n ) : (\n \n )}\n \n )}\n\n \n { (!slots.default && hasIcon) ? (\n \n ) : (\n \n { slots.default?.() ?? props.text }\n \n )}\n \n\n { !props.icon && hasAppend && (\n \n { !slots.append ? (\n \n ) : (\n \n )}\n \n )}\n\n { !!props.loading && (\n \n { slots.loader?.() ?? (\n \n )}\n \n )}\n ,\n [[\n Ripple,\n !isDisabled.value && props.ripple,\n '',\n { center: !!props.icon },\n ]]\n )\n })\n\n return { group }\n },\n})\n\nexport type VBtn = InstanceType\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()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType\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()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VAlertTitle = createSimpleFunctional('v-alert-title')\n\nexport type VAlertTitle = InstanceType\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,\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,\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,\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 }\n}\n\nexport const VAlert = genericComponent()({\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 \n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n \n )}\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n \n ) : (\n \n )}\n
\n )}\n\n
\n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n
\n\n { slots.append && (\n
\n { slots.append() }\n
\n )}\n\n { hasClose && (\n
\n { !slots.close ? (\n \n ) : (\n \n { slots.close?.({ props: closeProps.value }) }\n \n )}\n
\n )}\n \n )\n }\n },\n})\n\nexport type VAlert = InstanceType\n","// Styles\nimport './VAvatar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\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 { 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 text: String,\n\n ...makeBorderProps(),\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 { borderClasses } = useBorder(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 \n { !slots.default ? (\n props.image\n ? ()\n : props.icon\n ? ()\n : props.text\n ) : (\n \n { slots.default() }\n \n )}\n\n { genOverlays(false, 'v-avatar') }\n \n ))\n\n return {}\n },\n})\n\nexport type VAvatar = InstanceType\n","// Styles\nimport './VLabel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLabelProps = propsFactory({\n text: String,\n\n onClick: EventProp<[MouseEvent]>(),\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 \n { props.text }\n\n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VLabel = InstanceType\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'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\nimport type { GenericProps } from '@/util'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean as PropType,\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, Object] as PropType,\n default: true,\n },\n multiple: {\n type: Boolean as PropType,\n default: null,\n },\n name: String,\n readonly: {\n type: Boolean as PropType,\n default: null,\n },\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType,\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 props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: { default: never },\n) => GenericProps>()({\n name: 'VSelectionControlGroup',\n\n props: makeVSelectionControlGroupProps(),\n\n emits: {\n 'update:modelValue': (value: 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 \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType\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 { useBackgroundColor, 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, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef\n textColorClasses: Ref\n textColorStyles: Ref\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\n }\n label: { label: string | undefined, props: Record }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes> & {\n 'onUpdate:modelValue': EventProp | 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 ? wrapInArray(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 if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n }))\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\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 backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref()\n const id = computed(() => props.id || `input-${uid}`)\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\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 onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value\n }\n\n return\n }\n\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 const inputNode = (\n \n )\n\n return (\n \n \n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n \n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && }\n\n { inputNode }\n \n )}\n \n \n\n { label && (\n \n { label }\n \n )}\n \n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType\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, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { GenericProps } from '@/util'\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(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps>()({\n name: 'VCheckboxBtn',\n\n props: makeVCheckboxBtnProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:indeterminate': (value: 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 const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue'])\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCheckboxBtn = InstanceType\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 any> = T | T[]\ntype InputIconProps = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon> (props: T & InputIconProps) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract }) {\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 \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,\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()({\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 \n { props.active && (\n messages.value.map((message, i) => (\n \n { slots.message ? slots.message({ message }) : message }\n \n ))\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType\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, markRaw, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, InjectionKey, PropType, Raw, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\nimport type { EventProp } from '@/util'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n vm: ComponentInternalInstance\n validate: () => Promise\n reset: () => Promise\n resetValidation: () => Promise\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref\n isDisabled: ComputedRef\n isReadonly: ComputedRef\n isValidating: Ref\n isValid: Ref\n validateOn: Ref\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise\n reset: () => Promise\n resetValidation: () => Promise\n vm: Raw\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 {}\n\nexport const FormKey: InjectionKey = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': EventProp<[boolean | null]> | 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,\n default: null,\n },\n validateOn: {\n type: String as PropType,\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([])\n const errors = ref([])\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, flush: 'post' })\n\n provide(FormKey, {\n register: ({ id, vm, 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 vm: markRaw(vm),\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 { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit' | 'invalid-input'\ntype ValidateOn =\n | ValidateOnValue\n | `${ValidateOnValue} lazy`\n | `${ValidateOnValue} eager`\n | `lazy ${ValidateOnValue}`\n | `eager ${ValidateOnValue}`\n | 'lazy'\n | 'eager'\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\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': EventProp | undefined\n validateOn?: ValidateOn\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType,\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,\n default: null,\n },\n rules: {\n type: Array as PropType,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef = 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([])\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).concat(internalErrorMessages.value).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 if (value === 'eager') value = 'input eager'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager'),\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 vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n vm,\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(!validateOn.value.eager)\n }\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input || (validateOn.value.invalidInput && isValid.value === false), () => {\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, errorMessages], () => {\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\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 { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { VMessageSlot } from '@/components/VMessages/VMessages'\nimport type { GenericProps } from '@/util'\n\nexport interface VInputSlot {\n id: ComputedRef\n messagesId: ComputedRef\n isDirty: ComputedRef\n isDisabled: ComputedRef\n isReadonly: ComputedRef\n isPristine: Ref\n isValid: ComputedRef\n isValidating: Ref\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,\n hideSpinButtons: Boolean,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String] as PropType,\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 ...only(makeDimensionProps(), [\n 'maxWidth',\n 'minWidth',\n 'width',\n ]),\n ...makeThemeProps(),\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(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VInputSlots,\n) => GenericProps>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { themeClasses } = provideTheme(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(() => ({\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 \n { hasPrepend && (\n
\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n \n )}\n
\n )}\n\n { slots.default && (\n
\n { slots.default?.(slotProps.value) }\n
\n )}\n\n { hasAppend && (\n
\n { props.appendIcon && (\n \n )}\n\n { slots.append?.(slotProps.value) }\n
\n )}\n\n { hasDetails && (\n
\n \n\n { slots.details?.(slotProps.value) }\n
\n )}\n \n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n isValid,\n errorMessages,\n }\n },\n})\n\nexport type VInput = InstanceType\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'\nimport type { GenericProps } from '@/util'\n\nexport type VCheckboxSlots = Omit & VSelectionControlSlots\n\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline']),\n}, 'VCheckbox')\n\nexport const VCheckbox = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VCheckboxSlots,\n) => GenericProps>()({\n name: 'VCheckbox',\n\n inheritAttrs: false,\n\n props: makeVCheckboxProps(),\n\n emits: {\n 'update:modelValue': (value: any) => 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 [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const checkboxProps = VCheckboxBtn.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCheckbox = InstanceType\n","// Utilities\nimport { computed, inject, reactive, shallowRef, toRefs, watchEffect } from 'vue'\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from '@/util'\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, PropType, 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 DisplayProps {\n mobile?: boolean | null\n mobileBreakpoint?: number | DisplayBreakpoint\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial\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\n sm: Ref\n md: Ref\n lg: Ref\n xl: Ref\n xxl: Ref\n smAndUp: Ref\n mdAndUp: Ref\n lgAndUp: Ref\n xlAndUp: Ref\n smAndDown: Ref\n mdAndDown: Ref\n lgAndDown: Ref\n xlAndDown: Ref\n name: Ref\n height: Ref\n width: Ref\n mobile: Ref\n mobileBreakpoint: Ref\n platform: Ref\n thresholds: Ref\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey = 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 const makeDisplayProps = propsFactory({\n mobile: {\n type: Boolean as PropType,\n default: false,\n },\n mobileBreakpoint: [Number, String] as PropType,\n}, 'display')\n\nexport function useDisplay (\n props: DisplayProps = {},\n name = getCurrentInstanceName(),\n) {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n const mobile = computed(() => {\n if (props.mobile != null) return props.mobile\n if (!props.mobileBreakpoint) return display.mobile.value\n\n const breakpointValue = typeof props.mobileBreakpoint === 'number'\n ? props.mobileBreakpoint\n : display.thresholds.value[props.mobileBreakpoint]\n\n return display.width.value < breakpointValue\n })\n\n const displayClasses = computed(() => {\n if (!name) return {}\n\n return { [`${name}--mobile`]: mobile.value }\n })\n\n return { ...display, displayClasses, mobile }\n}\n","// Utilities\nimport { computed, inject } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\n\nexport interface GoToInstance {\n rtl: Ref\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | ((t: number) => number)\n patterns: Record number>\n}\n\nexport type GoToOptions = Partial\n\nexport const GoToSymbol: InjectionKey = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n },\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: computed(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return Math.max(Math.min(value, max), min)\n}\n","export function calculateUpdatedTarget ({\n selectedElement,\n containerElement,\n isRtl,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerElement: HTMLElement\n isRtl: boolean\n isHorizontal: boolean\n}): number {\n const containerSize = getOffsetSize(isHorizontal, containerElement)\n const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement)\n\n const childrenSize = getOffsetSize(isHorizontal, selectedElement)\n const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement)\n\n const additionalOffset = childrenSize * 0.4\n\n if (scrollPosition > childrenStartPosition) {\n return childrenStartPosition - additionalOffset\n } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {\n return childrenStartPosition - containerSize + childrenSize + additionalOffset\n }\n\n return scrollPosition\n}\n\nexport function calculateCenteredTarget ({\n selectedElement,\n containerElement,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerElement: HTMLElement\n isHorizontal: boolean\n}): number {\n const containerOffsetSize = getOffsetSize(isHorizontal, containerElement)\n const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement)\n const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement)\n\n return childrenOffsetPosition - (containerOffsetSize / 2) + (childrenOffsetSize / 2)\n}\n\nexport function getScrollSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'scrollWidth' : 'scrollHeight'\n return element?.[key] || 0\n}\n\nexport function getClientSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'clientWidth' : 'clientHeight'\n return element?.[key] || 0\n}\n\nexport function getScrollPosition (isHorizontal: boolean, rtl: boolean, element?: HTMLElement) {\n if (!element) {\n return 0\n }\n\n const {\n scrollLeft,\n offsetWidth,\n scrollWidth,\n } = element\n\n if (isHorizontal) {\n return rtl\n ? scrollWidth - offsetWidth + scrollLeft\n : scrollLeft\n }\n\n return element.scrollTop\n}\n\nexport function getOffsetSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'offsetWidth' : 'offsetHeight'\n return element?.[key] || 0\n}\n\nexport function getOffsetPosition (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'offsetLeft' : 'offsetTop'\n return element?.[key] || 0\n}\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\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 {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey = 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 ...makeDisplayProps({ mobile: null }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps>()({\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 { displayClasses, mobile } = useDisplay(props)\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 goTo = useGoTo()\n const goToOptions = computed>(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\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.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.el) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.el) 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.el.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.el) return\n\n function toFocus (location: Parameters[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.el) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.el)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.el.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.el.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\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 // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n const clientSize = getClientSize(isHorizontal.value, containerRef.el)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n \n { hasAffixes.value && (\n hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n\n \n \n { slots.default?.(slotProps.value) }\n \n \n\n { hasAffixes.value && (\n hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n \n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType\n","// Styles\nimport './VChipGroup.sass'\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\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'\nimport type { GenericProps } from '@/util'\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,\n default: deepEqual,\n },\n\n ...makeVSlideGroupProps(),\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(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VChipGroupSlots,\n) => GenericProps>()({\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 const slideGroupProps = VSlideGroup.filterProps(props)\n\n return (\n \n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VChipGroup = InstanceType\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,\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()({\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 e.preventDefault()\n e.stopPropagation()\n\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 \n { genOverlays(isClickable.value, 'v-chip') }\n\n { hasFilter && (\n \n \n { !slots.filter ? (\n \n ) : (\n \n )}\n \n \n )}\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n <>\n { props.prependIcon && (\n \n )}\n\n { props.prependAvatar && (\n \n )}\n \n ) : (\n \n )}\n
\n )}\n\n
\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
\n\n { hasAppend && (\n
\n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n )}\n
\n )}\n\n { hasClose && (\n \n { !slots.close ? (\n \n ) : (\n \n )}\n \n )}\n \n )\n }\n },\n})\n\nexport type VChip = InstanceType\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> = Symbol.for('vuetify:depth')\n\nexport function useDepth (hasPrepend?: Ref) {\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\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","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\nimport { wrapInArray } from '@/util'\n\nexport type ActiveStrategyFn = (data: {\n id: unknown\n value: boolean\n activated: Set\n children: Map\n parents: Map\n event?: Event\n}) => Set\n\nexport type ActiveStrategyTransformInFn = (\n v: unknown | undefined,\n children: Map,\n parents: Map,\n) => Set\n\nexport type ActiveStrategyTransformOutFn = (\n v: Set,\n children: Map,\n parents: Map,\n) => unknown\n\nexport type ActiveStrategy = {\n activate: ActiveStrategyFn\n in: ActiveStrategyTransformInFn\n out: ActiveStrategyTransformOutFn\n}\n\nexport const independentActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const strategy: ActiveStrategy = {\n activate: ({ id, value, activated }) => {\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 && activated.size === 1 && activated.has(id)) return activated\n\n if (value) {\n activated.add(id)\n } else {\n activated.delete(id)\n }\n\n return activated\n },\n in: (v, children, parents) => {\n let set = new Set()\n\n if (v != null) {\n for (const id of wrapInArray(v)) {\n set = strategy.activate({\n id,\n value: true,\n activated: new Set(set),\n children,\n parents,\n })\n }\n }\n\n return set\n },\n out: v => {\n return Array.from(v)\n },\n }\n\n return strategy\n}\n\nexport const independentSingleActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ activated, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = activated.has(id) ? new Set([id]) : new Set()\n return parentStrategy.activate({ ...rest, id, activated: singleSelected })\n },\n in: (v, children, parents) => {\n let set = new Set()\n\n if (v != null) {\n const arr = wrapInArray(v)\n if (arr.length) {\n set = parentStrategy.in(arr.slice(0, 1), children, parents)\n }\n }\n\n return set\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ id, activated, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return activated\n\n return parentStrategy.activate({ id, activated, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentSingleActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ id, activated, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return activated\n\n return parentStrategy.activate({ id, activated, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n","export type OpenStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set\n children: Map\n parents: Map\n event?: Event\n}) => Set\n\nexport type OpenSelectStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set\n selected: Map\n children: Map\n parents: Map\n event?: Event\n}) => Set | 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()\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\n children: Map\n parents: Map\n event?: Event\n}) => Map\n\nexport type SelectStrategyTransformInFn = (\n v: readonly unknown[] | undefined,\n children: Map,\n parents: Map,\n) => Map\n\nexport type SelectStrategyTransformOutFn = (\n v: Map,\n children: Map,\n parents: Map,\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())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] 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(toRaw(item), value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = toRaw(parents.get(id))\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = toRaw(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())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] 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, toRef } from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref\n isGroupActivator?: boolean\n root: {\n children: Ref>\n parents: Ref>\n activatable: Ref\n selectable: Ref\n opened: Ref>\n activated: Ref>\n selected: Ref>\n selectedValues: Ref\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (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 getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey = 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 activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType,\n selectStrategy: [String, Function, Object] as PropType,\n openStrategy: [String, Object] as PropType,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map())\n const parents = ref(new Map())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\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 activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\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 nodeIds = new Set()\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(props, 'activatable'),\n selectable: toRef(props, 'selectable'),\n activated,\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 if (nodeIds.has(id)) {\n const path = getPath(id).join(' -> ')\n const newPath = getPath(parentId).concat(id).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\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 nodeIds.delete(id)\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 },\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 activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newActivated && (activated.value = newActivated)\n },\n children,\n parents,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref, 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 activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(toRaw(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 }\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()({\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 e.stopPropagation()\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 \n { slots.activator && (\n \n \n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n \n \n )}\n\n \n
\n { slots.default?.() }\n
\n
\n \n ))\n\n return {\n isOpen,\n }\n },\n})\n\nexport type VListGroup = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemSubtitleProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemSubtitle')\n\nexport const VListItemSubtitle = genericComponent()({\n name: 'VListItemSubtitle',\n\n props: makeVListItemSubtitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VListItemSubtitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListItemTitle = createSimpleFunctional('v-list-item-title')\n\nexport type VListItemTitle = InstanceType\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\nexport type ListItemSlot = {\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number\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: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\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,\n default: true,\n },\n slim: Boolean,\n subtitle: [String, Number],\n title: [String, Number],\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\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()({\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 {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.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 || (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\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 isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\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 \n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n \n )}\n\n { props.prependIcon && (\n \n )}\n \n ) : (\n \n { slots.prepend?.(slotProps.value) }\n \n )}\n\n
\n
\n )}\n\n
\n { hasTitle && (\n \n { slots.title?.({ title: props.title }) ?? props.title }\n \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n \n )}\n\n { slots.default?.(slotProps.value) }\n
\n\n { hasAppend && (\n
\n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n { slots.append?.(slotProps.value) }\n \n )}\n\n
\n
\n )}\n \n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n }\n },\n})\n\nexport type VListItem = InstanceType\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 \n { hasText && (\n
\n { slots.default?.() ?? props.title }\n
\n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VListSubheader = InstanceType\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' | 'height' | 'width'\ntype DividerStyles = Partial>\n\nexport const makeVDividerProps = propsFactory({\n color: String,\n inset: Boolean,\n length: [Number, String],\n opacity: [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, slots }) {\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 ? 'height' : 'width'] = 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 const divider = (\n \n )\n\n if (!slots.default) return divider\n\n return (\n \n { divider }\n\n
\n { slots.default() }\n
\n\n { divider }\n
\n )\n })\n\n return {}\n },\n})\n\nexport type VDivider = InstanceType\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 = {\n [K in keyof Omit]: 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,\n returnObject: Boolean,\n}, 'VListChildren')\n\nexport const VListChildren = genericComponent(\n props: {\n items?: readonly T[]\n returnObject?: boolean\n },\n slots: VListChildrenSlots\n) => GenericProps>()({\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 \n )\n }\n\n if (type === 'subheader') {\n return slots.subheader?.({ props: itemProps }) ?? (\n \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 = VListGroup.filterProps(itemProps)\n\n return children ? (\n \n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: props.returnObject ? item : itemProps.value,\n }\n\n return slots.header\n ? slots.header({ props: listItemProps })\n : (\n \n )\n },\n default: () => (\n \n ),\n }}\n \n ) : (\n slots.item ? slots.item({ props: itemProps }) : (\n \n )\n )\n })\n },\n})\n","// Utilities\nimport { computed } from 'vue'\nimport { deepEqual, getPropertyFromItem, omit, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport interface ListItem extends InternalItem {\n title: string\n props: {\n [key: string]: any\n title: string\n value: any\n }\n children?: ListItem[]\n}\n\nexport interface ItemProps {\n items: any[]\n itemTitle: SelectItemKey\n itemValue: SelectItemKey\n itemChildren: SelectItemKey\n itemProps: SelectItemKey\n returnObject: boolean\n valueComparator: typeof deepEqual\n}\n\n// Composables\nexport const makeItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemTitle: {\n type: [String, Array, Function] as PropType,\n default: 'title',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n itemChildren: {\n type: [Boolean, String, Array, Function] as PropType,\n default: 'children',\n },\n itemProps: {\n type: [Boolean, String, Array, Function] as PropType,\n default: 'props',\n },\n returnObject: Boolean,\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n}, 'list-items')\n\nexport function transformItem (props: Omit, item: any): ListItem {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = 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 ? omit(item, ['children'])\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, 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 const hasNullItem = computed(() => items.value.some(item => item.value === null))\n\n function transformIn (value: any[]): ListItem[] {\n if (!hasNullItem.value) {\n // When the model value is null, return an InternalItem\n // based on null only if null is one of the items\n value = value.filter(v => v !== null)\n }\n\n return value.map(v => {\n if (props.returnObject && typeof v === 'string') {\n // String model value means value is a custom input value from combobox\n // Don't look up existing items if the model value is a string\n return transformItem(props, v)\n }\n return items.value.find(item => props.valueComparator(v, item.value)) || transformItem(props, v)\n })\n }\n\n function transformOut (value: ListItem[]): any[] {\n return props.returnObject\n ? value.map(({ raw }) => raw)\n : 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 { EventProp, focusChild, genericComponent, getPropertyFromItem, omit, 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, SelectItemKey } from '@/util'\n\nexport interface InternalListItem extends ListItem {\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\n ? omit(item, ['children'])\n : 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\nexport function 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 expandIcon: String,\n collapseIcon: String,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n 'onClick:open': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onClick:select': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onUpdate:opened': EventProp<[]>(),\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\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemChildren?: SelectItemKey>\n itemProps?: SelectItemKey>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n 'onClick:open'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n 'onClick:select'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots>\n) => GenericProps>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (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 { children, open, parents, select, getPath } = 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 expandIcon: toRef(props, 'expandIcon'),\n collapseIcon: toRef(props, 'collapseIcon'),\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 slim: toRef(props, 'slim'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = shallowRef(false)\n const contentRef = ref()\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 const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) 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 onMousedown (e: MouseEvent) {\n isFocused.value = true\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 \n \n \n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n getPath,\n }\n },\n})\n\nexport type VList = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListImg = createSimpleFunctional('v-list-img')\n\nexport type VListImg = InstanceType\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 \n ))\n\n return {}\n },\n})\n\nexport type VListItemAction = InstanceType\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 \n )\n })\n\n return {}\n },\n})\n\nexport type VListItemMedia = InstanceType\n","// Types\nimport type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As {\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 (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, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref\n target: Ref\n isActive: Ref\n isRtl: Ref\n}\n\ntype LocationStrategyFn = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref>\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,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType,\n default: 'bottom',\n },\n origin: {\n type: String as PropType,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType,\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 window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\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\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()\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 /* 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>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.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.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\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(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n const targetBox = getTargetBox(data.target.value)\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 | 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, 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\n contentEl: Ref\n targetEl: Ref\n isActive: Ref\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,\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 new Promise(resolve => setTimeout(resolve))\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.targetEl.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.targetEl.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 const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\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 el.style.scrollBehavior = scrollBehavior\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.targetEl.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 (e?: MouseEvent): void\n}\n\nexport const VMenuSymbol: InjectionKey = Symbol.for('vuetify:v-menu')\n","// Utilities\nimport { defer, 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 let clearDelay: (() => void) = () => {}\n\n function runDelay (isOpening: boolean) {\n clearDelay?.()\n\n const delay = Number(isOpening ? props.openDelay : props.closeDelay)\n\n return new Promise(resolve => {\n clearDelay = defer(delay, () => {\n cb?.(isOpening)\n resolve(isOpening)\n })\n })\n }\n\n function runOpenDelay () {\n return runDelay(true)\n }\n\n function runCloseDelay () {\n return runDelay(false)\n }\n\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay,\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 templateRef,\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 target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType,\n activator: [String, Object] as PropType,\n activatorProps: {\n type: Object as PropType,\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, contentEl }: {\n isActive: Ref\n isTop: Ref\n contentEl: Ref\n }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref()\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 cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\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 = {}\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 = {}\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 = {}\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 ) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = templateRef()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = activatorRef.el\n })\n })\n\n const targetRef = templateRef()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return targetRef.el\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\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, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick, '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 const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\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) {\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 = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly>,\n zIndex: Readonly>,\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(),\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 // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target\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 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 beforeUnmount (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 onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getCurrentInstance,\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'\nimport type { TemplateRef } from '@/util'\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 \n { props.modelValue && (\n \n )}\n \n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref }\n activator: { isActive: boolean, props: Record, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\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()({\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 afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const vm = getCurrentInstance('VOverlay')\n const root = ref()\n const scrimEl = ref()\n const contentEl = ref()\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 { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _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 {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop, contentEl })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\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 { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\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 (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || (e instanceof MouseEvent && e.shadowTarget === scrimEl.value)\n )\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 onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\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()\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 function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n \n \n \n \n [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
\n \n \n \n )}\n \n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType\n","// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\nexport function useTeleport (target: () => (boolean | string | ParentNode)) {\n const teleportTarget = computed(() => {\n const _target = target()\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.children].find(el => el.matches('.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 { ComponentOptionsBase, 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<\n T,\n P extends string,\n E = Extract,\n> = [E] extends [never] ? T : Omit\ntype OmitPrivate = OmitPrefix\n\n/** Omit keyof $props from T */\ntype OmitProps = T extends { $props: any } ? Omit : 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<\n T extends {},\n U extends Ref | undefined>[],\n UU = { [K in keyof U]: NonNullable> }[number],\n UC = { [K in keyof U]: OmitPrivate>>> }[number],\n R = T & UnionToIntersection & {\n _allExposed: T | (\n UU extends { $options: infer O }\n ? O extends ComponentOptionsBase\n ? E\n : never\n : never\n )\n }\n> (target: T, ...refs: U): R {\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('$') || 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('$') || 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('$') || 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('$') || 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 { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef,\n watch,\n} from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} 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 submenu: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\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()({\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 const { isRtl } = useRtl()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(new Set())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\n !props.persistent &&\n (e == null || (overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n onBeforeUnmount(() => parent?.unregister())\n onDeactivated(() => isActive.value = false)\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\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 (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\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 } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\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 e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\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 \n {{\n activator: slots.activator,\n default: (...args) => (\n \n { slots.default?.(...args) }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType\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 disabled: 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()({\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 \n parseFloat(props.max),\n },\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 \n \n ))\n\n return {}\n },\n})\n\nexport type VCounter = InstanceType\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 \n ))\n\n return {}\n },\n})\n\nexport type VFieldLabel = InstanceType\n","// Styles\nimport './VField.sass'\n\n// Components\nimport { VFieldLabel } from './VFieldLabel'\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\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\n isFocused: Ref\n controlRef: Ref\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record\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,\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: DefaultInputSlot & { props: Record }\n 'prepend-inner': DefaultInputSlot\n 'append-inner': DefaultInputSlot\n label: DefaultInputSlot & { label: string | undefined, props: Record }\n loader: LoaderSlotProps\n default: VFieldSlot\n}\n\nexport const VField = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VFieldSlots\n) => GenericProps>()({\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': (value: 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()\n const floatingLabelRef = ref()\n const controlRef = ref()\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(() => ({\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 function onKeydownClear (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n props['onClick:clear']?.(new MouseEvent('click'))\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 = () => (\n slots.label\n ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n )\n\n return (\n \n
\n\n \n\n { hasPrepend && (\n
\n { props.prependInnerIcon && (\n \n )}\n\n { slots['prepend-inner']?.(slotProps.value) }\n
\n )}\n\n
\n {['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && (\n \n { label() }\n \n )}\n\n \n { label() }\n \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
\n\n { hasClear && (\n \n {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n \n { slots.clear\n ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear'],\n },\n })\n : (\n \n )}\n \n
\n \n )}\n\n { hasAppend && (\n
\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n \n )}\n
\n )}\n\n \n { isOutlined && (\n <>\n
\n\n { hasLabel.value && (\n
\n \n { label() }\n \n
\n )}\n\n
\n \n )}\n\n { isPlainOrUnderlined.value && hasLabel.value && (\n \n { label() }\n \n )}\n
\n
\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record) {\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],\n counterValue: [Number, Function] as PropType number)>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent()({\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' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\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()\n const vFieldRef = ref()\n const inputRef = ref()\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 !== false && props.counter != null))\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 \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n \n )\n\n return (\n <>\n { props.prefix && (\n \n \n { props.prefix }\n \n \n )}\n\n { slots.default ? (\n \n { slots.default() }\n { inputNode }\n \n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n \n \n { props.suffix }\n \n \n )}\n \n )\n },\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType\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 { GenericProps, TemplateRef } from '@/util'\n\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n\n ...makeComponentProps(),\n}, 'VVirtualScrollItem')\n\nexport const VVirtualScrollItem = genericComponent(\n props: {\n renderless?: Renderless\n },\n slots: {\n default: Renderless extends true ? {\n itemRef: TemplateRef\n } : never\n }\n) => GenericProps>()({\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 \n { (slots.default as any)?.() }\n \n ))\n },\n})\n","// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual (props: VirtualProps, items: Ref) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from({ length: items.value.length })\n let offsets = Array.from({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\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\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\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 {\n item: T\n index: number\n}\n\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n renderless: Boolean,\n\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VVirtualScroll')\n\nexport const VVirtualScroll = genericComponent(\n props: {\n items?: readonly T[]\n renderless?: Renderless\n },\n slots: {\n default: VVirtualScrollSlot & (Renderless extends true ? {\n itemRef: Ref\n } : {})\n }\n) => GenericProps>()({\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 calculateVisibleItems,\n containerRef,\n markerRef,\n handleScroll,\n handleScrollend,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems,\n } = useVirtual(props, toRef(props, 'items'))\n\n useToggleScope(() => props.renderless, () => {\n function handleListeners (add = false) {\n const method = add ? 'addEventListener' : 'removeEventListener'\n\n if (containerRef.value === document.documentElement) {\n document[method]('scroll', handleScroll, { passive: true })\n document[method]('scrollend', handleScrollend)\n } else {\n containerRef.value?.[method]('scroll', handleScroll, { passive: true })\n containerRef.value?.[method]('scrollend', handleScrollend)\n }\n }\n\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el as HTMLElement, true)\n handleListeners(true)\n })\n onScopeDispose(handleListeners)\n })\n\n useRender(() => {\n const children = computedItems.value.map(item => (\n handleItemResize(item.index, height) }\n >\n { slotProps => slots.default?.({ item: item.raw, index: item.index, ...slotProps }) }\n \n ))\n\n return props.renderless ? (\n <>\n
\n { children }\n
\n \n ) : (\n \n \n { children }\n
\n
\n )\n })\n\n return {\n calculateVisibleItems,\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType\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, textFieldRef: Ref) {\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(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 {\n onScrollPassive: onListScroll,\n onKeydown: onListKeydown,\n } as Record // typescript doesn't know about vue's event merging\n}\n","// Styles\nimport './VSelect.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VAvatar } from '@/components/VAvatar'\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, nextTick, ref, shallowRef, watch } from 'vue'\nimport {\n checkPrintable,\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n matchesSelector,\n omit,\n propsFactory,\n useRender,\n wrapInArray,\n} 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, SelectItemKey } from '@/util'\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n closeText: {\n type: String,\n default: '$vuetify.close',\n },\n openText: {\n type: String,\n default: '$vuetify.open',\n },\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n listProps: {\n type: Object as PropType,\n },\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n itemColor: String,\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'Select')\n\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition as Component } }),\n}, 'VSelect')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VSelect = genericComponent,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VSelect',\n\n props: makeVSelectProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:menu': (ue: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref()\n const vVirtualScrollRef = ref()\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.size) 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 counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : model.value.length\n })\n const form = useForm()\n const selectedValues = computed(() => model.value.map(selection => selection.value))\n const isFocused = shallowRef(false)\n const label = computed(() => menu.value ? props.closeText : props.openText)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)))\n }\n return items.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const computedMenuProps = computed(() => {\n return {\n ...props.menuProps,\n activatorProps: {\n ...(props.menuProps?.activatorProps || {}),\n 'aria-haspopup': 'listbox', // Set aria-haspopup to 'listbox'\n },\n }\n })\n\n const listRef = ref()\n const listEvents = 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 onListKeydown (e: KeyboardEvent) {\n if (checkPrintable(e)) {\n onKeydown(e)\n }\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 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 const index = displayItems.value.indexOf(item)\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n }\n\n /** @param set - null means toggle */\n function select (item: ListItem, set: boolean | null = true) {\n if (item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n\n nextTick(() => {\n menu.value = false\n })\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 onAfterEnter () {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems()\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 watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => props.valueComparator(s.value, item.value))\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\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 v.props.value).join(', ') }\n onUpdate:modelValue={ onModelUpdate }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n counterValue={ counterValue.value }\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 aria-label={ t(label.value) }\n title={ t(label.value) }\n >\n {{\n ...slots,\n default: () => (\n <>\n \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...listEvents }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \n )}\n \n ),\n }}\n \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n
\n { hasChips ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n
\n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n
\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType\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?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record\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\nexport interface InternalItem {\n value: any\n raw: T\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,\n customKeyFilter: Object as PropType,\n filterKeys: [Array, String] as PropType,\n filterMode: {\n type: String as PropType,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\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 }[] = []\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, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record = {}\n const defaultMatches: Record = {}\n let match: FilterMatch = -1\n\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\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 (\n props: FilterProps,\n items: MaybeRef,\n query: Ref | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef\n }\n) {\n const filteredItems: Ref = ref([])\n const filteredMatches: Ref>> = ref(new Map())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\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: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\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 { VAvatar } from '@/components/VAvatar'\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 {\n checkPrintable,\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n matchesSelector,\n noop,\n omit,\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'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } 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 { text.substr(0, matches) }\n { text.substr(matches, length) }\n { text.substr(matches + length) }\n \n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType,\n },\n clearOnSelect: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VAutocomplete')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VAutocomplete = genericComponent,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VAutocomplete',\n\n props: makeVAutocompleteProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (value: any) => true,\n 'update:modelValue': (value: any) => true,\n 'update:menu': (value: 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()\n const vVirtualScrollRef = ref()\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.size) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const label = computed(() => menu.value ? props.closeText : props.openText)\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 counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : model.value.length\n })\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const hasChips = computed(() => !!(props.chips || slots.chip))\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection)\n\n const selectedValues = computed(() => model.value.map(selection => selection.props.value))\n\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 && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref()\n const listEvents = 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 onListKeydown (e: KeyboardEvent) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus()\n }\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = model.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 (\n highlightFirst.value &&\n ['Enter', 'Tab'].includes(e.key) &&\n !model.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\n select(displayItems.value[0])\n }\n\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next')\n }\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (\n !props.multiple &&\n hasSelectionSlot.value &&\n model.value.length > 0 &&\n !search.value\n ) return select(model.value[0], false)\n\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value\n select(model.value[selectionIndex.value], false)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n }\n\n if (!props.multiple) return\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 (model.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 (model.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\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 onAfterEnter () {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems()\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 && !hasSelectionSlot.value)) model.value = []\n }\n\n const isSelecting = shallowRef(false)\n\n /** @param set - null means toggle */\n function select (item: ListItem | undefined, set: boolean | null = true) {\n if (!item || item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n\n if (props.clearOnSelect) {\n search.value = ''\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n search.value = add && !hasSelectionSlot.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 watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return\n\n if (val) {\n isSelecting.value = true\n search.value = (props.multiple || hasSelectionSlot.value) ? '' : String(model.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n if (!props.multiple && search.value == null) model.value = []\n menu.value = false\n if (!model.value.some(({ title }) => title === search.value)) 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 watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => item.value === s.value)\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\n }\n })\n\n useRender(() => {\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 -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 \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...listEvents }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \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, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \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 \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips.value\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n \n { hasChips.value ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n \n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n \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\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, pickWithRest, 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()({\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] = pickWithRest(ctx.attrs as Record, [\n 'aria-atomic',\n 'aria-label',\n 'aria-live',\n 'role',\n 'title',\n ])\n\n return (\n \n
\n { ctx.slots.default?.() }\n\n \n \n {\n props.dot ? undefined\n : ctx.slots.badge ? ctx.slots.badge?.()\n : props.icon ? \n : content\n }\n \n \n
\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBadge = InstanceType\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 slim: true,\n variant: 'text',\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VBannerActions = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VBannerText = createSimpleFunctional('v-banner-text')\n\nexport type VBannerText = InstanceType\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 { 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 { makeDisplayProps, 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 bgColor: 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 ...makeDisplayProps({ mobile: null }),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VBanner')\n\nexport const VBanner = genericComponent()({\n name: 'VBanner',\n\n props: makeVBannerProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { displayClasses, mobile } = useDisplay(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 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 \n { hasPrepend && (\n
\n { !slots.prepend ? (\n \n ) : (\n \n )}\n
\n )}\n\n
\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default?.() }\n
\n\n { slots.actions && (\n \n )}\n \n )\n })\n },\n})\n\nexport type VBanner = InstanceType\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 { useProxiedModel } from '@/composables/proxiedModel'\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\n// Types\nimport type { GenericProps } from '@/util'\n\nexport const makeVBottomNavigationProps = propsFactory({\n baseColor: String,\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({ selectedClass: 'v-btn--selected' }),\n ...makeThemeProps(),\n}, 'VBottomNavigation')\n\nexport const VBottomNavigation = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: { default: never },\n) => GenericProps>()({\n name: 'VBottomNavigation',\n\n props: makeVBottomNavigationProps(),\n\n emits: {\n 'update:active': (value: any) => true,\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 = useProxiedModel(props, 'active', 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 baseColor: toRef(props, 'baseColor'),\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 \n { slots.default && (\n
\n { slots.default() }\n
\n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBottomNavigation = InstanceType\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 { 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()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref()\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 function onAfterEnter () {\n emit('afterEnter')\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n \n {{\n activator: slots.activator,\n default: (...args) => (\n \n { slots.default?.(...args) }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType\n","// Styles\nimport './VBottomSheet.sass'\n\n// Components\nimport { makeVDialogProps, VDialog } from '@/components/VDialog/VDialog'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVBottomSheetProps = propsFactory({\n inset: Boolean,\n\n ...makeVDialogProps({\n transition: 'bottom-sheet-transition',\n }),\n}, 'VBottomSheet')\n\nexport const VBottomSheet = genericComponent()({\n name: 'VBottomSheet',\n\n props: makeVBottomSheetProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const dialogProps = VDialog.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBottomSheet = InstanceType\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 \n { slots?.default?.() ?? props.divider }\n \n ))\n\n return {}\n },\n})\n\nexport type VBreadcrumbsDivider = InstanceType\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 \n { !link.isLink.value ? slots.default?.() ?? props.title : (\n \n { slots.default?.() ?? props.title }\n \n )}\n \n )\n })\n return {}\n },\n})\n\nexport type VBreadcrumbsItem = InstanceType\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 InternalBreadcrumbItem = Partial & {\n title: string\n disabled?: boolean\n}\n\nexport type BreadcrumbItem = string | InternalBreadcrumbItem\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,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'ul' }),\n}, 'VBreadcrumbs')\n\nexport const VBreadcrumbs = genericComponent(\n props: {\n items?: T[]\n },\n slots: {\n prepend: never\n title: { item: InternalBreadcrumbItem, index: number }\n divider: { item: T, index: number }\n item: { item: InternalBreadcrumbItem, index: number }\n default: never\n }\n) => GenericProps>()({\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 \n { hasPrepend && (\n
  • \n { !slots.prepend ? (\n \n ) : (\n \n )}\n
  • \n )}\n\n { items.value.map(({ item, raw }, index, array) => (\n <>\n { slots.item?.({ item, index }) ?? (\n = array.length - 1 }\n { ...(typeof item === 'string' ? { title: item } : item) }\n v-slots={{\n default: slots.title ? () => slots.title?.({ item, index }) : undefined,\n }}\n />\n )}\n\n { index < array.length - 1 && (\n slots.divider?.({ item: raw, index }) : undefined,\n }}\n />\n )}\n \n ))}\n\n { slots.default?.() }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBreadcrumbs = InstanceType\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 slim: true,\n variant: 'text',\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VCardActions = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCardSubtitle')\n\nexport const VCardSubtitle = genericComponent()({\n name: 'VCardSubtitle',\n\n props: makeVCardSubtitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VCardSubtitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCardTitle = createSimpleFunctional('v-card-title')\n\nexport type VCardTitle = InstanceType\n","// Components\nimport { VCardSubtitle } from './VCardSubtitle'\nimport { VCardTitle } from './VCardTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\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, Number],\n title: [String, Number],\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n}, 'VCardItem')\n\nexport const VCardItem = genericComponent()({\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 != null || slots.title)\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle)\n\n return (\n \n { hasPrepend && (\n
    \n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n \n )}\n\n { props.prependIcon && (\n \n )}\n \n ) : (\n \n )}\n
    \n )}\n\n
    \n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.() ?? props.subtitle }\n \n )}\n\n { slots.default?.() }\n
    \n\n { hasAppend && (\n
    \n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n )}\n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCardItem = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCardText')\n\nexport const VCardText = genericComponent()({\n name: 'VCardText',\n\n props: makeVCardTextProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VCardText = InstanceType\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,\n default: true,\n },\n subtitle: [String, Number],\n text: [String, Number],\n title: [String, Number],\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()({\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 != null)\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null)\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 != null)\n\n return (\n \n { hasImage && (\n
    \n { !slots.image ? (\n \n ) : (\n \n )}\n
    \n )}\n\n \n\n { hasCardItem && (\n \n {{\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append,\n }}\n \n )}\n\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default?.() }\n\n { slots.actions && (\n \n )}\n\n { genOverlays(isClickable.value, 'v-card') }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCard = InstanceType\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 {\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'\nimport type { GenericProps } from '@/util'\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\n transitionCount: Ref\n transitionHeight: Ref\n isReversed: Ref\n rootRef: Ref\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType,\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,\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,\n default: 'force' as const,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps>()({\n name: 'VWindow',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: 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)\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 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : \n :
    \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 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : \n :
    \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 \n \n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n
    \n { arrows.value }\n
    \n )}\n
    \n\n { slots.additional?.({ group }) }\n \n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType\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'\nimport type { GenericProps } from '@/util'\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,\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\n item: {\n id: number\n value: unknown\n disabled: boolean | undefined\n }\n }\n}\n\nexport const VCarousel = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VCarouselSlots,\n) => GenericProps>()({\n name: 'VCarousel',\n\n props: makeVCarouselProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n const windowRef = ref()\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 \n {{\n default: slots.default,\n additional: ({ group }: { group: GroupProvide }) => (\n <>\n { !props.hideDelimiters && (\n \n { group.items.value.length > 0 && (\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: [\n 'v-carousel__controls__item',\n group.isSelected(item.id) && 'v-btn--active',\n ],\n onClick: () => group.select(item.id, true),\n }\n\n return slots.item\n ? slots.item({ props, item })\n : ()\n })}\n \n )}\n
    \n )}\n\n { props.progress && (\n \n )}\n \n ),\n prev: slots.prev,\n next: slots.next,\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCarousel = InstanceType\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 \n \n { hasContent.value && slots.default?.() }\n \n \n ))\n\n return { groupItem }\n },\n})\n\nexport type VWindowItem = InstanceType\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()({\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 \n \n \n )\n })\n },\n})\n\nexport type VCarouselItem = InstanceType\n","// Styles\nimport './VCode.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCode = createSimpleFunctional('v-code')\n\nexport type VCode = InstanceType\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,\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 canvasRef = ref()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n\n const _dotPosition = ref({ x: 0, y: 0 })\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set (val) {\n if (!canvasRef.value) return\n\n const { x, y } = val\n _dotPosition.value = val\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\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 { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.el?.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 handleMouseDown (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault()\n }\n\n if (props.disabled) return\n\n handleMouseMove(e)\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 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%, 0%, 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 _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 \n \n { props.color && (\n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType\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: 0, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record\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\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 \n \n { label }\n \n )\n}\n\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object as PropType,\n disabled: Boolean,\n mode: {\n type: String as PropType,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType,\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 ?? mode.to(nullColor), target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n \n { inputs.value?.map(props => (\n \n ))}\n { enabledModes.value.length > 1 && (\n {\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 \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType\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\n color: Ref\n decimals: Ref\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref\n elevation: Ref\n min: Ref\n max: Ref\n mousePressed: Ref\n numTicks: Ref\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref\n rounded: Ref\n roundValue: (value: number) => number\n thumbLabel: Ref\n showTicks: Ref\n startOffset: Ref\n step: Ref\n thumbSize: Ref\n thumbColor: Ref\n trackColor: Ref\n trackFillColor: Ref\n trackSize: Ref\n ticks: Ref | undefined>\n tickSize: Ref\n trackContainerRef: Ref\n vertical: Ref\n parsedTicks: Ref\n hasLabels: Ref\n isReversed: Ref\n indexFromEnd: Ref\n}\n\nexport const VSliderSymbol: InjectionKey = 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,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType,\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,\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,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType>,\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 ripple: {\n type: Boolean,\n default: true,\n },\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes>\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\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 vertical = computed(() => props.direction === 'vertical')\n const indexFromEnd = computed(() => vertical.value !== isReversed.value)\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\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()\n const activeThumbRef = ref()\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 ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) 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(() => {\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)[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 isReversed,\n indexFromEnd,\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,\n default: true,\n },\n name: String,\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent()({\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 { isRtl, 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 disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\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 = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [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(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n \n \n \n \n \n \n
    \n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n
    \n \n \n
    \n \n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType\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()({\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 parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd,\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' : 'inline'}-${indexFromEnd.value ? 'end' : '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 directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n = 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={{ [startDir.value]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n
    \n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n
    \n )\n }\n \n )\n })\n })\n\n useRender(() => {\n return (\n \n \n \n\n { showTicks.value && (\n \n { computedTicks.value }\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType\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 { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\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()({\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 \n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n \n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n \n ) : undefined,\n default: ({ id, messagesId }) => (\n \n \n\n \n {{ 'tick-label': slots['tick-label'] }}\n
    \n\n (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n ripple={ props.ripple }\n name={ props.name }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType\n","// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSlider } from '@/components/VSlider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { onUnmounted } from 'vue'\nimport { nullColor } from './util'\nimport {\n defineComponent,\n HexToHSV,\n HSVtoCSS,\n propsFactory,\n SUPPORTS_EYE_DROPPER,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Hex, HSV } from '@/util'\n\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object as PropType,\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 const abortController = new AbortController()\n\n onUnmounted(() => abortController.abort())\n\n async function openEyeDropper () {\n if (!SUPPORTS_EYE_DROPPER) return\n\n const eyeDropper = new window.EyeDropper()\n try {\n const result = await eyeDropper.open({ signal: abortController.signal })\n const colorHexValue = HexToHSV(result.sRGBHex as Hex)\n emit('update:color', { ...(props.color ?? nullColor), ...colorHexValue })\n } catch (e) {}\n }\n\n useRender(() => (\n \n { SUPPORTS_EYE_DROPPER && (\n
    \n \n
    \n )}\n\n
    \n
    \n
    \n\n
    \n 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 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
    \n
    \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType\n","export const red = {\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\nexport const pink = {\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\nexport const purple = {\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\nexport const deepPurple = {\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\nexport const indigo = {\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\nexport const blue = {\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\nexport const lightBlue = {\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\nexport const cyan = {\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\nexport const teal = {\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\nexport const green = {\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\nexport const lightGreen = {\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\nexport const lime = {\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\nexport const yellow = {\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\nexport const amber = {\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\nexport const orange = {\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\nexport const deepOrange = {\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\nexport const brown = {\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\nexport const blueGrey = {\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\nexport const grey = {\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\nexport const shades = {\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00',\n}\n\nexport default {\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>,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType,\n maxHeight: [Number, String],\n\n ...makeComponentProps(),\n}, 'VColorPickerSwatches')\n\nfunction parseDefaultColors (colors: Record>) {\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 \n
    \n { props.swatches.map(swatch => (\n
    \n { swatch.map(color => {\n const rgba = parseColor(color)\n const hsva = RGBtoHSV(rgba)\n const background = RGBtoCSS(rgba)\n\n return (\n hsva && emit('update:color', hsva) }\n >\n
    \n { props.color && deepEqual(props.color, hsva)\n ? 2 ? 'white' : 'black' } />\n : undefined\n }\n
    \n
    \n )\n })}\n
    \n ))}\n \n \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerSwatches = InstanceType\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 \n ))\n\n return {}\n },\n})\n\nexport type VSheet = InstanceType\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 { computed, onMounted, ref, watch } 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,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType,\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>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String] as PropType | 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 hue = ref(null)\n const model = 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 return c\n },\n v => {\n if (!v) return null\n\n return extractColor(v, props.modelValue)\n }\n )\n const currentColor = computed(() => {\n return model.value\n ? { ...model.value, h: hue.value ?? model.value.h }\n : null\n })\n const { rtlClasses } = useRtl()\n\n let externalChange = true\n watch(model, v => {\n if (!externalChange) {\n // prevent hue shift from rgb conversion inaccuracy\n externalChange = true\n return\n }\n if (!v) return\n hue.value = v.h\n }, { immediate: true })\n\n const updateColor = (hsva: HSV) => {\n externalChange = false\n hue.value = hsva.h\n model.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 \n { !props.hideCanvas && (\n \n )}\n\n { (!props.hideSliders || !props.hideInputs) && (\n
    \n { !props.hideSliders && (\n \n )}\n\n { !props.hideInputs && (\n mode.value = m }\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n />\n )}\n
    \n )}\n\n { props.showSwatches && (\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VColorPicker = InstanceType\n","// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\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 {\n checkPrintable,\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n isComposingIgnoreKey,\n noop,\n omit,\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'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } 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 { text.substr(0, matches) }\n { text.substr(matches, length) }\n { text.substr(matches + length) }\n \n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = string | ([T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any))\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType,\n },\n clearOnSelect: {\n type: Boolean,\n default: true,\n },\n delimiters: Array as PropType,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VCombobox')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VCombobox = genericComponent,\n ReturnObject extends boolean = true,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VCombobox',\n\n props: makeVComboboxProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:search': (value: string) => true,\n 'update:menu': (value: 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()\n const vVirtualScrollRef = ref()\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.size) 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 label = computed(() => menu.value ? props.closeText : props.openText)\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\n const hasChips = computed(() => !!(props.chips || slots.chip))\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection)\n\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '')\n\n const search = computed({\n get: () => {\n return _search.value\n },\n set: (val: string | null) => {\n _search.value = val ?? ''\n if (!props.multiple && !hasSelectionSlot.value) {\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 const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : (props.multiple ? model.value.length : search.value.length)\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\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? ''\n }\n })\n\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selectedValues = computed(() => model.value.map(selection => selection.value))\n\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 && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref()\n const listEvents = 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 onListKeydown (e: KeyboardEvent) {\n if (checkPrintable(e)) {\n vTextFieldRef.value?.focus()\n }\n }\n // eslint-disable-next-line complexity\n function onKeydown (e: KeyboardEvent) {\n if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = model.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 (\n highlightFirst.value &&\n ['Enter', 'Tab'].includes(e.key) &&\n !model.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\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 (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value))\n if (hasSelectionSlot.value) _search.value = ''\n }\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (\n !props.multiple &&\n hasSelectionSlot.value &&\n model.value.length > 0 &&\n !search.value\n ) return select(model.value[0], false)\n\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value\n select(model.value[selectionIndex.value], false)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n }\n\n if (!props.multiple) return\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 (model.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 (model.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n function onAfterEnter () {\n if (props.eager) {\n vVirtualScrollRef.value?.calculateVisibleItems()\n }\n }\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n /** @param set - null means toggle */\n function select (item: ListItem | undefined, set: boolean | null = true) {\n if (!item || item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n\n if (props.clearOnSelect) {\n search.value = ''\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n _search.value = add && !hasSelectionSlot.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 && !hasSelectionSlot.value)) model.value = []\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 (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value))\n return\n }\n\n if (!hasSelectionSlot.value) return\n\n if (model.value.some(({ title }) => title === search.value)) {\n _search.value = ''\n } else {\n select(transformItem(props, search.value))\n }\n }\n })\n\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => props.valueComparator(s.value, item.value))\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\n }\n })\n\n useRender(() => {\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 -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 \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...listEvents }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \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, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \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 \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips.value\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n \n { hasChips.value ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n \n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { (!props.hideNoData || props.items.length) && props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n \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\n","// Utilities\nimport { createRange, padStart } from '@/util'\n\n// Types\nimport type { DateAdapter } from '../DateAdapter'\n\ntype CustomDateFormat = Intl.DateTimeFormatOptions | ((date: Date, formatString: string, locale: string) => string)\n\nconst firstDay: Record = {\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, firstDayOfWeek?: number) {\n const weeks = []\n let currentWeek = []\n const firstDayOfMonth = startOfMonth(date)\n const lastDayOfMonth = endOfMonth(date)\n const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0\n const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7\n const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7\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 if (currentWeek.length > 0) {\n weeks.push(currentWeek)\n }\n\n return weeks\n}\n\nfunction startOfWeek (date: Date, locale: string, firstDayOfWeek?: number) {\n const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0\n\n const d = new Date(date)\n while (d.getDay() !== day) {\n d.setDate(d.getDate() - 1)\n }\n return d\n}\n\nfunction endOfWeek (date: Date, locale: string) {\n const d = new Date(date)\n const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7\n while (d.getDay() !== lastDay) {\n d.setDate(d.getDate() + 1)\n }\n return d\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, firstDayOfWeek?: number) {\n const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0\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: 'narrow' }).format(weekday)\n })\n}\n\nfunction format (\n value: Date,\n formatString: string,\n locale: string,\n formats?: Record\n): string {\n const newDate = date(value) ?? new Date()\n const customFormat = formats?.[formatString]\n\n if (typeof customFormat === 'function') {\n return customFormat(newDate, formatString, locale)\n }\n\n let options: Intl.DateTimeFormatOptions = {}\n switch (formatString) {\n case 'fullDate':\n options = { year: 'numeric', month: 'long', day: 'numeric' }\n break\n case 'fullDateWithWeekday':\n options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }\n break\n case 'normalDate':\n const day = newDate.getDate()\n const month = new Intl.DateTimeFormat(locale, { month: 'long' }).format(newDate)\n return `${day} ${month}`\n case 'normalDateWithWeekday':\n options = { weekday: 'short', day: 'numeric', month: 'short' }\n break\n case 'shortDate':\n options = { month: 'short', day: 'numeric' }\n break\n case 'year':\n options = { year: 'numeric' }\n break\n case 'month':\n options = { month: 'long' }\n break\n case 'monthShort':\n options = { month: 'short' }\n break\n case 'monthAndYear':\n options = { month: 'long', year: 'numeric' }\n break\n case 'monthAndDate':\n options = { month: 'long', day: 'numeric' }\n break\n case 'weekday':\n options = { weekday: 'long' }\n break\n case 'weekdayShort':\n options = { weekday: 'short' }\n break\n case 'dayOfMonth':\n return new Intl.NumberFormat(locale).format(newDate.getDate())\n case 'hours12h':\n options = { hour: 'numeric', hour12: true }\n break\n case 'hours24h':\n options = { hour: 'numeric', hour12: false }\n break\n case 'minutes':\n options = { minute: 'numeric' }\n break\n case 'seconds':\n options = { second: 'numeric' }\n break\n case 'fullTime':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullTime12h':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullTime24h':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'fullDateTime':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullDateTime12h':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullDateTime24h':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'keyboardDate':\n options = { year: 'numeric', month: '2-digit', day: '2-digit' }\n break\n case 'keyboardDateTime':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'keyboardDateTime12h':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'keyboardDateTime24h':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n default:\n options = customFormat ?? { timeZone: 'UTC', timeZoneName: 'short' }\n }\n\n return new Intl.DateTimeFormat(locale, options).format(newDate)\n}\n\nfunction toISO (adapter: DateAdapter, value: Date) {\n const date = adapter.toJsDate(value)\n const year = date.getFullYear()\n const month = padStart(String(date.getMonth() + 1), 2, '0')\n const day = padStart(String(date.getDate()), 2, '0')\n\n return `${year}-${month}-${day}`\n}\n\nfunction parseISO (value: string) {\n const [year, month, day] = value.split('-').map(Number)\n\n return new Date(year, month - 1, day)\n}\n\nfunction addMinutes (date: Date, amount: number) {\n const d = new Date(date)\n d.setMinutes(d.getMinutes() + amount)\n return d\n}\n\nfunction addHours (date: Date, amount: number) {\n const d = new Date(date)\n d.setHours(d.getHours() + amount)\n return d\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 addWeeks (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(d.getDate() + (amount * 7))\n return d\n}\n\nfunction addMonths (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(1)\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 getDate (date: Date) {\n return date.getDate()\n}\n\nfunction getNextMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1)\n}\n\nfunction getPreviousMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() - 1, 1)\n}\n\nfunction getHours (date: Date) {\n return date.getHours()\n}\n\nfunction getMinutes (date: Date) {\n return date.getMinutes()\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 isAfterDay (date: Date, comparing: Date): boolean {\n return isAfter(startOfDay(date), startOfDay(comparing))\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 isSameYear (date: Date, comparing: Date) {\n return 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 switch (unit) {\n case 'years':\n return d.getFullYear() - c.getFullYear()\n case 'quarters':\n return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4)\n case 'months':\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12\n case 'weeks':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7))\n case 'days':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24))\n case 'hours':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60))\n case 'minutes':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60))\n case 'seconds':\n return Math.floor((d.getTime() - c.getTime()) / 1000)\n default: {\n return d.getTime() - c.getTime()\n }\n }\n}\n\nfunction setHours (date: Date, count: number) {\n const d = new Date(date)\n d.setHours(count)\n return d\n}\n\nfunction setMinutes (date: Date, count: number) {\n const d = new Date(date)\n d.setMinutes(count)\n return d\n}\n\nfunction setMonth (date: Date, count: number) {\n const d = new Date(date)\n d.setMonth(count)\n return d\n}\n\nfunction setDate (date: Date, day: number) {\n const d = new Date(date)\n d.setDate(day)\n return d\n}\n\nfunction setYear (date: Date, year: number) {\n const d = new Date(date)\n d.setFullYear(year)\n return d\n}\n\nfunction startOfDay (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0)\n}\n\nfunction endOfDay (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n}\n\nexport class VuetifyDateAdapter implements DateAdapter {\n locale: string\n formats?: Record\n\n constructor (options: { locale: string, formats?: Record }) {\n this.locale = options.locale\n this.formats = options.formats\n }\n\n date (value?: any) {\n return date(value)\n }\n\n toJsDate (date: Date) {\n return date\n }\n\n toISO (date: Date): string {\n return toISO(this, date)\n }\n\n parseISO (date: string) {\n return parseISO(date)\n }\n\n addMinutes (date: Date, amount: number) {\n return addMinutes(date, amount)\n }\n\n addHours (date: Date, amount: number) {\n return addHours(date, amount)\n }\n\n addDays (date: Date, amount: number) {\n return addDays(date, amount)\n }\n\n addWeeks (date: Date, amount: number) {\n return addWeeks(date, amount)\n }\n\n addMonths (date: Date, amount: number) {\n return addMonths(date, amount)\n }\n\n getWeekArray (date: Date, firstDayOfWeek?: number | string) {\n return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined)\n }\n\n startOfWeek (date: Date, firstDayOfWeek?: number | string): Date {\n return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined)\n }\n\n endOfWeek (date: Date): Date {\n return endOfWeek(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, this.formats)\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 isAfterDay (date: Date, comparing: Date) {\n return isAfterDay(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 isSameYear (date: Date, comparing: Date) {\n return isSameYear(date, comparing)\n }\n\n setMinutes (date: Date, count: number) {\n return setMinutes(date, count)\n }\n\n setHours (date: Date, count: number) {\n return setHours(date, count)\n }\n\n setMonth (date: Date, count: number) {\n return setMonth(date, count)\n }\n\n setDate (date: Date, day: number): Date {\n return setDate(date, day)\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 (firstDayOfWeek?: number | string) {\n return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined)\n }\n\n getYear (date: Date) {\n return getYear(date)\n }\n\n getMonth (date: Date) {\n return getMonth(date)\n }\n\n getDate (date: Date) {\n return getDate(date)\n }\n\n getNextMonth (date: Date) {\n return getNextMonth(date)\n }\n\n getPreviousMonth (date: Date) {\n return getPreviousMonth(date)\n }\n\n getHours (date: Date) {\n return getHours(date)\n }\n\n getMinutes (date: Date) {\n return getMinutes(date)\n }\n\n startOfDay (date: Date) {\n return startOfDay(date)\n }\n\n endOfDay (date: Date) {\n return endOfDay(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 } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { DateAdapter } from './DateAdapter'\nimport type { LocaleInstance } from '@/composables/locale'\n\n// Adapters\nimport { VuetifyDateAdapter } from './adapters/vuetify'\n\nexport interface DateInstance extends DateModule.InternalAdapter {\n locale?: any\n}\n\n/** Supports module augmentation to specify date adapter types */\nexport namespace DateModule {\n interface Adapter {}\n\n export type InternalAdapter = {} extends Adapter ? DateAdapter : Adapter\n}\n\nexport type InternalDateOptions = {\n adapter: (new (options: { locale: any, formats?: any }) => DateInstance) | DateInstance\n formats?: Record\n locale: Record\n}\n\nexport type DateOptions = Partial\n\nexport const DateOptionsSymbol: InjectionKey = Symbol.for('vuetify:date-options')\nexport const DateAdapterSymbol: InjectionKey = Symbol.for('vuetify:date-adapter')\n\nexport function createDate (options: DateOptions | undefined, locale: LocaleInstance) {\n const _options = 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: 'cs-CZ',\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: 'no-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) as InternalDateOptions\n\n return {\n options: _options,\n instance: createInstance(_options, locale),\n }\n}\n\nfunction createInstance (options: InternalDateOptions, locale: LocaleInstance) {\n const instance = reactive(\n typeof options.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new options.adapter({\n locale: options.locale[locale.current.value] ?? locale.current.value,\n formats: options.formats,\n })\n : options.adapter\n )\n\n watch(locale.current, value => {\n instance.locale = options.locale[value] ?? value ?? instance.locale\n })\n\n return instance\n}\n\nexport function useDate (): DateInstance {\n const options = inject(DateOptionsSymbol)\n\n if (!options) throw new Error('[Vuetify] Could not find injected date options')\n\n const locale = useLocale()\n\n return createInstance(options, locale)\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, value: any) {\n const date = adapter.toJsDate(value)\n let year = date.getFullYear()\n let d1w1 = new Date(year, 0, 1)\n\n if (date < d1w1) {\n year = year - 1\n d1w1 = new Date(year, 0, 1)\n } else {\n const tv = new Date(year + 1, 0, 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","// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Ref, VNode } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type VConfirmEditSlots = {\n default: {\n model: Ref\n save: () => void\n cancel: () => void\n isPristine: boolean\n get actions (): VNode\n }\n}\n\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok',\n },\n}, 'VConfirmEdit')\n\nexport const VConfirmEdit = genericComponent (\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n 'onSave'?: (value: T) => void\n },\n slots: VConfirmEditSlots\n) => GenericProps>()({\n name: 'VConfirmEdit',\n\n props: makeVConfirmEditProps(),\n\n emits: {\n cancel: () => true,\n save: (value: any) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const internalModel = ref()\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value))\n })\n\n const { t } = useLocale()\n\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value)\n })\n\n function save () {\n model.value = internalModel.value\n emit('save', internalModel.value)\n }\n\n function cancel () {\n internalModel.value = structuredClone(toRaw(model.value))\n emit('cancel')\n }\n\n let actionsUsed = false\n useRender(() => {\n const actions = (\n <>\n \n\n \n \n )\n return (\n <>\n {\n slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions () {\n actionsUsed = true\n return actions\n },\n })\n }\n\n { !actionsUsed && actions }\n \n )\n })\n\n return {\n save,\n cancel,\n isPristine,\n }\n },\n})\n\nexport type VConfirmEdit = InstanceType\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\n\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array as PropType,\n default: () => ([]),\n },\n}, 'DataTable-expand')\n\nexport const VDataTableExpandedKey: InjectionKey<{\n expand: (item: DataTableItem, value: boolean) => void\n expanded: Ref>\n expandOnClick: Ref\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n}> = Symbol.for('vuetify:datatable:expanded')\n\ntype ExpandProps = {\n expandOnClick: boolean\n expanded: readonly string[]\n 'onUpdate:expanded': ((value: any[]) => void) | undefined\n}\n\nexport function provideExpanded (props: ExpandProps) {\n const expandOnClick = toRef(props, 'expandOnClick')\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n function expand (item: DataTableItem, value: boolean) {\n const newExpanded = new Set(expanded.value)\n\n if (!value) {\n newExpanded.delete(item.value)\n } else {\n newExpanded.add(item.value)\n }\n\n expanded.value = newExpanded\n }\n\n function isExpanded (item: DataTableItem) {\n return expanded.value.has(item.value)\n }\n\n function toggleExpand (item: DataTableItem) {\n expand(item, !isExpanded(item))\n }\n\n const data = { expand, expanded, expandOnClick, isExpanded, toggleExpand }\n\n provide(VDataTableExpandedKey, data)\n\n return data\n}\n\nexport function useExpanded () {\n const data = inject(VDataTableExpandedKey)\n\n if (!data) throw new Error('foo')\n\n return data\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableItem } from '../types'\n\nexport interface GroupableItem {\n type: 'item'\n raw: T\n}\n\nexport interface Group {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType,\n default: () => ([]),\n },\n}, 'DataTable-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref\n groupBy: Ref\n extractRows: (items: (DataTableItem | Group)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: {\n groupBy: Ref\n sortBy: Ref\n disableSort?: Ref\n}) {\n const { disableSort, groupBy, sortBy } = options\n const opened = ref(new Set())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(disableSort?.value ? [] : sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows (items: readonly (T | Group)[]) {\n function dive (group: Group): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return arr\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: readonly (T | Group)[], opened: Set): readonly (T | Group)[] {\n const flatItems: (T | Group)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems (\n items: Ref,\n groupBy: Ref,\n opened: Ref>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n","// Utilities\nimport { computed, watch } from 'vue'\nimport { deepEqual, getCurrentInstance } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { SortItem } from './sort'\n\nexport function useOptions ({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n}: {\n page: Ref\n itemsPerPage: Ref\n sortBy: Ref\n groupBy: Ref\n search: Ref\n}) {\n const vm = getCurrentInstance('VDataTable')\n\n const options = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n groupBy: groupBy.value,\n search: search.value,\n }))\n\n let oldOptions: typeof options.value | null = null\n watch(options, () => {\n if (deepEqual(oldOptions, options.value)) return\n\n // Reset page when searching\n if (oldOptions && oldOptions.search !== options.value.search) {\n page.value = 1\n }\n\n vm.emit('update:options', options.value)\n oldOptions = options.value\n }, { deep: true, immediate: true })\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watch, watchEffect } from 'vue'\nimport { clamp, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group } from './group'\nimport type { EventProp } from '@/util'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, 'DataTable-paginate')\n\nconst VDataTablePaginationSymbol: InjectionKey<{\n page: Ref\n itemsPerPage: Ref\n startIndex: Ref\n stopIndex: Ref\n pageCount: Ref\n itemsLength: Ref\n prevPage: () => void\n nextPage: () => void\n setPage: (value: number) => void\n setItemsPerPage: (value: number) => void\n}> = Symbol.for('vuetify:data-table-pagination')\n\ntype PaginationProps = {\n page: number | string\n 'onUpdate:page': EventProp | undefined\n itemsPerPage: number | string\n 'onUpdate:itemsPerPage': EventProp | undefined\n itemsLength?: number | string\n}\n\nexport function createPagination (props: PaginationProps) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1))\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10))\n\n return { page, itemsPerPage }\n}\n\nexport function providePagination (options: {\n page: Ref\n itemsPerPage: Ref\n itemsLength: Ref\n}) {\n const { page, itemsPerPage, itemsLength } = options\n\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0\n\n return itemsPerPage.value * (page.value - 1)\n })\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value\n\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value)\n })\n\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1\n\n return Math.ceil(itemsLength.value / itemsPerPage.value)\n })\n\n watchEffect(() => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value\n }\n })\n\n function setItemsPerPage (value: number) {\n itemsPerPage.value = value\n page.value = 1\n }\n\n function nextPage () {\n page.value = clamp(page.value + 1, 1, pageCount.value)\n }\n\n function prevPage () {\n page.value = clamp(page.value - 1, 1, pageCount.value)\n }\n\n function setPage (value: number) {\n page.value = clamp(value, 1, pageCount.value)\n }\n\n const data = { page, itemsPerPage, startIndex, stopIndex, pageCount, itemsLength, nextPage, prevPage, setPage, setItemsPerPage }\n\n provide(VDataTablePaginationSymbol, data)\n\n return data\n}\n\nexport function usePagination () {\n const data = inject(VDataTablePaginationSymbol)\n\n if (!data) throw new Error('Missing pagination!')\n\n return data\n}\n\nexport function usePaginatedItems (options: {\n items: Ref)[]>\n startIndex: Ref\n stopIndex: Ref\n itemsPerPage: Ref\n}) {\n const vm = getCurrentInstance('usePaginatedItems')\n\n const { items, startIndex, stopIndex, itemsPerPage } = options\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, stopIndex.value)\n })\n\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val)\n })\n\n return { paginatedItems }\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { deepEqual, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\nimport type { EventProp } from '@/util'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set\n }) => Set\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set\n }) => Set\n}\n\ntype SelectionProps = Pick & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n valueComparator: typeof deepEqual\n 'onUpdate:modelValue': EventProp<[any[]]> | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : [])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType,\n default: () => ([]),\n },\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref, currentPage: Ref }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v\n }))\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(item.value))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(item.value))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n select([item], !isSelected([item]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return !!items.length && isSelected(items)\n })\n const showSelectAll = computed(() => selectStrategy.value.showSelectAll)\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n","// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType,\n default: () => ([]),\n },\n customKeySort: Object as PropType>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(props, 'mustSort')\n const multiSort = toRef(props, 'multiSort')\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref\n mustSort: Ref\n multiSort: Ref\n page?: Ref\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, { key: column.key, order: 'asc' }]\n else newSortBy = [{ key: column.key, order: 'asc' }]\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems (\n props: {\n customKeySort: Record | undefined\n },\n items: Ref,\n sortBy: Ref,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref | undefined>\n sortRawFunctions?: Ref | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record\n sortFunctions?: Record\n sortRawFunctions?: Record\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n","// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GroupableItem } from '@/components/VDataTable/composables/group'\nimport type { SelectableItem } from '@/components/VDataTable/composables/select'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataIteratorItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\nexport interface DataIteratorItem extends GroupableItem, SelectableItem {\n value: unknown\n}\n\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType,\n default: null,\n },\n returnObject: Boolean,\n}, 'DataIterator-items')\n\nexport function transformItem (\n props: Omit,\n item: any\n): DataIteratorItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n\n return {\n type: 'item',\n value,\n selectable,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit,\n items: DataIteratorItemProps['items']\n) {\n const array: DataIteratorItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useDataIteratorItems (props: DataIteratorItemProps) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n","// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { makeDataTableExpandProps, provideExpanded } from '@/components/VDataTable/composables/expand'\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from '@/components/VDataTable/composables/group'\nimport { useOptions } from '@/components/VDataTable/composables/options'\nimport {\n createPagination,\n makeDataTablePaginateProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/VDataTable/composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from '@/components/VDataTable/composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from '@/components/VDataTable/composables/sort'\n\n// Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from './composables/items'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { LoaderSlot } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { DataIteratorItem } from './composables/items'\nimport type { Group } from '@/components/VDataTable/composables/group'\nimport type { SortItem } from '@/components/VDataTable/composables/sort'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\ntype VDataIteratorSlotProps = {\n page: number\n itemsPerPage: number\n sortBy: readonly SortItem[]\n pageCount: number\n toggleSort: ReturnType['toggleSort']\n prevPage: ReturnType['prevPage']\n nextPage: ReturnType['nextPage']\n setPage: ReturnType['setPage']\n setItemsPerPage: ReturnType['setItemsPerPage']\n isSelected: ReturnType['isSelected']\n select: ReturnType['select']\n selectAll: ReturnType['selectAll']\n toggleSelect: ReturnType['toggleSelect']\n isExpanded: ReturnType['isExpanded']\n toggleExpand: ReturnType['toggleExpand']\n isGroupOpen: ReturnType['isGroupOpen']\n toggleGroup: ReturnType['toggleGroup']\n items: readonly DataIteratorItem[]\n groupedItems: readonly (DataIteratorItem | Group>)[]\n}\n\nexport type VDataIteratorSlots = {\n default: VDataIteratorSlotProps\n header: VDataIteratorSlotProps\n footer: VDataIteratorSlotProps\n loader: LoaderSlotProps\n 'no-data': never\n}\n\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({ itemsPerPage: 5 }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition as Component,\n hideOnLeave: true,\n },\n }),\n}, 'VDataIterator')\n\nexport const VDataIterator = genericComponent (\n props: {\n items?: readonly T[]\n },\n slots: VDataIteratorSlots,\n) => GenericProps>()({\n name: 'VDataIterator',\n\n props: makeVDataIteratorProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:groupBy': (value: any) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const search = toRef(props, 'search')\n\n const { items } = useDataIteratorItems(props)\n const { filteredItems } = useFilter(props, items, search, { transform: item => item.raw })\n\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { transform: item => item.raw })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const itemsLength = computed(() => flatItems.value.length)\n\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage,\n } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n }))\n\n useRender(() => (\n \n { slots.header?.(slotProps.value) }\n\n \n { props.loading ? (\n \n { slotProps => slots.loader?.(slotProps) }\n \n ) : (\n
    \n { !paginatedItems.value.length\n ? slots['no-data']?.()\n : slots.default?.(slotProps.value)\n }\n
    \n )}\n
    \n\n { slots.footer?.(slotProps.value) }\n \n ))\n\n return {}\n },\n})\n\nexport type VDataIterator = InstanceType\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\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n 'aria-label': string\n 'aria-disabled': 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()({\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 != null) 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 <= 0) return []\n else 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()\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 'aria-current': isActive,\n 'aria-label': 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 'aria-label': t(props.firstAriaLabel),\n 'aria-disabled': 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 'aria-label': t(props.previousAriaLabel),\n 'aria-disabled': 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 'aria-label': t(props.nextAriaLabel),\n 'aria-disabled': 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 'aria-label': t(props.lastAriaLabel),\n 'aria-disabled': 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 \n
      \n { props.showFirstLastPage && (\n
    • \n { slots.first ? slots.first(controls.value.first!) : (\n \n )}\n
    • \n )}\n\n
    • \n { slots.prev ? slots.prev(controls.value.prev) : (\n \n )}\n
    • \n\n { items.value.map((item, index) => (\n \n { slots.item ? slots.item(item) : (\n { item.page }\n )}\n \n ))}\n\n \n { slots.next ? slots.next(controls.value.next) : (\n \n )}\n \n\n { props.showFirstLastPage && (\n \n { slots.last ? slots.last(controls.value.last!) : (\n \n )}\n \n )}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType\n","// Utilities\nimport { onBeforeUpdate, ref } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useRefs () {\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 './VDataTableFooter.sass'\n\n// Components\nimport { VPagination } from '@/components/VPagination'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { usePagination } from './composables/paginate'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'VDataTableFooter')\n\nexport const VDataTableFooter = genericComponent<{ prepend: never }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1\n ? t('$vuetify.dataFooter.itemsPerPageAll')\n : String(option),\n }\n }\n\n return {\n ...option,\n title: !isNaN(Number(option.title)) ? option.title : t(option.title),\n }\n })\n ))\n\n useRender(() => {\n const paginationProps = VPagination.filterProps(props)\n\n return (\n
    \n { slots.prepend?.() }\n\n \n\n \n\n \n
    \n )\n })\n\n return {}\n },\n})\n","// Utilities\nimport { convertToUnit, defineFunctionalComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean,\n}, (props, { slots }) => {\n const Tag = props.tag ?? 'td'\n return (\n \n { slots.default?.() }\n \n )\n})\n","// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref\n columns: Ref\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly, keys = new Set()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n function setFixed (item: InternalDataTableHeader, parentFixed = false) {\n if (!item) return\n\n if (parentFixed) {\n item.fixed = true\n }\n\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true)\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true\n } else if (isNaN(+item.width!)) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n }\n seenFixed = true\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i])\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i])\n }\n\n function setFixedOffset (item: InternalDataTableHeader, fixedOffset = 0) {\n if (!item) return fixedOffset\n\n if (item.children) {\n item.fixedOffset = fixedOffset\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset)\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset\n fixedOffset += parseFloat(item.width || '0') || 0\n }\n\n return fixedOffset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref\n showSelect?: Ref\n showExpand?: Ref\n }\n) {\n const headers = ref([])\n const columns = ref([])\n const sortFunctions = ref>({})\n const sortRawFunctions = ref>({})\n const filterFunctions = ref({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef['sortBy']>\n someSelected: UnwrapRef['someSelected']>\n allSelected: UnwrapRef['allSelected']>\n toggleSort: ReturnType['toggleSort']\n selectAll: ReturnType['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType['selectAll']\n isSorted: ReturnType['isSorted']\n toggleSort: ReturnType['toggleSort']\n sortBy: UnwrapRef['sortBy']>\n someSelected: UnwrapRef['someSelected']>\n allSelected: UnwrapRef['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n disableSort: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType>,\n },\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!props.sticky && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': props.sticky,\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n toggleSort(column) : undefined }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n \n ))\n }\n\n return (\n
    \n { column.title }\n { column.sortable && !props.disableSort && (\n \n )}\n { props.multiSort && isSorted(column) && (\n \n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n
    \n )}\n \n )\n },\n }}\n \n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {})\n\n const displayItems = computed(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n \n
    \n sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n \n \n ),\n }}\n \n
    \n \n )\n }\n\n useRender(() => {\n return mobile.value ? (\n \n \n \n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n \n { row.map((column, x) => (\n \n ))}\n \n ))}\n\n { props.loading && (\n \n \n \n \n \n )}\n \n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useGroupBy } from './composables/group'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\n\nexport type VDataTableGroupHeaderRowSlots = {\n 'data-table-group': { item: Group, count: number, props: Record }\n 'data-table-select': { props: Record }\n}\n\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object as PropType,\n required: true,\n },\n}, 'VDataTableGroupHeaderRow')\n\nexport const VDataTableGroupHeaderRow = genericComponent()({\n name: 'VDataTableGroupHeaderRow',\n\n props: makeVDataTableGroupHeaderRowProps(),\n\n setup (props, { slots }) {\n const { isGroupOpen, toggleGroup, extractRows } = useGroupBy()\n const { isSelected, isSomeSelected, select } = useSelection()\n const { columns } = useHeaders()\n\n const rows = computed(() => {\n return extractRows([props.item])\n })\n\n return () => (\n \n { columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next'\n const onClick = () => toggleGroup(props.item)\n\n return slots['data-table-group']?.({ item: props.item, count: rows.value.length, props: { icon, onClick } }) ?? (\n \n \n { props.item.value }\n ({ rows.value.length })\n \n )\n }\n\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value)\n const indeterminate = isSomeSelected(rows.value) && !modelValue\n const selectGroup = (v: boolean) => select(rows.value, v)\n return slots['data-table-select']?.({ props: { modelValue, indeterminate, 'onUpdate:modelValue': selectGroup } }) ?? (\n \n \n \n )\n }\n\n return \n })}\n \n )\n },\n})\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\n\n// Utilities\nimport { toDisplayString, withModifiers } from 'vue'\nimport { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { CellProps, DataTableItem, ItemKeySlot } from './types'\nimport type { VDataTableHeaderCellColumnSlotProps } from './VDataTableHeaders'\nimport type { GenericProps } from '@/util'\n\nexport type VDataTableRowSlots = {\n 'item.data-table-select': Omit, 'value'>\n 'item.data-table-expand': Omit, 'value'>\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & {\n [key: `item.${string}`]: ItemKeySlot\n [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps\n}\n\nexport const makeVDataTableRowProps = propsFactory({\n index: Number,\n item: Object as PropType,\n cellProps: [Object, Function] as PropType>,\n onClick: EventProp<[MouseEvent]>(),\n onContextmenu: EventProp<[MouseEvent]>(),\n onDblclick: EventProp<[MouseEvent]>(),\n\n ...makeDisplayProps(),\n}, 'VDataTableRow')\n\nexport const VDataTableRow = genericComponent(\n props: {\n item?: DataTableItem\n cellProps?: CellProps\n },\n slots: VDataTableRowSlots,\n) => GenericProps>()({\n name: 'VDataTableRow',\n\n props: makeVDataTableRowProps(),\n\n setup (props, { slots }) {\n const { displayClasses, mobile } = useDisplay(props, 'v-data-table__tr')\n const { isSelected, toggleSelect, someSelected, allSelected, selectAll } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { columns } = useHeaders()\n\n useRender(() => (\n \n { props.item && columns.value.map((column, i) => {\n const item = props.item!\n const slotName = `item.${column.key}` as const\n const headerSlotName = `header.${column.key}` as const\n const slotProps = {\n index: props.index!,\n item: item.raw,\n internalItem: item,\n value: getObjectValueByPath(item.columns, column.key),\n column,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n } satisfies ItemKeySlot\n\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon: () => '',\n }\n\n const cellProps = typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n column,\n })\n : props.cellProps\n const columnCellProps = typeof column.cellProps === 'function'\n ? column.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n })\n : column.cellProps\n\n return (\n \n {{\n default: () => {\n if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? (\n toggleSelect(item), ['stop']) }\n />\n )\n }\n\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? (\n toggleExpand(item), ['stop']) }\n />\n )\n }\n\n const displayValue = toDisplayString(slotProps.value)\n\n return !mobile.value ? displayValue : (\n <>\n
    \n { slots[headerSlotName]?.(columnSlotProps) ?? column.title }\n
    \n\n
    \n { slots[slotName]?.(slotProps) ?? displayValue }\n
    \n \n )\n },\n }}\n \n )\n })}\n \n ))\n },\n})\n\nexport type VDataTableRow = InstanceType\n","// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useGroupBy } from './composables/group'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { Fragment, mergeProps } from 'vue'\nimport { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\nimport type { CellProps, DataTableItem, GroupHeaderSlot, ItemSlot, RowProps } from './types'\nimport type { VDataTableGroupHeaderRowSlots } from './VDataTableGroupHeaderRow'\nimport type { VDataTableRowSlots } from './VDataTableRow'\nimport type { GenericProps } from '@/util'\n\nexport type VDataTableRowsSlots = VDataTableGroupHeaderRowSlots & VDataTableRowSlots & {\n item: ItemSlot & { props: Record }\n loading: never\n 'group-header': GroupHeaderSlot\n 'no-data': never\n 'expanded-row': ItemSlot\n}\n\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideNoData: Boolean,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowProps: [Object, Function] as PropType>,\n cellProps: [Object, Function] as PropType>,\n\n ...makeDisplayProps(),\n}, 'VDataTableRows')\n\nexport const VDataTableRows = genericComponent(\n props: {\n items?: readonly (DataTableItem | Group)[]\n },\n slots: VDataTableRowsSlots,\n) => GenericProps>()({\n name: 'VDataTableRows',\n\n inheritAttrs: false,\n\n props: makeVDataTableRowsProps(),\n\n setup (props, { attrs, slots }) {\n const { columns } = useHeaders()\n const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n const { isSelected, toggleSelect } = useSelection()\n const { toggleGroup, isGroupOpen } = useGroupBy()\n const { t } = useLocale()\n const { mobile } = useDisplay(props)\n\n useRender(() => {\n if (props.loading && (!props.items.length || slots.loading)) {\n return (\n \n \n { slots.loading?.() ?? t(props.loadingText) }\n \n \n )\n }\n\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return (\n \n \n { slots['no-data']?.() ?? t(props.noDataText) }\n \n \n )\n }\n\n return (\n <>\n { props.items.map((item, index) => {\n if (item.type === 'group') {\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen,\n } satisfies GroupHeaderSlot\n\n return slots['group-header'] ? slots['group-header'](slotProps) : (\n slotProps) }\n v-slots={ slots }\n />\n )\n }\n\n const slotProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n } satisfies ItemSlot\n\n const itemSlotProps = {\n ...slotProps,\n props: mergeProps(\n {\n key: `item_${item.key ?? item.index}`,\n onClick: expandOnClick.value ? () => {\n toggleExpand(item)\n } : undefined,\n index,\n item,\n cellProps: props.cellProps,\n mobile: mobile.value,\n },\n getPrefixedEventHandlers(attrs, ':row', () => slotProps),\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: slotProps.item,\n index: slotProps.index,\n internalItem: slotProps.internalItem,\n })\n : props.rowProps,\n ),\n }\n\n return (\n \n { slots.item ? slots.item(itemSlotProps) : (\n \n )}\n\n { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n \n )\n })}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType\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()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n \n { slots.top?.() }\n\n { slots.default ? (\n \n \n { slots.default() }\n
    \n \n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType\n","// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { CellProps, DataTableItem, InternalDataTableHeader, RowProps } from '../types'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataTableItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType,\n default: null,\n },\n rowProps: [Object, Function] as PropType>,\n cellProps: [Object, Function] as PropType>,\n returnObject: Boolean,\n}, 'DataTable-items')\n\nexport function transformItem (\n props: Omit,\n item: any,\n index: number,\n columns: InternalDataTableHeader[]\n): DataTableItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n const itemColumns = columns.reduce((obj, column) => {\n if (column.key != null) obj[column.key] = getPropertyFromItem(item, column.value!)\n return obj\n }, {} as Record)\n\n return {\n type: 'item',\n key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit,\n items: DataTableItemProps['items'],\n columns: InternalDataTableHeader[]\n): DataTableItem[] {\n return items.map((item, index) => transformItem(props, item, index, columns))\n}\n\nexport function useDataTableItems (props: DataTableItemProps, columns: Ref) {\n const items = computed(() => transformItems(props, props.items, columns.value))\n\n return { items }\n}\n","// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from './VDataTableHeaders'\nimport { makeVDataTableRowsProps, VDataTableRows } from './VDataTableRows'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTableProps, VTable } from '@/components/VTable/VTable'\n\n// Composables\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemsProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Utilities\nimport { computed, toRef, toRefs } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly, UnwrapRef } from 'vue'\nimport type { Group } from './composables/group'\nimport type { CellProps, DataTableHeader, DataTableItem, InternalDataTableHeader, RowProps } from './types'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport type VDataTableSlotProps = {\n page: number\n itemsPerPage: number\n sortBy: UnwrapRef['sortBy']>\n pageCount: number\n toggleSort: ReturnType['toggleSort']\n setItemsPerPage: ReturnType['setItemsPerPage']\n someSelected: boolean\n allSelected: boolean\n isSelected: ReturnType['isSelected']\n select: ReturnType['select']\n selectAll: ReturnType['selectAll']\n toggleSelect: ReturnType['toggleSelect']\n isExpanded: ReturnType['isExpanded']\n toggleExpand: ReturnType['toggleExpand']\n isGroupOpen: ReturnType['isGroupOpen']\n toggleGroup: ReturnType['toggleGroup']\n items: readonly T[]\n internalItems: readonly DataTableItem[]\n groupedItems: readonly (DataTableItem | Group>)[]\n columns: InternalDataTableHeader[]\n headers: InternalDataTableHeader[][]\n}\n\nexport type VDataTableSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n default: VDataTableSlotProps\n colgroup: VDataTableSlotProps\n top: VDataTableSlotProps\n body: VDataTableSlotProps\n tbody: VDataTableSlotProps\n thead: VDataTableSlotProps\n tfoot: VDataTableSlotProps\n bottom: VDataTableSlotProps\n 'body.prepend': VDataTableSlotProps\n 'body.append': VDataTableSlotProps\n 'footer.prepend': never\n}\n\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n\n hideDefaultBody: Boolean,\n hideDefaultFooter: Boolean,\n hideDefaultHeader: Boolean,\n width: [String, Number],\n search: String,\n\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps(),\n}, 'DataTable')\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps(),\n}, 'VDataTable')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTable = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n headers?: DeepReadonly>[]>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableSlots>,\n) => GenericProps>()({\n name: 'VDataTable',\n\n props: makeVDataTableProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const { disableSort } = toRefs(props)\n\n const {\n columns,\n headers,\n sortFunctions,\n sortRawFunctions,\n filterFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({ ...item.raw, ...item.columns }),\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex, pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value.map(item => item.raw),\n internalItems: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props)\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n \n \n \n )}\n { slots.thead?.(slotProps.value) }\n { !props.hideDefaultBody && (\n \n { slots['body.prepend']?.(slotProps.value) }\n { slots.body ? slots.body(slotProps.value) : (\n \n )}\n { slots['body.append']?.(slotProps.value) }\n \n )}\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n \n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && (\n <>\n \n\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType\n","// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey, TemplateRef } from '@/util'\n\ntype VDataTableVirtualSlotProps = Omit<\n VDataTableSlotProps,\n | 'setItemsPerPage'\n | 'page'\n | 'pageCount'\n | 'itemsPerPage'\n>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n colgroup: VDataTableVirtualSlotProps\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n 'body.prepend': VDataTableVirtualSlotProps\n 'body.append': VDataTableVirtualSlotProps\n item: {\n itemRef: TemplateRef\n }\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableVirtual = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableVirtualSlots>,\n) => GenericProps>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { disableSort } = toRefs(props)\n\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({ ...item.raw, ...item.columns }),\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend,\n } = useVirtual(props, flatItems)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n \n \n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n \n \n \n )}\n { !props.hideDefaultBody && (\n \n \n \n \n\n { slots['body.prepend']?.(slotProps.value) }\n\n \n {{\n ...slots,\n item: itemSlotProps => (\n handleItemResize(itemSlotProps.internalItem.index, height) }\n >\n { ({ itemRef }) => (\n slots.item?.({ ...itemSlotProps, itemRef }) ?? (\n \n )\n )}\n \n ),\n }}\n \n\n { slots['body.append']?.(slotProps.value) }\n\n \n \n \n \n )}\n
    \n \n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n \n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType\n","// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDivider } from '@/components/VDivider'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, provide, toRef, toRefs } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'VDataTableServer')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableServer = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableSlots>,\n) => GenericProps>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const { disableSort } = toRefs(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened, isGroupOpen, toggleGroup, extractRows } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems: items,\n currentPage: items,\n })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const itemsWithoutGroups = computed(() => extractRows(items.value))\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value.map(item => item.raw),\n internalItems: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props)\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n \n \n \n )}\n { slots.thead?.(slotProps.value) }\n { !props.hideDefaultBody && (\n \n { slots['body.prepend']?.(slotProps.value) }\n { slots.body ? slots.body(slotProps.value) : (\n \n )}\n { slots['body.append']?.(slotProps.value) }\n \n )}\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n \n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && (\n <>\n \n\n \n \n ),\n }}\n \n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\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 ...makeDimensionProps(),\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 const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VContainer = InstanceType\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}`\ntype BreakpointOrder = `order${Capitalize}`\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>)\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>)\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>)\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 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,\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\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}`\ntype BreakpointJustify = `justify${Capitalize}`\ntype BreakpointAlignContent = `alignContent${Capitalize}`\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) {\n return breakpoints.reduce((props, val) => {\n const prefixKey = prefix + capitalize(val) as Name\n props[prefixKey] = def()\n return props\n }, {} as Record>)\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('align', () => ({\n type: String as PropType,\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('justify', () => ({\n type: String as PropType,\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('alignContent', () => ({\n type: String as PropType,\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,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String as PropType,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String as PropType,\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\n","// Styles\nimport './VGrid.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer')\n\nexport type VSpacer = InstanceType\n","// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDatePickerControlsProps = propsFactory({\n active: {\n type: [String, Array] as PropType,\n default: undefined,\n },\n disabled: {\n type: [Boolean, String, Array] as PropType,\n default: false,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup',\n },\n text: String,\n viewMode: {\n type: String as PropType<'month' | 'months' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true,\n },\n\n setup (props, { emit }) {\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('text')\n : !!props.disabled\n })\n const disableYear = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('mode')\n : !!props.disabled\n })\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('prev')\n : !!props.disabled\n })\n const disableNext = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('next')\n : !!props.disabled\n })\n\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n function onClickYear () {\n emit('click:year')\n }\n\n function onClickMonth () {\n emit('click:month')\n }\n\n useRender(() => {\n // TODO: add slot support and scope defaults\n return (\n \n
    \n\n \n\n \n\n \n \n\n \n \n \n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerControls = InstanceType\n","// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp<[MouseEvent]>(),\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n click: () => true,\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClick () {\n emit('click')\n }\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n \n { slots.prepend && (\n
    \n { slots.prepend() }\n
    \n )}\n\n { hasContent && (\n \n
    \n { slots.default?.() ?? props.header }\n
    \n
    \n )}\n\n { hasAppend && (\n
    \n { !slots.append ? (\n \n ) : (\n \n { slots.append?.() }\n \n )}\n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType\n","// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType boolean)>,\n disabled: Boolean,\n displayValue: null as any as PropType,\n modelValue: Array as PropType,\n month: [Number, String],\n max: null as any as PropType,\n min: null as any as PropType,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: [Number, String],\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0)\n\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n","// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = computed(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (model.value.length === 0) {\n rangeStart.value = undefined\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0]\n rangeStop.value = undefined\n }\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days')\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n
    \n { props.showWeek && (\n
    \n { !props.hideWeekdays && (\n
     
    \n )}\n { weekNumbers.value.map(week => (\n { week }
    \n ))}\n
    \n )}\n\n \n \n { !props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => (\n { weekDay }\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n \n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n \n )}\n \n )}\n \n )\n })}\n \n \n \n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType\n","// Styles\nimport './VDatePickerMonths.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthsSlots = {\n month: {\n month: {\n text: string\n value: number\n }\n i: number\n props: {\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null as any as PropType,\n max: null as any as PropType,\n modelValue: Number,\n year: Number,\n}, 'VDatePickerMonths')\n\nexport const VDatePickerMonths = genericComponent()({\n name: 'VDatePickerMonths',\n\n props: makeVDatePickerMonthsProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date())\n if (props.year) {\n date = adapter.setYear(date, props.year)\n }\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort')\n const isDisabled =\n !!(\n (props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date)) ||\n (props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))))\n )\n date = adapter.getNextMonth(date)\n\n return {\n isDisabled,\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date())\n })\n\n useRender(() => (\n \n
    \n { months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n disabled: month.isDisabled,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i),\n } as const\n\n function onClick (i: number) {\n if (model.value === i) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = i\n }\n\n return slots.month?.({\n month,\n i,\n props: btnProps,\n }) ?? (\n \n )\n })}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VDatePickerMonths = InstanceType\n","// Styles\nimport './VDatePickerYears.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VDatePickerYearsSlots = {\n year: {\n year: {\n text: string\n value: number\n }\n i: number\n props: {\n active: boolean\n color?: string\n rounded: boolean\n text: string\n variant: 'flat' | 'text'\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null as any as PropType,\n max: null as any as PropType,\n modelValue: Number,\n}, 'VDatePickerYears')\n\nexport const VDatePickerYears = genericComponent()({\n name: 'VDatePickerYears',\n\n props: makeVDatePickerYearsProps(),\n\n emits: {\n 'update:modelValue': (year: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n const years = computed(() => {\n const year = adapter.getYear(adapter.date())\n\n let min = year - 100\n let max = year + 52\n\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min))\n }\n\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max))\n }\n\n let date = adapter.startOfYear(adapter.date())\n\n date = adapter.setYear(date, min)\n\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year')\n date = adapter.setYear(date, adapter.getYear(date) + 1)\n\n return {\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date())\n })\n\n const yearRef = templateRef()\n\n onMounted(async () => {\n await nextTick()\n yearRef.el?.scrollIntoView({ block: 'center' })\n })\n\n useRender(() => (\n \n
    \n { years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = year.value\n },\n } as const\n\n return slots.year?.({\n year,\n i,\n props: btnProps,\n }) ?? (\n \n )\n })}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VDatePickerYears = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VPickerTitle = createSimpleFunctional('v-picker-title')\n\nexport type VPickerTitle = InstanceType\n","// Styles\nimport './VPicker.sass'\n\n// Components\nimport { VPickerTitle } from './VPickerTitle'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VPickerSlots = {\n header: never\n default: never\n actions: never\n title: never\n}\n\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n\n ...makeVSheetProps(),\n}, 'VPicker')\n\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n\n props: makeVPickerProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n const hasTitle = !!(props.title || slots.title)\n\n return (\n \n { !props.hideHeader && (\n \n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { slots.header && (\n
    \n { slots.header() }\n
    \n )}\n \n )}\n\n
    \n { slots.default?.() }\n
    \n\n { slots.actions && (\n \n
    \n { slots.actions() }\n
    \n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VPicker = InstanceType\n","// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit & {\n header: {\n header: string\n transition: string\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth (value: number) {\n if (viewMode.value === 'months') onClickMonth()\n\n emit('update:month', value)\n }\n\n function onUpdateYear (value: number) {\n if (viewMode.value === 'year') onClickYear()\n\n emit('update:year', value)\n }\n\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal)\n const arrAfter = wrapInArray(val)\n\n if (!arrAfter.length) return\n\n const before = adapter.date(arrBefore[arrBefore.length - 1])\n const after = adapter.date(arrAfter[arrAfter.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth(month.value)\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear(year.value)\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n slots.title?.() ?? (\n
    \n { t(props.title) }\n
    \n ),\n header: () => slots.header ? (\n \n { slots.header?.(headerProps) }\n \n ) : (\n \n ),\n default: () => (\n <>\n \n\n \n { viewMode.value === 'months' ? (\n \n ) : viewMode.value === 'year' ? (\n \n ) : (\n \n )}\n \n \n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType\n","// Styles\nimport './VEmptyState.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport type VEmptyStateSlots = {\n actions: {\n props: {\n onClick: (e: Event) => void\n }\n }\n default: never\n headline: never\n title: never\n media: never\n text: never\n}\n\nexport const makeVEmptyStateProps = propsFactory({\n actionText: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n image: String,\n justify: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'center',\n },\n headline: String,\n title: String,\n text: String,\n textWidth: {\n type: [Number, String],\n default: 500,\n },\n href: String,\n to: String,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeSizeProps({ size: undefined }),\n ...makeThemeProps(),\n}, 'VEmptyState')\n\nexport const VEmptyState = genericComponent()({\n name: 'VEmptyState',\n\n props: makeVEmptyStateProps(),\n\n emits: {\n 'click:action': (e: Event) => true,\n },\n\n setup (props, { emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { dimensionStyles } = useDimension(props)\n const { displayClasses } = useDisplay()\n\n function onClickAction (e: Event) {\n emit('click:action', e)\n }\n\n useRender(() => {\n const hasActions = !!(slots.actions || props.actionText)\n const hasHeadline = !!(slots.headline || props.headline)\n const hasTitle = !!(slots.title || props.title)\n const hasText = !!(slots.text || props.text)\n const hasMedia = !!(slots.media || props.image || props.icon)\n const size = props.size || (props.image ? 200 : 96)\n\n return (\n \n { hasMedia && (\n
    \n { !slots.media ? (\n <>\n { props.image ? (\n \n ) : props.icon ? (\n \n ) : undefined }\n \n ) : (\n \n { slots.media() }\n \n )}\n
    \n )}\n\n { hasHeadline && (\n
    \n { slots.headline?.() ?? props.headline }\n
    \n )}\n\n { hasTitle && (\n
    \n { slots.title?.() ?? props.title }\n
    \n )}\n\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default && (\n
    \n { slots.default() }\n
    \n )}\n\n { hasActions && (\n
    \n \n {\n slots.actions?.({ props: { onClick: onClickAction } }) ?? (\n \n )\n }\n \n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VEmptyState = InstanceType\n","// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey = Symbol.for('vuetify:v-expansion-panel')\n","// Components\nimport { VExpansionPanelSymbol } from './shared'\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 \n \n { slots.default && hasContent.value && (\n
    \n { slots.default?.() }\n
    \n )}\n \n
    \n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelText = InstanceType\n","// Components\nimport { VExpansionPanelSymbol } from './shared'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\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 focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent()({\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 const { dimensionStyles } = useDimension(props)\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 const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon)\n\n useRender(() => (\n \n \n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n \n \n { slots.actions?.(slotProps.value) ?? }\n \n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType\n","// Components\nimport { VExpansionPanelSymbol } from './shared'\nimport { makeVExpansionPanelTextProps, VExpansionPanelText } from './VExpansionPanelText'\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n ...makeVExpansionPanelTextProps(),\n}, 'VExpansionPanel')\n\nexport type VExpansionPanelSlots = {\n default: never\n title: never\n text: never\n}\n\nexport const VExpansionPanel = genericComponent()({\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((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 useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props)\n const expansionPanelTextProps = VExpansionPanelText.filterProps(props)\n\n return (\n \n \n\n \n { hasTitle && (\n \n { slots.title ? slots.title() : props.title }\n \n )}\n\n { hasText && (\n \n { slots.text ? slots.text() : props.text }\n \n )}\n\n { slots.default?.() }\n \n \n )\n })\n\n return {\n groupItem,\n }\n },\n})\n\nexport type VExpansionPanel = InstanceType\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { VExpansionPanelSymbol } from './shared'\nimport { makeVExpansionPanelProps } from './VExpansionPanel'\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, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport type VExpansionPanelSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VExpansionPanelSlots = {\n default: VExpansionPanelSlot\n}\n\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n\n ...makeGroupProps(),\n ...pick(makeVExpansionPanelProps(), [\n 'bgColor',\n 'collapseIcon',\n 'color',\n 'eager',\n 'elevation',\n 'expandIcon',\n 'focusable',\n 'hideActions',\n 'readonly',\n 'ripple',\n 'rounded',\n 'tile',\n 'static',\n ]),\n ...makeThemeProps(),\n ...makeComponentProps(),\n ...makeTagProps(),\n\n variant: {\n type: String as PropType,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\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 const { next, prev } = 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 bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n \n { slots.default?.({ prev, next }) }\n \n ))\n\n return {\n next,\n prev,\n }\n },\n})\n\nexport type VExpansionPanels = InstanceType\n","// Styles\nimport './VFab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeLocationProps } from '@/composables/location'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\nimport type { Position } from '@/composables/layout'\n\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n ...omit(makeVBtnProps({ active: true }), ['location']),\n ...makeLayoutItemProps(),\n ...makeLocationProps(),\n ...makeTransitionProps({ transition: 'fab-transition' }),\n}, 'VFab')\n\nexport const VFab = genericComponent()({\n name: 'VFab',\n\n props: makeVFabProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const height = shallowRef(56)\n const layoutItemStyles = ref()\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n height.value = entries[0].target.clientHeight\n })\n\n const hasPosition = computed(() => props.app || props.absolute)\n\n const position = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location?.split(' ').shift() ?? 'bottom'\n }) as ComputedRef\n\n const orientation = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location?.split(' ')[1] ?? 'end'\n })\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute'),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n const vFabRef = ref()\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n \n
    \n \n \n \n
    \n \n )\n })\n\n return {}\n },\n})\n\nexport type VFab = InstanceType\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 hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType,\n default: (props: any) => props.multiple ? [] : null,\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()({\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 | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\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()\n const vFieldRef = ref()\n const inputRef = ref()\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 inputRef.value?.click()\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 \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n {\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
    \n { !!model.value?.length && !props.hideInput && (\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 \n ))\n : fileNames.value.join(', ')\n )}\n
    \n \n ),\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n
    \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType\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'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } 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 layoutItemStyles = ref()\n\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\n useToggleScope(() => props.app, () => {\n const layout = 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 watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VFooter = InstanceType\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\n}\n\nexport const VForm = genericComponent()({\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()\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 \n { slots.default?.(form) }\n \n )))\n\n return forwardRefs(form, formRef)\n },\n})\n\nexport type VForm = InstanceType\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 | null\n props: Record\n }\n}\n\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null,\n },\n\n ...makeDelayProps(),\n}, 'VHover')\n\nexport const VHover = genericComponent()({\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\n","// Styles\nimport './VInfiniteScroll.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type InfiniteScrollSide = 'start' | 'end' | 'both'\nexport type InfiniteScrollStatus = 'ok' | 'empty' | 'loading' | 'error'\n\ntype InfiniteScrollSlot = {\n side: InfiniteScrollSide\n props: Record\n}\n\ntype VInfiniteScrollSlots = {\n default: never\n loading: InfiniteScrollSlot\n error: InfiniteScrollSlot\n empty: InfiniteScrollSlot\n 'load-more': InfiniteScrollSlot\n}\n\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String as PropType<'vertical' | 'horizontal'>,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n side: {\n type: String as PropType,\n default: 'end',\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n },\n mode: {\n type: String as PropType<'intersect' | 'manual'>,\n default: 'intersect',\n validator: (v: any) => ['intersect', 'manual'].includes(v),\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore',\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty',\n },\n\n ...makeDimensionProps(),\n ...makeTagProps(),\n}, 'VInfiniteScroll')\n\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n\n props: {\n side: {\n type: String as PropType,\n required: true,\n },\n rootMargin: String,\n },\n\n emits: {\n intersect: (side: InfiniteScrollSide, isIntersecting: boolean) => true,\n },\n\n setup (props, { emit }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n\n watch(isIntersecting, async val => {\n emit('intersect', props.side, val)\n })\n\n useRender(() => (\n  \n ))\n\n return {}\n },\n})\n\nexport const VInfiniteScroll = genericComponent()({\n name: 'VInfiniteScroll',\n\n props: makeVInfiniteScrollProps(),\n\n emits: {\n load: (options: { side: InfiniteScrollSide, done: (status: InfiniteScrollStatus) => void }) => true,\n },\n\n setup (props, { slots, emit }) {\n const rootEl = ref()\n const startStatus = shallowRef('ok')\n const endStatus = shallowRef('ok')\n const margin = computed(() => convertToUnit(props.margin))\n const isIntersecting = shallowRef(false)\n\n function setScrollAmount (amount: number) {\n if (!rootEl.value) return\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n rootEl.value[property] = amount\n }\n\n function getScrollAmount () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n return rootEl.value[property]\n }\n\n function getScrollSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth'\n return rootEl.value[property]\n }\n\n function getContainerSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth'\n return rootEl.value[property]\n }\n\n onMounted(() => {\n if (!rootEl.value) return\n\n if (props.side === 'start') {\n setScrollAmount(getScrollSize())\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2)\n }\n })\n\n function setStatus (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (side === 'start') {\n startStatus.value = status\n } else if (side === 'end') {\n endStatus.value = status\n }\n }\n\n function getStatus (side: string) {\n return side === 'start' ? startStatus.value : endStatus.value\n }\n\n let previousScrollSize = 0\n function handleIntersect (side: InfiniteScrollSide, _isIntersecting: boolean) {\n isIntersecting.value = _isIntersecting\n if (isIntersecting.value) {\n intersecting(side)\n }\n }\n\n function intersecting (side: InfiniteScrollSide) {\n if (props.mode !== 'manual' && !isIntersecting.value) return\n\n const status = getStatus(side)\n if (!rootEl.value || ['empty', 'loading'].includes(status)) return\n\n previousScrollSize = getScrollSize()\n setStatus(side, 'loading')\n\n function done (status: InfiniteScrollStatus) {\n setStatus(side, status)\n\n nextTick(() => {\n if (status === 'empty' || status === 'error') return\n\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount())\n }\n if (props.mode !== 'manual') {\n nextTick(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n intersecting(side)\n })\n })\n })\n })\n }\n })\n }\n\n emit('load', { side, done })\n }\n\n const { t } = useLocale()\n\n function renderSide (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (props.side !== side && props.side !== 'both') return\n\n const onClick = () => intersecting(side)\n const slotProps = { side, props: { onClick, color: props.color } }\n\n if (status === 'error') return slots.error?.(slotProps)\n\n if (status === 'empty') return slots.empty?.(slotProps) ??
    { t(props.emptyText) }
    \n\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? (\n \n )\n }\n\n return slots['load-more']?.(slotProps) ?? (\n \n { t(props.loadMoreText) }\n \n )\n }\n\n return slots.loading?.(slotProps) ?? (\n \n )\n }\n\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => {\n const Tag = props.tag\n const hasStartIntersect = props.side === 'start' || props.side === 'both'\n const hasEndIntersect = props.side === 'end' || props.side === 'both'\n const intersectMode = props.mode === 'intersect'\n\n return (\n \n
    \n { renderSide('start', startStatus.value) }\n
    \n\n { hasStartIntersect && intersectMode && (\n \n )}\n\n { slots.default?.() }\n\n { hasEndIntersect && intersectMode && (\n \n )}\n\n
    \n { renderSide('end', endStatus.value) }\n
    \n \n )\n })\n },\n})\n\nexport type VInfiniteScroll = InstanceType\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\n// Types\nimport type { GenericProps } 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(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VItemGroupSlots,\n) => GenericProps>()({\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 \n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n \n )\n },\n})\n\nexport type VItemGroup = InstanceType\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()({\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\n","// Styles\nimport './VKbd.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VKbd = createSimpleFunctional('v-kbd')\n\nexport type VKbd = InstanceType\n","// Styles\nimport './VLayout.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeDimensionProps(),\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 const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {\n getLayoutItem,\n items,\n }\n },\n})\n\nexport type VLayout = InstanceType\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 \n { slots.default?.() }\n \n )\n },\n})\n\nexport type VLayoutItem = InstanceType\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,\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 \n { isActive.value && (\n \n { slots.default?.() }\n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VLazy = InstanceType\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 \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VLocaleProvider = InstanceType\n","// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\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 ...makeDimensionProps(),\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 { dimensionStyles } = useDimension(props)\n const { mainStyles } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n \n { props.scrollable\n ? (\n
    \n { slots.default?.() }\n
    \n )\n : slots.default?.()\n }\n \n ))\n\n return {}\n },\n})\n\nexport type VMain = InstanceType\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 | 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 { useToggleScope } from '@/composables/toggleScope'\nimport { useVelocity } from '@/composables/touch'\n\n// Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTouch ({\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position,\n}: {\n el: Ref\n isActive: Ref\n isTemporary: Ref\n width: Ref\n touchless: Ref\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 start = [touchX, touchY]\n\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value)\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY)\n\n maybeDragging = offset.value > -20 && offset.value < 80\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 useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null\n const transition = el.value?.style.transition ?? null\n\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none')\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null)\n })\n\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform)\n el.value?.style.setProperty('transition', transition)\n })\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// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\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 { makeDelayProps, useDelay } from '@/composables/delay'\nimport { makeDisplayProps, 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'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, 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,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType,\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 persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n}, 'VNavigationDrawer')\n\nexport const VNavigationDrawer = genericComponent()({\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 { displayClasses, mobile } = useDisplay(props)\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()\n const isHovering = shallowRef(false)\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n isHovering.value = value\n })\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 isPersistent = computed(() => props.persistent)\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 useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val))\n })\n\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n })\n\n useToggleScope(() => !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 if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value\n }\n\n const { isDragging, dragProgress } = useTouch({\n el: rootEl,\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 const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value)\n const { layoutItemStyles, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize,\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 useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n \n { hasImage && (\n
    \n { !slots.image ? (\n \n ) : (\n \n )}\n
    \n )}\n\n { slots.prepend && (\n
    \n { slots.prepend?.() }\n
    \n )}\n\n
    \n { slots.default?.() }\n
    \n\n { slots.append && (\n
    \n { slots.append?.() }\n
    \n )}\n \n\n \n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n {\n if (isPersistent.value) return\n isActive.value = false\n }}\n { ...scopeId }\n />\n )}\n \n \n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType\n","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { convertToUnit } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref, StyleValue } from 'vue'\n\ninterface StickyProps {\n rootEl: Ref\n isSticky: Ref\n layoutItemStyles: Ref\n}\n\nexport function useSticky ({ rootEl, isSticky, layoutItemStyles }: StickyProps) {\n const isStuck = shallowRef(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\n","// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref()\n const inputRef = ref([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n \n \n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n { props.divider }\n )}\n\n \n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n \n \n ))}\n\n \n\n \n { slots.loader?.() ?? (\n \n )}\n \n\n { slots.default?.() }\n \n \n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType\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()({\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()\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 \n ))\n\n return {}\n },\n})\n\nexport type VParallax = InstanceType\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()({\n name: 'VRadio',\n\n props: makeVRadioProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const controlProps = VSelectionControl.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VRadio = InstanceType\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 { GenericProps } from '@/util'\n\nexport type VRadioGroupSlots = Omit & {\n default: never\n label: {\n label: string | undefined\n props: Record\n }\n}\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(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VRadioGroupSlots,\n) => GenericProps>()({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: makeVRadioGroupProps(),\n\n emits: {\n 'update:modelValue': (value: 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 [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const controlProps = 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 \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n \n { label }\n \n )}\n\n \n \n ),\n }}\n
    \n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType\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,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent()({\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()\n const stopThumbRef = ref()\n const inputRef = ref()\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 readonly,\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 \n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n \n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n \n ) : undefined,\n default: ({ id, messagesId }) => (\n \n \n\n \n\n \n {{ 'tick-label': slots['tick-label'] }}\n \n\n (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 ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n\n (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 ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType\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\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,\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()({\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 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0,\n }}\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n onClick={ onClick }\n >\n { t(props.itemAriaLabel, value, props.length) }\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 \n )\n }\n \n\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 { labelProps.label }\n\n return  \n }\n\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label']\n\n return (\n \n \n\n { range.value.map((value, i) => (\n
    \n {\n hasLabels && props.itemLabelPosition === 'top'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n
    \n { props.halfIncrements ? (\n <>\n \n \n \n ) : (\n \n )}\n
    \n {\n hasLabels && props.itemLabelPosition === 'bottom'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n
    \n ))}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VRating = InstanceType\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone = T | VSkeletonBone[]\n\nexport type VSkeletonBones = VSkeletonBone\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n \n { children }\n \n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n const loadingProps = (props.boilerplate || !isLoading) ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert',\n }\n\n return (\n \n { isLoading ? items.value : slots.default?.() }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType\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\n select: GroupItemProvide['select']\n toggle: GroupItemProvide['toggle']\n selectedClass: UnwrapRef\n }\n}\n\nexport const VSlideGroupItem = genericComponent()({\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\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { useLayout } from '@/composables'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { VuetifyLayoutKey } from '@/composables/layout'\nimport { makeLocationProps } 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 { useToggleScope } from '@/composables/toggleScope'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record }\n default: never\n actions: { isActive: Ref }\n text: never\n}\n\nfunction useCountdown (milliseconds: () => number) {\n const time = shallowRef(milliseconds())\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds())\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds() - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\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()({\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 { 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 const countdown = useCountdown(() => Number(props.timeout))\n\n const overlay = ref()\n const timerRef = ref()\n const isHovering = shallowRef(false)\n const startY = shallowRef(0)\n const mainStyles = ref()\n const hasLayout = inject(VuetifyLayoutKey, undefined)\n\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout()\n\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value\n })\n })\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 countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n function onTouchstart (event: TouchEvent) {\n startY.value = event.touches[0].clientY\n }\n\n function onTouchend (event: TouchEvent) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false\n }\n }\n\n function onAfterLeave () {\n if (isHovering.value) onPointerleave()\n }\n\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true\n\n return acc\n }, {} as Record)\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const hasContent = !!(slots.default || slots.text || props.text)\n\n return (\n \n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && !isHovering.value && (\n
    \n \n
    \n )}\n\n { hasContent && (\n \n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n \n )}\n\n { slots.actions && (\n \n
    \n { slots.actions({ isActive }) }\n
    \n \n )}\n
    \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType\n","// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type SparklineItem = number | { value: number }\n\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease',\n },\n color: String,\n gradient: {\n type: Array as PropType,\n default: () => ([]),\n },\n gradientDirection: {\n type: String as PropType<'top' | 'bottom' | 'left' | 'right'>,\n validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top',\n },\n height: {\n type: [String, Number],\n default: 75,\n },\n labels: {\n type: Array as PropType,\n default: () => ([]),\n },\n labelSize: {\n type: [Number, String],\n default: 7,\n },\n lineWidth: {\n type: [String, Number],\n default: 4,\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value',\n },\n modelValue: {\n type: Array as PropType,\n default: () => ([]),\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8,\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300,\n },\n}, 'Line')\n","// Utilities\nimport { computed } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VBarlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Bar {\n x: number\n y: number\n height: number\n value: number\n}\n\nexport const makeVBarlineProps = propsFactory({\n autoLineWidth: Boolean,\n\n ...makeLineProps(),\n}, 'VBarline')\n\nexport const VBarline = genericComponent()({\n name: 'VBarline',\n\n props: makeVBarlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `barline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || 500)\n\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n\n const lineWidth = computed(() => parseFloat(props.lineWidth) || 4)\n\n const totalWidth = computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)))\n\n const boundary = computed(() => {\n return {\n minX: 0,\n maxX: totalWidth.value,\n minY: 0,\n maxY: parseInt(props.height, 10),\n }\n })\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)))\n\n function genBars (\n values: number[],\n boundary: Boundary\n ): Bar[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n let maxValue = props.max != null ? Number(props.max) : Math.max(...values)\n let minValue = props.min != null ? Number(props.min) : Math.min(...values)\n\n if (minValue > 0 && props.min == null) minValue = 0\n if (maxValue < 0 && props.max == null) maxValue = 0\n\n const gridX = maxX / totalValues\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n const horizonY = maxY - Math.abs(minValue * gridY)\n\n return values.map((value, index) => {\n const height = Math.abs(gridY * value)\n\n return {\n x: minX + index * gridX,\n y: horizonY - height +\n +(value < 0) * height,\n height,\n value,\n }\n })\n }\n\n const parsedLabels = computed(() => {\n const labels = []\n const points = genBars(items.value, boundary.value)\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n const bars = computed(() => genBars(items.value, boundary.value))\n const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2)\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n return (\n \n \n \n {\n gradientData.map((color, index) => (\n \n ))\n }\n \n \n\n \n {\n bars.value.map(item => (\n \n { props.autoDraw && (\n <>\n \n \n \n )}\n \n ))\n }\n \n\n { hasLabels.value && (\n \n {\n parsedLabels.value.map((item, i) => (\n \n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n \n ))\n }\n \n )}\n\n \n \n \n \n )\n })\n },\n})\n\nexport type VBarline = InstanceType\n","// @ts-nocheck\n/* eslint-disable */\n\nimport { Point } from '../VSparkline'\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath (points: Point[], radius: number, fill = false, height = 75) {\n if (points.length === 0) return ''\n const start = points.shift()!\n const end = points[points.length - 1]\n\n return (\n (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) +\n points\n .map((point, index) => {\n const next = points[index + 1]\n const prev = points[index - 1] || start\n const isCollinear = next && checkCollinear(next, point, prev)\n\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`\n }\n\n const threshold = Math.min(\n getDistance(prev, point),\n getDistance(next, point)\n )\n const isTooCloseForRadius = threshold / 2 < radius\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius\n\n const before = moveTo(prev, point, radiusForPoint)\n const after = moveTo(next, point, radiusForPoint)\n\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`\n })\n .join('') +\n (fill ? `L${end.x} ${height - start.x + 2} Z` : '')\n )\n}\n\nfunction int (value: string | number): number {\n return parseInt(value, 10)\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear (p0: Point, p1: Point, p2: Point): boolean {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y)\n}\n\nexport function getDistance (p1: Point, p2: Point): number {\n return Math.sqrt(\n Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)\n )\n}\n\nexport function moveTo (to: Point, from: Point, radius: number) {\n const vector = { x: to.x - from.x, y: to.y - from.y }\n const length = Math.sqrt((vector.x * vector.x) + (vector.y * vector.y))\n const unitVector = { x: vector.x / length, y: vector.y / length }\n\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius,\n }\n}\n","// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genPath as _genPath } from './util/path'\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VTrendlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Point {\n x: number\n y: number\n value: number\n}\n\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n\n ...makeLineProps(),\n}, 'VTrendline')\n\nexport const VTrendline = genericComponent()({\n name: 'VTrendline',\n\n props: makeVTrendlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `trendline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000))\n\n const lastLength = ref(0)\n const path = ref(null)\n\n function genPoints (\n values: number[],\n boundary: Boundary\n ): Point[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values)\n const minValue = props.min != null ? Number(props.min) : Math.min(...values)\n\n const gridX = (maxX - minX) / (totalValues - 1)\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value,\n }\n })\n }\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4\n })\n const totalWidth = computed(() => Number(props.width))\n\n const boundary = computed(() => {\n const padding = Number(props.padding)\n\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding,\n }\n })\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)))\n const parsedLabels = computed(() => {\n const labels = []\n const points = genPoints(items.value, boundary.value)\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n watch(() => props.modelValue, async () => {\n await nextTick()\n\n if (!props.autoDraw || !path.value) return\n\n const pathRef = path.value\n const length = pathRef.getTotalLength()\n\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`\n pathRef.style.strokeDashoffset = `${length}`\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect()\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.strokeDashoffset = '0'\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center'\n pathRef.style.transition = 'none'\n pathRef.style.transform = `scaleY(0)`\n pathRef.getBoundingClientRect()\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.transform = `scaleY(1)`\n }\n\n lastLength.value = length\n }, { immediate: true })\n\n function genPath (fill: boolean) {\n return _genPath(\n genPoints(items.value, boundary.value),\n props.smooth ? 8 : Number(props.smooth),\n fill,\n parseInt(props.height, 10)\n )\n }\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n\n return (\n \n \n \n {\n gradientData.map((color, index) => (\n \n ))\n }\n \n \n\n { hasLabels.value && (\n \n {\n parsedLabels.value.map((item, i) => (\n \n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n \n ))\n }\n \n )}\n\n \n\n { props.fill && (\n \n )}\n \n )\n })\n },\n})\n\nexport type VTrendline = InstanceType\n","// Components\nimport { makeVBarlineProps, VBarline } from './VBarline'\nimport { makeVTrendlineProps, VTrendline } from './VTrendline'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String as PropType<'trend' | 'bar'>,\n default: 'trend',\n },\n\n ...makeVBarlineProps(),\n ...makeVTrendlineProps(),\n}, 'VSparkline')\n\nexport type VSparklineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport const VSparkline = genericComponent()({\n name: 'VSparkline',\n\n props: makeVSparklineProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10)\n\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5\n\n return height\n })\n\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props)\n\n return (\n \n )\n })\n },\n})\n\nexport type VSparkline = InstanceType\n","// Styles\nimport './VSpeedDial.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVMenuProps, VMenu } from '@/components/VMenu/VMenu'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\nimport type { Anchor } from '@/util'\n\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({\n offset: 8,\n minWidth: 0,\n openDelay: 0,\n closeDelay: 100,\n location: 'top center' as const,\n transition: 'scale-transition',\n }),\n}, 'VSpeedDial')\n\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n\n props: makeVSpeedDialProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const menuRef = ref()\n\n const location = computed(() => {\n const [y, x = 'center'] = props.location?.split(' ') ?? []\n\n return `${y} ${x}` as Anchor\n })\n\n const locationClasses = computed(() => ({\n [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true,\n }))\n\n useRender(() => {\n const menuProps = VMenu.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: slotProps => (\n \n \n { slots.default?.(slotProps) }\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSpeedDial = InstanceType\n","// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VStepperSymbol: InjectionKey = Symbol.for('vuetify:v-stepper')\n","// Components\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VStepperActionsSlots = {\n prev: {\n props: { onClick: () => void }\n }\n next: {\n props: { onClick: () => void }\n }\n}\n\nexport const makeVStepperActionsProps = propsFactory({\n color: String,\n disabled: {\n type: [Boolean, String] as PropType,\n default: false,\n },\n prevText: {\n type: String,\n default: '$vuetify.stepper.prev',\n },\n nextText: {\n type: String,\n default: '$vuetify.stepper.next',\n },\n}, 'VStepperActions')\n\nexport const VStepperActions = genericComponent()({\n name: 'VStepperActions',\n\n props: makeVStepperActionsProps(),\n\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n useRender(() => {\n const prevSlotProps = {\n onClick: onClickPrev,\n }\n const nextSlotProps = {\n onClick: onClickNext,\n }\n\n return (\n
    \n \n { slots.prev?.({ props: prevSlotProps }) ?? (\n \n )}\n \n\n \n { slots.next?.({ props: nextSlotProps }) ?? (\n \n )}\n \n
    \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperActions = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VStepperHeader = createSimpleFunctional('v-stepper-header')\n\nexport type VStepperHeader = InstanceType\n","// Styles\nimport './VStepperItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VIcon } from '@/components/VIcon/VIcon'\n\n// Composables\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { genOverlays } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { VStepperSymbol } from './shared'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type StepperItem = string | Record\n\nexport type StepperItemSlot = {\n canEdit: boolean\n hasError: boolean\n hasCompleted: boolean\n title?: string | number\n subtitle?: string | number\n step: any\n}\n\nexport type VStepperItemSlots = {\n default: StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n}\n\nexport type ValidationRule = () => string | boolean\n\nexport const makeStepperItemProps = propsFactory({\n color: String,\n title: String,\n subtitle: String,\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete',\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit',\n },\n error: Boolean,\n errorIcon: {\n type: String,\n default: '$error',\n },\n icon: String,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n rules: {\n type: Array as PropType,\n default: () => ([]),\n },\n}, 'StepperItem')\n\nexport const makeVStepperItemProps = propsFactory({\n ...makeStepperItemProps(),\n ...makeGroupItemProps(),\n}, 'VStepperItem')\n\nexport const VStepperItem = genericComponent()({\n name: 'VStepperItem',\n\n directives: { Ripple },\n\n props: makeVStepperItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const group = useGroupItem(props, VStepperSymbol, true)\n const step = computed(() => group?.value.value ?? props.value)\n const isValid = computed(() => props.rules.every(handler => handler() === true))\n const isClickable = computed(() => !props.disabled && props.editable)\n const canEdit = computed(() => !props.disabled && props.editable)\n const hasError = computed(() => props.error || !isValid.value)\n const hasCompleted = computed(() => props.complete || (props.rules.length > 0 && isValid.value))\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon\n if (hasCompleted.value) return props.completeIcon\n if (group.isSelected.value && props.editable) return props.editIcon\n\n return props.icon\n })\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value,\n }))\n\n useRender(() => {\n const hasColor = (\n !group ||\n group.isSelected.value ||\n hasCompleted.value ||\n canEdit.value\n ) && (\n !hasError.value &&\n !props.disabled\n )\n const hasTitle = !!(props.title != null || slots.title)\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle)\n\n function onClick () {\n group?.toggle()\n }\n\n return (\n \n { isClickable.value && genOverlays(true, 'v-stepper-item') }\n\n \n { slots.icon?.(slotProps.value) ?? (\n icon.value ? (\n \n ) : step.value\n )}\n \n\n
    \n { hasTitle && (\n \n { slots.title?.(slotProps.value) ?? props.title }\n
    \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.(slotProps.value) ?? props.subtitle }\n \n )}\n\n { slots.default?.(slotProps.value) }\n \n \n )\n })\n return {}\n },\n})\n\nexport type VStepperItem = InstanceType\n","// Components\nimport { VStepperSymbol } from './shared'\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\nexport const makeVStepperWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory']),\n}, 'VStepperWindow')\n\nexport const VStepperWindow = genericComponent()({\n name: 'VStepperWindow',\n\n props: makeVStepperWindowProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const group = inject(VStepperSymbol, null)\n const _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get () {\n // Always return modelValue if defined\n // or if not within a VStepper group\n if (_model.value != null || !group) return _model.value\n\n // If inside of a VStepper, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value\n },\n set (val) {\n _model.value = val\n },\n })\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperWindow = InstanceType\n","// Components\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVStepperWindowItemProps = propsFactory({\n ...makeVWindowItemProps(),\n}, 'VStepperWindowItem')\n\nexport const VStepperWindowItem = genericComponent()({\n name: 'VStepperWindowItem',\n\n props: makeVStepperWindowItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperWindowItem = InstanceType\n","// Styles\nimport './VStepper.sass'\n\n// Components\nimport { VStepperSymbol } from './shared'\nimport { makeVStepperActionsProps, VStepperActions } from './VStepperActions'\nimport { VStepperHeader } from './VStepperHeader'\nimport { VStepperItem } from './VStepperItem'\nimport { VStepperWindow } from './VStepperWindow'\nimport { VStepperWindowItem } from './VStepperWindowItem'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { computed, toRefs } from 'vue'\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StepperItem, StepperItemSlot } from './VStepperItem'\n\nexport type VStepperSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VStepperSlots = {\n actions: VStepperSlot\n default: VStepperSlot\n header: StepperItem\n 'header-item': StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n item: StepperItem\n prev: never\n next: never\n} & {\n [key: `header-item.${string}`]: StepperItemSlot\n [key: `item.${string}`]: StepperItem\n}\n\nexport const makeStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n completeIcon: String,\n editIcon: String,\n editable: Boolean,\n errorIcon: String,\n hideActions: Boolean,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemTitle: {\n type: String,\n default: 'title',\n },\n itemValue: {\n type: String,\n default: 'value',\n },\n nonLinear: Boolean,\n flat: Boolean,\n\n ...makeDisplayProps(),\n}, 'Stepper')\n\nexport const makeVStepperProps = propsFactory({\n ...makeStepperProps(),\n ...makeGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-stepper-item--selected',\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText']),\n}, 'VStepper')\n\nexport const VStepper = genericComponent()({\n name: 'VStepper',\n\n props: makeVStepperProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const { items: _items, next, prev, selected } = useGroup(props, VStepperSymbol)\n const { displayClasses, mobile } = useDisplay(props)\n const { completeIcon, editIcon, errorIcon, color, editable, prevText, nextText } = toRefs(props)\n\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = getPropertyFromItem(item, props.itemValue, index + 1)\n\n return {\n title,\n value,\n raw: item,\n }\n }))\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id))\n })\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (activeIndex.value === 0) return 'prev'\n if (activeIndex.value === _items.value.length - 1) return 'next'\n\n return false\n })\n\n provideDefaults({\n VStepperItem: {\n editable,\n errorIcon,\n completeIcon,\n editIcon,\n prevText,\n nextText,\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText,\n },\n })\n\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n\n const hasHeader = !!(slots.header || props.items.length)\n const hasWindow = props.items.length > 0\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions)\n\n return (\n \n { hasHeader && (\n \n { items.value.map(({ raw, ...item }, index) => (\n <>\n { !!index && () }\n\n \n \n ))}\n \n )}\n\n { hasWindow && (\n \n { items.value.map(item => (\n slots[`item.${item.value}`]?.(item) ?? slots.item?.(item),\n }}\n />\n ))}\n \n )}\n\n { slots.default?.({ prev, next }) }\n\n { hasActions && (\n slots.actions?.({ next, prev }) ?? (\n \n )\n )}\n \n )\n })\n\n return {\n prev,\n next,\n }\n },\n})\n\nexport type VStepper = InstanceType\n","// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { VScaleTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\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, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, Ref } from 'vue'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { IconValue } from '@/composables/icons'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nexport type VSwitchSlot = {\n model: Ref\n isValid: ComputedRef\n}\n\nexport type VSwitchSlots =\n & VInputSlots\n & VSelectionControlSlots\n & {\n loader: LoaderSlotProps\n thumb: { icon: IconValue | undefined } & VSwitchSlot\n 'track-false': VSwitchSlot\n 'track-true': VSwitchSlot\n }\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(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VSwitchSlots,\n) => GenericProps>()({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: makeVSwitchProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:indeterminate': (value: 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 const control = ref()\n const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches\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 function onTrackClick (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n control.value?.input?.click()\n }\n\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const controlProps = VSelectionControl.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => {\n const slotProps = {\n model,\n isValid,\n }\n\n return (\n \n {{\n ...slots,\n default: ({ backgroundColorClasses, backgroundColorStyles }) => (\n \n { slots['track-true'] && (\n
    \n { slots['track-true'](slotProps) }\n
    \n )}\n\n { slots['track-false'] && (\n
    \n { slots['track-false'](slotProps) }\n
    \n )}\n \n ),\n input: ({ inputNode, icon, backgroundColorClasses, backgroundColorStyles }) => (\n <>\n { inputNode }\n \n { slots.thumb ? (\n \n { slots.thumb({ ...slotProps, icon }) }\n \n ) : (\n \n { !props.loading ? (\n (icon && (\n \n ))) : (\n \n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n \n )\n )}\n \n )}\n \n )}\n \n \n ),\n }}\n
    \n )\n },\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType\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 \n ))\n\n return {}\n },\n})\n\nexport type VSystemBar = InstanceType\n","// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VTabsSymbol: InjectionKey = 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'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\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\n const rootEl = ref()\n const sliderEl = ref()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function updateSlider ({ value }: { value: boolean }) {\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]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\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 \n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n \n )}\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType\n","// Components\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTabsSymbol } from './shared'\n\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory']),\n}, 'VTabsWindow')\n\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n\n props: makeVTabsWindowProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const group = inject(VTabsSymbol, null)\n const _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get () {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value\n },\n set (val) {\n _model.value = val\n },\n })\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabsWindow = InstanceType\n","// Components\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps(),\n}, 'VTabsWindowItem')\n\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n\n props: makeVTabsWindowItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabsWindowItem = InstanceType\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VTab } from './VTab'\nimport { VTabsWindow } from './VTabsWindow'\nimport { VTabsWindowItem } from './VTabsWindowItem'\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 { useScopeId } from '@/composables/scopeId'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | number | Record\n\nexport type VTabsSlot = {\n item: TabItem\n}\n\nexport type VTabsSlots = {\n default: never\n tab: VTabsSlot\n item: VTabsSlot\n window: never\n} & {\n [key: `tab.${string}`]: VTabsSlot\n [key: `item.${string}`]: VTabsSlot\n}\n\nfunction parseItems (items: readonly TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (!isObject(item)) return { text: 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,\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({\n mandatory: 'force' as const,\n selectedClass: 'v-tab-item--selected',\n }),\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, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const items = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { scopeId } = useScopeId()\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 const hasWindow = !!(slots.window || props.items.length > 0)\n\n return (\n <>\n \n { slots.default?.() ?? items.value.map(item => (\n slots.tab?.({ item }) ?? (\n slots[`tab.${item.value}`]?.({ item }) : undefined,\n }}\n />\n )\n ))}\n \n\n { hasWindow && (\n \n { items.value.map(item => slots.item?.({ item }) ?? (\n slots[`item.${item.value}`]?.({ item }),\n }}\n />\n ))}\n\n { slots.window?.() }\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType\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,\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>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextarea')\n\ntype VTextareaSlots = Omit & {\n counter: VCounterSlot\n}\n\nexport const VTextarea = genericComponent()({\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()\n const vFieldRef = ref()\n const controlHeight = shallowRef('')\n const textareaRef = ref()\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()\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 \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n \n { props.prefix }\n \n )}\n\n \n\n { props.autoGrow && (\n \n )}\n\n { props.suffix && (\n \n { props.suffix }\n \n )}\n \n ),\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType\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 \n { slots.default?.() }\n \n )\n }\n },\n})\n\nexport type VThemeProvider = InstanceType\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 \n \n\n { !props.hideDot && (\n \n \n { !slots.default ? (\n \n ) : (\n \n )}\n \n \n )}\n\n \n \n ))\n\n return {}\n },\n})\n\nexport type VTimelineDivider = InstanceType\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()({\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()\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 \n \n { slots.default?.() }\n \n\n \n\n { props.density !== 'compact' && (\n
    \n { !props.hideOpposite && slots.opposite?.() }\n
    \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VTimelineItem = InstanceType\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, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport { makeVTimelineItemProps } from './VTimelineItem'\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,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop,\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,\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,\n\n ...only(makeVTimelineItemProps({\n lineInset: 0,\n }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),\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 dotColor: toRef(props, 'dotColor'),\n fillDot: toRef(props, 'fillDot'),\n hideOpposite: toRef(props, 'hideOpposite'),\n iconColor: toRef(props, 'iconColor'),\n lineColor: toRef(props, 'lineColor'),\n lineInset: toRef(props, 'lineInset'),\n size: toRef(props, 'size'),\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 \n ))\n\n return {}\n },\n})\n\nexport type VTimeline = InstanceType\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 \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VToolbarItems = InstanceType\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()({\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()\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 \n {{\n activator: slots.activator,\n default: (...args) => slots.default?.(...args) ?? props.text,\n }}\n \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VTooltip = InstanceType\n","// Composables\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { GenericProps } from '@/util'\n\nexport type VValidationSlots = {\n default: ReturnType\n}\n\nexport const VValidation = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VValidationSlots,\n) => GenericProps>()({\n name: 'VValidation',\n\n props: makeValidationProps(),\n\n emits: {\n 'update:modelValue': (value: 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\n","// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { MutationOptions } from '@/composables/mutationObserver'\n\nexport interface MutationDirectiveBinding extends Omit {\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 {\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 {\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","// Components\nimport { VTooltip } from '@/components/VTooltip'\n\n// Composables\nimport { useDirectiveComponent } from '@/composables/directiveComponent'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface TooltipDirectiveBinding extends Omit, 'arg' | 'value'> {\n arg?: { [T in Anchor]: T extends `${infer A} ${infer B}` ? `${A}-${B}` : T }[Anchor]\n value: boolean | string | Record\n}\n\nexport const Tooltip = useDirectiveComponent(VTooltip, binding => {\n return {\n activator: 'parent',\n location: binding.arg?.replace('-', ' '),\n text: typeof binding.value === 'boolean' ? undefined : binding.value,\n }\n})\n\nexport default Tooltip\n","// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue'\nimport { isObject } from '@/util'\n\n// Types\nimport type {\n Component,\n ComponentInternalInstance,\n ComponentPublicInstance,\n ConcreteComponent,\n DirectiveBinding,\n ObjectDirective,\n VNode,\n} from 'vue'\nimport type { ComponentInstance } from '@/util'\n\ntype ExcludeProps =\n | 'v-slots'\n | `v-slot:${string}`\n | `on${Uppercase}${string}`\n | 'key'\n | 'ref'\n | 'ref_for'\n | 'ref_key'\n | '$children'\n\ndeclare const CustomDirectiveSymbol: unique symbol\ntype DirectiveHook = (el: any, binding: B, vnode: VNode, prevVNode: VNode) => void\nexport interface CustomDirective {\n created?: DirectiveHook\n beforeMount?: DirectiveHook\n mounted?: DirectiveHook\n beforeUpdate?: DirectiveHook\n updated?: DirectiveHook\n beforeUnmount?: DirectiveHook\n unmounted?: DirectiveHook\n [CustomDirectiveSymbol]: true\n}\n\nexport function useDirectiveComponent <\n Binding extends DirectiveBinding,\n> (component: string | Component, props?: (binding: Binding) => Record): CustomDirective\nexport function useDirectiveComponent <\n C extends Component,\n Props = Omit['$props'], ExcludeProps>\n> (component: string | C, props?: Record): ObjectDirective\nexport function useDirectiveComponent (\n component: string | Component,\n props?: Record | ((binding: DirectiveBinding) => Record)\n): ObjectDirective | CustomDirective {\n const concreteComponent = (typeof component === 'string'\n ? resolveComponent(component)\n : component) as ConcreteComponent\n\n const hook = mountComponent(concreteComponent, props)\n\n return {\n mounted: hook,\n updated: hook,\n unmounted (el: HTMLElement) {\n render(null, el)\n },\n }\n}\n\nfunction mountComponent (component: ConcreteComponent, props?: Record | ((binding: DirectiveBinding) => Record)) {\n return function (el: HTMLElement, binding: DirectiveBinding, vnode: VNode) {\n const _props = typeof props === 'function' ? props(binding) : props\n const text = binding.value?.text ?? binding.value ?? _props?.text\n const value = isObject(binding.value) ? binding.value : {}\n\n // Get the children from the props or directive value, or the element's children\n const children = () => text ?? el.textContent\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n const node = h(component, mergeProps(_props, value), children)\n node.appContext = Object.assign(\n Object.create(null),\n (binding.instance as ComponentPublicInstance).$.appContext,\n { provides }\n )\n\n render(node, el)\n }\n}\n\nfunction findComponentParent (vnode: VNode, root: ComponentInternalInstance): ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set()\n const walk = (children: VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n throw new Error('Could not find original vnode')\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n","// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from '@/composables/date/date'\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\nimport { createDisplay, DisplaySymbol } from '@/composables/display'\nimport { createGoTo, GoToSymbol } from '@/composables/goto'\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createLocale, LocaleSymbol } from '@/composables/locale'\nimport { createTheme, ThemeSymbol } from '@/composables/theme'\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 { DateOptions } from '@/composables/date'\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { DisplayOptions, SSROptions } from '@/composables/display'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { IconOptions } from '@/composables/icons'\nimport type { LocaleOptions, RtlOptions } from '@/composables/locale'\nimport type { ThemeOptions } from '@/composables/theme'\nexport * from './composables'\nexport type { DateOptions, DateInstance, DateModule } from '@/composables/date'\n\nexport interface VuetifyOptions {\n aliases?: Record\n blueprint?: Blueprint\n components?: Record\n date?: DateOptions\n directives?: Record\n defaults?: DefaultsOptions\n display?: DisplayOptions\n goTo?: GoToOptions\n theme?: ThemeOptions\n icons?: IconOptions\n locale?: LocaleOptions & RtlOptions\n ssr?: SSROptions\n}\n\nexport interface Blueprint extends Omit {}\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, locale)\n const goTo = createGoTo(options.goTo, locale)\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(DateOptionsSymbol, date.options)\n app.provide(DateAdapterSymbol, date.instance)\n app.provide(GoToSymbol, goTo)\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 goTo,\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 | 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 blueprints from './blueprints'\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 blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"names":["IN_BROWSER","window","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","navigator","maxTouchPoints","SUPPORTS_EYE_DROPPER","getNestedValue","obj","path","fallback","last","length","undefined","i","deepEqual","a","b","Date","getTime","Object","props","keys","every","p","getObjectValueByPath","replace","split","getPropertyFromItem","item","property","value","Array","isArray","createRange","start","arguments","from","v","k","convertToUnit","str","unit","isNaN","String","isFinite","Number","isObject","isPlainObject","proto","getPrototypeOf","prototype","refElement","el","$el","nodeType","Node","TEXT_NODE","nextElementSibling","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","found","Set","pickWithRest","exclude","create","rest","some","RegExp","test","omit","clone","forEach","prop","only","include","onRE","isOn","bubblingEvents","compositionIgnoreKeys","filterInputAttrs","attrs","events","inputEvents","rootAttrs","inputAttrs","assign","wrapInArray","clamp","min","max","Math","getDecimals","trimmedStr","toString","trim","includes","indexOf","padEnd","repeat","padStart","humanReadableFileSize","bytes","base","prefix","abs","toFixed","mergeDeep","source","target","arrayFn","out","sourceProperty","targetProperty","flattenFragments","nodes","map","node","type","Fragment","children","flat","toKebabCase","cache","get","kebab","toLowerCase","set","findChildrenWithProvide","vnode","child","suspense","ssContent","component","getOwnPropertySymbols","provides","subTree","Map","_arr","WeakMap","_pointer","CircularBuffer","constructor","size","_classPrivateFieldInitSpec","this","push","val","_classPrivateFieldGet","values","slice","concat","destructComputed","getter","refs","reactive","computed","watchEffect","flush","toRefs","arr","eventName","propName","EventProp","Function","hasEvent","name","capitalize","callEvent","handler","_len2","args","_key2","h","focusableChildren","filterByTabIndex","targets","s","join","querySelectorAll","getNextElement","elements","location","condition","_el","idx","document","activeElement","inc","offsetParent","focusChild","focusable","focus","at","contains","isEmpty","noop","matchesSelector","selector","CSS","supports","matches","err","ensureValidVNode","vnodes","isVNode","Comment","templateRef","shallowRef","fn","defineProperty","enumerable","checkPrintable","e","isPrintableChar","noModifier","ctrlKey","metaKey","altKey","block","inline","parseAnchor","anchor","isRtl","side","align","toPhysical","flipSide","center","top","bottom","flipAlign","flipCorner","getAxis","Box","_ref","x","y","width","height","getOverflow","before","after","getTargetBox","getBoundingClientRect","nullifyTransforms","rect","style","getComputedStyle","tx","transform","ta","sx","sy","dx","dy","startsWith","to","transformOrigin","parseFloat","w","offsetWidth","offsetHeight","animate","keyframes","options","finished","Promise","resolve","animation","onfinish","handlers","mainTRC","Rco","Gco","Bco","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","deltaYmin","scaleBoW","scaleWoB","loConThresh","loConFactor","loConOffset","loClip","APCAcontrast","text","background","Rtxt","r","Gtxt","g","Btxt","Rbg","Gbg","Bbg","outputContrast","Ytxt","Ybg","SAPC","consoleWarn","message","warn","consoleError","delta","cielabForwardTransform","t","cbrt","cielabReverseTransform","fromXYZ","xyz","transformedY","toXYZ","lab","Ln","srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","rgb","matrix","round","isCssColor","color","cssColorRe","mappers","rgba","hsl","l","HSLtoRGB","hsla","hsv","HSVtoRGB","hsva","parseColor","groups","match","realValues","endsWith","hex","char","int","parseInt","HexToRGB","HSLtoHSV","TypeError","f","n","RGBtoHSV","HSVtoHSL","RGBtoCSS","HSVtoCSS","toHex","substr","toUpperCase","RGBtoHex","_ref2","parseHex","chunked","index","chunk","c","HexToHSV","HSVtoHex","lighten","amount","CIELAB","sRGB","darken","getLuma","getContrast","first","second","l1","l2","getForeground","blackContrast","propsFactory","defaults","reduce","definition","default","makeComponentProps","class","getCurrentInstance","vm","_getCurrentInstance","Error","getCurrentInstanceName","aliasName","_uid","_map","getUid","uid","reset","DefaultsSymbol","Symbol","for","injectDefaults","inject","provideDefaults","injectedDefaults","providedDefaults","ref","newDefaults","unref","disabled","scoped","root","properties","prev","len","Infinity","provide","internalUseDefaults","__name","componentDefaults","_as","_props","Proxy","propValue","Reflect","filter","propIsDefined","global","_subcomponentDefaults","subComponents","entries","fromEntries","provideSubDefaults","injected","injectSelf","defineComponent","_setup","setup","propKeys","filterProps","ctx","setupBindings","genericComponent","exposeDefaults","_defineComponent","createSimpleFunctional","klass","tag","camelize","slots","attachedRoot","getRootNode","parentNode","composed","standardEasing","getPrefixedEventHandlers","suffix","getData","acc","event","getScrollParent","includeHidden","isPotentiallyScrollable","hasScrollbar","parentElement","scrollingElement","getScrollParents","stopAt","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","useRender","render","IconValue","IconSymbol","makeIconProps","icon","required","VComponentIcon","Icon","_createVNode","createVNode","VSvgIcon","inheritAttrs","_mergeProps","xmlns","viewBox","role","d","VLigatureIcon","VClassIcon","createIcons","sets","svg","defaultSet","mdi","aliases","vuetify","collapse","complete","cancel","close","clear","success","info","warning","error","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","md1","rounded","VAvatar","VAutocomplete","variant","VBanner","VBtn","VCheckbox","VCombobox","VSelect","VSlider","VTabs","VTextarea","VTextField","VToolbar","icons","theme","themes","light","colors","primary","secondary","accent","md2","md3","VAppBar","VBottomSheet","contentClass","VBtnGroup","VCard","inset","VChip","VNavigationDrawer","tertiary","surface","useResizeObserver","callback","box","resizeRef","contentRect","observer","ResizeObserver","onBeforeUnmount","disconnect","watch","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","active","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","useToggleScope","scope","effectScope","run","stop","immediate","onScopeDispose","useProxiedModel","defaultValue","transformIn","transformOut","internal","kebabProp","isControlled","model","externalValue","internalValue","toRaw","emit","en","badge","open","dismiss","confirmEdit","ok","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","ariaLabel","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","sortBy","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","dateRangeInput","divider","datePicker","itemsSelected","range","title","header","input","placeholder","noDataText","carousel","moreEvents","today","prependAction","appendAction","otp","fileInput","counter","counterSize","timePicker","am","pm","pagination","previous","page","currentPage","stepper","rating","infiniteScroll","loadMore","empty","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","af","ar","bg","ca","ckb","cs","de","es","et","fa","fi","fr","hr","hu","he","it","ja","km","ko","lv","lt","nl","no","pl","pt","ro","ru","sk","sl","srCyrl","srLatn","sv","th","tr","az","uk","vi","zhHans","zhHant","rtlClasses","createRtl","useLocale","provideLocale","provideRtl","data","useRtl","ThemeSymbol","makeThemeProps","createTheme","parsedOptions","genDefaults","defaultTheme","variations","dark","variables","isDisabled","parseThemeOptions","computedThemes","original","variation","onColor","colorVal","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","flatMap","getHead","nonce","cspNonce","themeClasses","install","app","head","_context","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","getElementById","updateStyles","createElement","setAttribute","appendChild","innerHTML","provideTheme","newTheme","useTheme","content","line","lightOverlay","darkOverlay","makeVAppProps","VApp","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","add","requestAnimationFrame","onAfterEnter","resetStyles","onEnterCancelled","onLeaveCancelled","remove","makeVDialogTransitionProps","VDialogTransition","pointerEvents","visibility","done","speed","getDimensions","opacity","duration","easing","getChildren","then","removeProperty","onBeforeLeave","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","VResponsive","aspectStyles","ratio","paddingBottom","useAspectStyles","additional","useColor","classes","backgroundColor","textColor","caretColor","colorClasses","colorStyles","useTextColor","isRef","textColorClasses","textColorStyles","useBackgroundColor","backgroundColorClasses","backgroundColorStyles","makeRoundedProps","tile","useRounded","roundedClasses","validator","MaybeTransition","customProps","mergeProps","_","unmounted","binding","_observe","instance","$","Intersect","modifiers","IntersectionObserver","isIntersecting","quiet","init","once","makeVImgProps","alt","cover","draggable","eager","gradient","lazySrc","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","VImg","directives","intersect","emits","loadstart","load","toRef","currentSrc","image","naturalWidth","naturalHeight","normalisedSrc","aspect","lazyImg","Image","pollForSize","nextTick","setTimeout","isUnmounted","onError","onLoad","getSrc","img","oldVal","onBeforeMount","timer","timeout","poll","clearTimeout","imgHeight","imgWidth","containClasses","__image","objectPosition","sources","appear","withDirectives","vShow","__preloadImage","__placeholder","__error","__gradient","backgroundImage","isBooted","responsiveProps","_withDirectives","_Fragment","_resolveDirective","makeBorderProps","border","useBorder","borderClasses","makeElevationProps","elevation","useElevation","elevationClasses","allowedDensities","makeVToolbarProps","density","extended","extensionHeight","floating","isExtended","extension","contentHeight","hasTitle","hasImage","prepend","append","makeScrollProps","scrollTarget","scrollThreshold","useSsrBoot","ssrBootStyles","makeVAppBarProps","scrollBehavior","modelValue","vToolbarRef","isActive","behavior","hide","fullyHide","inverted","elevate","fadeImage","canScroll","currentScroll","isScrollingUp","scrollRatio","previousScroll","previousScrollHeight","savedScroll","currentThreshold","isScrollActive","onScroll","targetEl","pageYOffset","scrollTop","currentScrollHeight","Window","documentElement","newTarget","removeEventListener","addEventListener","passive","useScroll","canHide","isCollapsed","isFlat","toolbarProps","makeDensityProps","useDensity","densityClasses","allowedVariants","genOverlays","isClickable","makeVariantProps","useVariant","variantClasses","makeVBtnGroupProps","baseColor","divided","makeGroupProps","multiple","mandatory","selectedClass","makeGroupItemProps","useGroupItem","injectKey","description","isSelected","isFirst","isLast","toggle","select","useGroup","selected","getIds","ids","itemIndex","getValues","groupVm","forceMandatoryValue","step","currentId","currentIndex","newIndex","newItem","onUpdated","useIndexAsValue","unwrapped","getItemIndex","itemByIndex","VBtnToggleSymbol","makeVBtnToggleProps","VBtnToggle","btnGroupProps","predefinedSizes","makeSizeProps","useSize","sizeClasses","sizeStyles","makeVIconProps","VIcon","slotIcon","iconData","iconAlias","iconSetName","setName","iconName","useIcon","slotValue","Text","hasClick","onClick","onClickOnce","fontSize","tabindex","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","bufferColor","bufferOpacity","clickable","reverse","stream","striped","roundedBar","VProgressLinear","progress","bufferColorClasses","bufferColorStyles","barColorClasses","barColorStyles","normalizedBuffer","isReversed","isForcedColorsModeActive","matchMedia","handleClick","clientX","borderTop","bar","buffer","makeLoaderProps","useLoader","loaderClasses","LoaderSlot","positionValues","makePositionProps","usePosition","positionClasses","useRouter","proxy","$router","useLink","RouterLink","resolveDynamicComponent","isLink","href","linkProps","routerLink","link","route","$route","useRoute","exact","isExactActive","query","navigate","makeRouterProps","inTransition","stopSymbol","DELAY_RIPPLE","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","activeColor","symbol","prependIcon","appendIcon","slim","stacked","ripple","variantProps","isElevated","valueAttr","JSON","stringify","shiftKey","button","useSelectLink","Tag","hasPrepend","hasAppend","hasIcon","loader","makeVAppBarNavIconProps","VAppBarNavIcon","VAppBarTitle","VAlertTitle","allowedTypes","makeVAlertProps","borderColor","closable","closeIcon","closeLabel","prominent","VAlert","closeProps","hasClose","makeVAvatarProps","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","isInteractive","onFocus","onBlur","onClickLabel","stopPropagation","onInput","checked","inputNode","resolveDirective","makeVCheckboxBtnProps","indeterminateIcon","VCheckboxBtn","onChange","controlProps","$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","invalidInput","lazy","isValid","isValidating","validationClasses","async","resetValidation","validate","silent","results","rule","result","console","update","unwatch","makeVInputProps","centerAffix","hideDetails","hideSpinButtons","hint","persistentHint","direction","VInput","messagesId","slotProps","hasMessages","hasDetails","details","makeVCheckboxProps","controlAttrs","inputProps","checkboxProps","breakpoints","DisplaySymbol","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","getClientWidth","ssr","getClientHeight","getPlatform","userAgent","regexp","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","makeDisplayProps","mobile","useDisplay","display","breakpointValue","displayClasses","GoToSymbol","getTarget","horizontal","totalOffset","scrollTo","_target","_options","goTo","patterns","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","HTMLElement","body","ease","targetLocation","layoutOffset","scrollWidth","containerWidth","containerHeight","clampTarget","startLocation","startTime","currentTime","floor","useGoTo","goToInstance","go","getScrollSize","getScrollPosition","scrollLeft","getOffsetSize","getOffsetPosition","VSlideGroupSymbol","makeVSlideGroupProps","centerActive","nextIcon","prevIcon","showArrows","VSlideGroup","isOverflowing","scrollOffset","containerSize","contentSize","containerRef","containerRect","contentRef","goToOptions","firstSelectedIndex","lastSelectedIndex","frame","cancelAnimationFrame","scrollToChildren","selectedElement","containerElement","containerOffsetSize","calculateCenteredTarget","scrollPosition","childrenSize","childrenStartPosition","additionalOffset","calculateUpdatedTarget","scrollToPosition","newPosition","offsetSize","onFocusin","composedPath","onFocusout","ignoreFocusEvent","relatedTarget","onFocusAffixes","onKeydown","toFocus","preventDefault","previousElementSibling","firstElementChild","lastElementChild","preventScroll","offsetStep","hasAffixes","hasPrev","hasNext","scrollSize","clientSize","getClientSize","onMousedown","VChipGroupSymbol","makeVChipGroupProps","column","VChipGroup","slideGroupProps","makeVChipProps","activeClass","appendAvatar","filterIcon","pill","prependAvatar","click","onKeyDown","hasAppendMedia","hasFilter","hasPrependMedia","hasColor","_vShow","ListKey","createList","parent","updateHasPrepend","useList","independentActiveStrategy","strategy","activate","in","parents","independentSingleActiveStrategy","parentStrategy","singleSelected","singleOpenStrategy","opened","newOpened","multipleOpenStrategy","listOpenStrategy","_ref3","independentSelectStrategy","on","independentSingleSelectStrategy","VNestedSymbol","emptyNested","openOnSelect","activatable","selectable","selectedValues","getPath","makeNestedProps","activeStrategy","selectStrategy","openStrategy","useNested","leafActiveStrategy","_ref4","leafSingleActiveStrategy","_ref5","leafSingleSelectStrategy","leafSelectStrategy","_ref6","childrenIds","everySelected","cid","noneSelected","_ref7","classicSelectStrategy","unshift","nodeIds","nested","parentId","isGroup","list","newSelected","newActivated","useNestedItem","uidSymbol","computedId","isOpen","isActivated","isIndeterminate","isLeaf","isGroupActivator","VListGroupActivator","useNestedGroupActivator","makeVListGroupProps","collapseIcon","expandIcon","fluid","VListGroup","_id","activatorProps","toggleIcon","activatorDefaults","VListItem","activator","makeVListItemSubtitleProps","VListItemSubtitle","VListItemTitle","makeVListItemProps","nav","subtitle","roundedProps","lineClasses","dispatchEvent","MouseEvent","hasSubtitle","replacement","VListItemAction","makeVListSubheaderProps","sticky","VListSubheader","makeVDividerProps","thickness","vertical","VDivider","dividerStyles","makeVListChildrenProps","returnObject","VListChildren","itemProps","raw","subheader","slotsWithItem","listGroupProps","listItemProps","makeItemsProps","itemTitle","itemValue","itemChildren","transformItem","transformItems","array","useItems","hasNullItem","itemType","isPrimitive","makeVListProps","VList","useListItems","tagName","VListImg","makeVListItemActionProps","makeVListItemMediaProps","VListItemMedia","elementToViewport","point","anchorToPoint","locationStrategies","static","connected","contentStyles","isFixedPosition","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","updateLocation","contentEl","contentBox","getIntrinsicSize","scrollParents","viewport","scrollBox","viewportMargin","placement","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","hasOverflowY","newPlacement","flip","newOverflows","pixelRound","pixelCeil","newContentEl","oldTarget","oldContentEl","makeLocationStrategyProps","locationStrategy","devicePixelRatio","ceil","clean","frames","raf","scrollStrategies","none","bindScroll","scrollElements","contained","scrollbarWidth","scrollableParent","reposition","slow","ric","time","requestIdleCallback","cancelIdleCallback","makeScrollStrategyProps","scrollStrategy","VMenuSymbol","makeDelayProps","closeDelay","openDelay","useDelay","clearDelay","runDelay","isOpening","timeoutId","defer","runOpenDelay","runCloseDelay","makeActivatorProps","openOnClick","openOnHover","openOnFocus","closeOnContentClick","useActivator","isTop","activatorEl","isHovered","firstEnter","cursorTarget","availableEvents","sourceCapabilities","firesTouchEvents","activatorEvents","onMouseenter","onMouseleave","contentEvents","closeParents","scrimEvents","activatorRef","targetRef","bindActivatorProps","getActivator","_handler","removeAttribute","bindProps","unbindActivatorProps","unbindProps","_useActivator","hasAttribute","useHydration","makeLazyProps","useLazy","hasContent","useScopeId","scopeId","StackSymbol","globalStack","defaultConditional","checkEvent","checkIsActive","ShadowRoot","host","closeConditional","handleShadow","ClickOutside","mounted","shadowTarget","_clickOutside","lastMousedownWasOutside","directive","beforeUnmount","Scrim","makeVOverlayProps","attach","closeOnBack","contentProps","noClickAnimation","persistent","scrim","VOverlay","_disableGlobalStack","afterEnter","afterLeave","scrimEl","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","disableGlobalStack","createStackEntry","stack","activeChildren","_zIndex","lastZIndex","_isTop","useStack","teleportTarget","targetElement","useTeleport","rootNode","onResize","useLocationStrategies","onClickOutside","animateClick","useScrollStrategies","router","removeBefore","removeAfter","popped","onPopstate","replaced","beforeEach","afterEach","useBackButton","scrollParent","Teleport","persisted","Refs","getDescriptor","currentObj","descriptor","getOwnPropertyDescriptor","forwardRefs","bind","setupState","childRefs","queue","makeVMenuProps","submenu","VMenu","overlay","openChildren","onFocusIn","HTMLTextAreaElement","HTMLInputElement","closest","tabIndex","onActivatorKeydown","stopImmediatePropagation","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","isClickInsideElement","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","onKeydownClear","isOutlined","hasClear","filterFieldProps","activeTypes","makeVTextFieldProps","autofocus","counterValue","persistentPlaceholder","persistentCounter","modelModifiers","maxlength","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","selectionStart","selectionEnd","hasCounter","fieldProps","fieldClass","cloneVNode","makeVVirtualScrollItemProps","renderless","VVirtualScrollItem","itemRef","makeVirtualProps","itemHeight","useVirtual","paddingTop","markerRef","markerOffset","viewportHeight","hasInitialRender","offsets","updateTime","targetScrollIndex","getSize","updateOffsets","wrap","debounce","calculateVisibleItems","scrollToIndex","calculateOffset","calculateIndex","high","low","mid","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","_calculateVisibleItems","sign","topOverflow","bottomOverflow","computedItems","deep","handleScroll","scrollTime","handleScrollend","handleItemResize","prevHeight","prevMinHeight","makeVVirtualScrollProps","VVirtualScroll","handleListeners","method","onScrollPassive","onScrollend","useScrolling","listRef","textFieldRef","isScrolling","scrollTimeout","finishScrolling","makeSelectProps","chips","closableChips","closeText","openText","hideNoData","hideSelected","listProps","menuIcon","menuProps","openOnClear","itemColor","makeVSelectProps","ue","vTextFieldRef","vMenuRef","vVirtualScrollRef","_menu","transformed","selection","keyboardLookupLastTime","keyboardLookupPrefix","displayItems","menuDisabled","computedMenuProps","listEvents","onMousedownControl","onListKeydown","onModelUpdate","hasChips","chip","hasList","textFieldProps","inputmode","onChipClose","hasSlot","slotContent","_createTextVNode","createTextVNode","defaultFilter","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","clearOnSelect","search","listHasFocus","selectionIndex","filteredItem","hasSelectionSlot","highlightFirst","onMousedownMenuIcon","originalSelectionIndex","setSelectionRange","onUpdateModelValue","isSelecting","highlightResult","makeVBadgeProps","bordered","dot","VBadge","badgeAttrs","makeVBannerActionsProps","VBannerActions","VBannerText","makeVBannerProps","avatar","actions","makeVBottomNavigationProps","grow","VBottomNavigation","makeVDialogProps","fullscreen","retainFocus","scrollable","VDialog","firstElement","lastElement","makeVBottomSheetProps","dialogProps","makeVBreadcrumbsDividerProps","VBreadcrumbsDivider","makeVBreadcrumbsItemProps","VBreadcrumbsItem","makeVBreadcrumbsProps","VBreadcrumbs","VCardActions","makeVCardSubtitleProps","VCardSubtitle","VCardTitle","makeCardItemProps","VCardItem","makeVCardTextProps","VCardText","makeVCardProps","hover","hasHeader","hasCardItem","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","createHandlers","touchmoveX","touchmoveY","move","touchstart","changedTouches","originalEvent","touchend","touchmove","Touch","_touchHandlers","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","continuous","VWindow","rootRef","isRtlReverse","transitionCount","transitionHeight","activeIndex","itemsLength","lastIndex","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","canvasRef","canvasWidth","canvasHeight","_dotPosition","dotPosition","dotStyles","handleMouseDown","handleMouseMove","handleMouseUp","coords","getEventCoordinates","updateDotPosition","updateCanvas","canvas","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","onTouchstartPassive","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","indexFromEnd","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","elevationProps","relevantKeys","multipliers","_step","multiplier","parseKeydown","positionPercentage","makeVSliderTrackProps","VSliderTrack","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","tick","directionValue","makeVSliderProps","thumbContainerRef","roundedValue","trackStop","VColorPickerPreview","hideAlpha","makeVColorPickerPreviewProps","abortController","AbortController","openEyeDropper","EyeDropper","colorHexValue","signal","sRGBHex","onUnmounted","abort","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","makeVColorPickerSwatchesProps","swatches","parseDefaultColors","VColorPickerSwatches","swatch","makeVSheetProps","VSheet","VColorPicker","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","makeVColorPickerProps","converted","stripAlpha","extractColor","currentColor","externalChange","updateColor","sheetProps","makeVComboboxProps","delimiters","cleared","_search","isComposing","isComposingIgnoreKey","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","formatString","formats","newDate","customFormat","year","month","day","weekday","getDate","DateTimeFormat","hour","hour12","minute","timeZone","timeZoneName","isAfter","comparing","isEqual","startOfDay","VuetifyDateAdapter","toJsDate","toISO","parseISO","addMinutes","setMinutes","getMinutes","addHours","setHours","getHours","addDays","setDate","addWeeks","addMonths","setMonth","getWeekArray","firstDayOfWeek","weeks","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","getDay","lastDayWeekIndex","adjacentDay","startOfWeek","endOfWeek","lastDay","isWithinRange","isBefore","isAfterDay","isSameDay","isSameMonth","isSameYear","count","setYear","setFullYear","getDiff","getWeekdays","daysFromSunday","getYear","getNextMonth","getPreviousMonth","endOfDay","startOfYear","endOfYear","DateOptionsSymbol","DateAdapterSymbol","createInstance","useDate","makeVConfirmEditProps","cancelText","okText","VConfirmEdit","save","internalModel","structuredClone","actionsUsed","makeDataTableExpandProps","expandOnClick","showExpand","expanded","VDataTableExpandedKey","provideExpanded","newExpanded","isExpanded","toggleExpand","useExpanded","makeDataTableGroupProps","groupBy","VDataTableGroupSymbol","createGroupBy","provideGroupBy","disableSort","isGroupOpen","sortByWithGroups","toggleGroup","extractRows","dive","depth","useGroupBy","groupItems","groupedItems","groupItemsByProperty","flattenItems","flatItems","useGroupedItems","useOptions","itemsPerPage","oldOptions","makeDataTablePaginateProps","VDataTablePaginationSymbol","createPagination","providePagination","startIndex","stopIndex","pageCount","setPage","setItemsPerPage","usePaginatedItems","paginatedItems","singleSelectStrategy","showSelectAll","allSelected","selectAll","pageSelectStrategy","allSelectStrategy","allItems","_ref8","makeDataTableSelectProps","showSelect","VDataTableSelectionSymbol","provideSelection","_ref9","allSelectable","currentPageSelectable","someSelected","toggleSelect","isSomeSelected","useSelection","makeDataTableSortProps","customKeySort","multiSort","mustSort","VDataTableSortSymbol","createSort","provideSort","toggleSort","newSortBy","isSorted","useSort","useSortedItems","sortedItems","sortByItems","stringCollator","Collator","sensitivity","usage","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","sortBRaw","sortRawFunctions","customResult","sortFunctions","compare","sortItems","makeDataIteratorItemsProps","itemSelectable","useDataIteratorItems","makeVDataIteratorProps","VDataIterator","paginatedItemsWithoutGroups","footer","makeVPaginationProps","totalVisible","firstIcon","lastIcon","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","VPagination","maxButtons","firstItem","totalWidth","itemWidth","marginRight","getMax","minButtons","MAX_SAFE_INTEGER","even","middle","rangeLength","rangeStart","setValue","updateRef","onBeforeUpdate","useRefs","VPaginationBtn","controls","prevDisabled","nextDisabled","updateFocus","makeVDataTableFooterProps","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","showCurrentPage","VDataTableFooter","usePagination","option","paginationProps","VDataTableColumn","fixed","fixedOffset","lastFixed","noPadding","nowrap","makeDataTableHeaderProps","headers","VDataTableHeadersSymbol","defaultHeader","sortable","defaultActionHeader","extractLeaves","columns","extractKeys","getDefaultItem","getDepth","maxDepth","currentDepth","priority","enqueue","added","whole","dequeue","priorityQueue","rowSize","row","fraction","rowspan","colspan","pow","convertToInternalHeaders","internalHeaders","defaultItem","internalItem","createHeaders","filterFunctions","seenFixed","setFixed","setFixedOffset","parseFixedColumns","flatHeaders","sortRaw","useHeaders","makeVDataTableHeadersProps","sortAscIcon","sortDescIcon","headerProps","VDataTableHeaders","getFixedStyles","getSortIcon","headerCellClasses","VDataTableHeaderCell","columnSlotName","columnSlotProps","VDataTableMobileHeaderCell","onClick:clear","onClick:append","makeVDataTableGroupHeaderRowProps","VDataTableGroupHeaderRow","rows","selectGroup","makeVDataTableRowProps","cellProps","onContextmenu","onDblclick","VDataTableRow","slotName","headerSlotName","columnCellProps","withModifiers","displayValue","toDisplayString","makeVDataTableRowsProps","rowProps","VDataTableRows","itemSlotProps","makeVTableProps","fixedHeader","fixedFooter","VTable","makeDataTableItemsProps","itemColumns","useDataTableItems","makeDataTableProps","hideDefaultBody","hideDefaultFooter","hideDefaultHeader","makeVDataTableProps","VDataTable","internalItems","dataTableFooterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","colgroup","thead","tbody","tfoot","makeVDataTableVirtualProps","VDataTableVirtual","makeVDataTableServerProps","VDataTableServer","itemsWithoutGroups","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","makeVDatePickerControlsProps","modeIcon","viewMode","VDatePickerControls","click:year","click:month","click:prev","click:next","click:text","disableMonth","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","makeVDatePickerHeaderProps","VDatePickerHeader","click:append","onClickAppend","makeCalendarProps","allowedDates","showAdjacentMonths","weekdays","weeksInMonth","useCalendar","weekDays","days","week","genDays","isoDate","isAdjacent","isStart","isEnd","isSame","formatted","isWeekStart","isWeekEnd","isToday","isHidden","localized","daysInWeek","daysInMonth","weekNumbers","d1w1","tv","diffTime","diffDays","getWeek","makeVDatePickerMonthProps","hideWeekdays","showWeek","VDatePickerMonth","daysRef","rangeStop","isReverse","atMax","_value","datesInRange","nextDate","onRangeClick","onMultipleClick","weekDay","makeVDatePickerMonthsProps","VDatePickerMonths","months","btnProps","makeVDatePickerYearsProps","VDatePickerYears","years","yearRef","scrollIntoView","VPickerTitle","makeVPickerProps","landscape","hideHeader","VPicker","makeVDatePickerProps","VDatePicker","isReversing","headerTransition","minDate","maxDate","_date","onUpdateYear","onUpdateMonth","onClickDate","arrBefore","arrAfter","newMonth","newYear","pickerProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","makeVEmptyStateProps","actionText","headline","textWidth","VEmptyState","onClickAction","hasActions","hasHeadline","hasMedia","media","VExpansionPanelSymbol","makeVExpansionPanelTextProps","VExpansionPanelText","expansionPanel","makeVExpansionPanelTitleProps","hideActions","VExpansionPanelTitle","makeVExpansionPanelProps","VExpansionPanel","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","expansionPanelTitleProps","expansionPanelTextProps","makeVExpansionPanelsProps","VExpansionPanels","variantClass","makeVFabProps","VFab","hasPosition","orientation","vFabRef","makeVFileInputProps","counterSizeString","counterString","hideInput","showSize","VFileInput","files","totalBytes","totalBytesReadable","fileNames","fileCount","onClickPrepend","makeVFooterProps","VFooter","autoHeight","makeVFormProps","VForm","submit","errors","valid","invalid","markRaw","itemErrorMessages","createForm","formRef","onReset","onSubmit","_e","ready","catch","finally","defaultPrevented","novalidate","makeVHoverProps","VHover","isHovering","makeVInfiniteScrollProps","margin","loadMoreText","emptyText","VInfiniteScrollIntersect","VInfiniteScroll","rootEl","startStatus","endStatus","setScrollAmount","setStatus","status","getContainerSize","previousScrollSize","handleIntersect","_isIntersecting","intersecting","getStatus","getScrollAmount","renderSide","hasStartIntersect","hasEndIntersect","intersectMode","VItemGroupSymbol","makeVItemGroupProps","VItemGroup","VItem","VKbd","makeVLayoutProps","VLayout","makeVLayoutItemProps","VLayoutItem","makeVLazyProps","VLazy","makeVLocaleProviderProps","VLocaleProvider","makeVMainProps","VMain","HORIZON","HISTORY","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","isPersistent","isTemporary","isSticky","currentRoute","isDragging","dragProgress","onTouchstart","onTouchmove","onTouchend","maybeDragging","pos","getProgress","limit","touchX","touchY","inTouchZone","inElement","cancelable","velocity","vx","vy","thresholdMet","dragStyles","useTouch","isStuck","stickyStyles","stuckPosition","scrollY","layoutTop","bodyScroll","useSticky","scrimStyles","VNoSsr","makeVOtpInputProps","focusAll","VOtpInput","finish","fields","focusIndex","isValidNumber","autocomplete","onPaste","clipboardText","clipboardData","makeVParallaxProps","VParallax","displayHeight","Document","scrollPos","translate","sizeScale","onLoadstart","makeVRadioProps","VRadio","makeVRadioGroupProps","VRadioGroup","makeVRangeSliderProps","strict","VRangeSlider","startThumbRef","stopThumbRef","stopOffset","makeVRatingProps","itemAriaLabel","emptyIcon","fullIcon","halfIncrements","itemLabels","itemLabelPosition","VRating","increments","hoverIndex","itemState","isFilled","eventState","VRatingItem","showStar","createLabel","labelProps","rootTypes","article","card","heading","ossein","paragraph","sentences","table","genBone","genBones","bone","genStructure","mapBones","bones","makeVSkeletonLoaderProps","boilerplate","VSkeletonLoader","isLoading","loadingProps","ariaLive","VSlideGroupItem","slideGroupItem","makeVSnackbarProps","multiLine","VSnackbar","countdown","milliseconds","clearInterval","setInterval","elapsed","useCountdown","timerRef","startY","hasLayout","activeTimeout","onPointerenter","onPointerleave","locationClasses","loc","makeLineProps","autoDraw","autoDrawDuration","autoDrawEasing","gradientDirection","labels","labelSize","lineWidth","padding","showLabels","smooth","makeVBarlineProps","autoLineWidth","VBarline","boundary","minX","maxX","minY","maxY","genBars","totalValues","maxValue","minValue","gridX","gridY","horizonY","parsedLabels","points","bars","gradientData","gradientUnits","x1","y1","x2","y2","rx","ry","attributeName","dur","textAnchor","dominantBaseline","genPath","isCollinear","p1","p2","p0","getDistance","radiusForPoint","moveTo","vector","unitVector","makeVTrendlineProps","VTrendline","lastLength","genPoints","_genPath","pathRef","getTotalLength","strokeDasharray","strokeDashoffset","stroke","makeVSparklineProps","VSparkline","totalHeight","lineProps","makeVSpeedDialProps","VSpeedDial","menuRef","VStepperSymbol","makeVStepperActionsProps","prevText","nextText","VStepperActions","prevSlotProps","nextSlotProps","VStepperHeader","makeStepperItemProps","completeIcon","editable","editIcon","errorIcon","makeVStepperItemProps","VStepperItem","canEdit","hasError","hasCompleted","makeVStepperWindowProps","VStepperWindow","_model","makeVStepperWindowItemProps","VStepperWindowItem","makeStepperProps","altLabels","nonLinear","makeVStepperProps","VStepper","_items","hasWindow","makeVSwitchProps","VSwitch","control","loaderColor","onTrackClick","thumb","makeVSystemBarProps","VSystemBar","VTabsSymbol","makeVTabProps","sliderColor","hideSlider","VTab","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevEl","nextEl","prevBox","nextBox","xy","XY","rightBottom","widthHeight","sigma","makeVTabsWindowProps","VTabsWindow","makeVTabsWindowItemProps","VTabsWindowItem","makeVTabsProps","alignTabs","fixedTabs","parseItems","makeVTextareaProps","autoGrow","noResize","maxRows","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","lineHeight","newHeight","_vModelText","makeVThemeProviderProps","withBackground","VThemeProvider","makeVTimelineDividerProps","dotColor","fillDot","hideDot","iconColor","lineColor","VTimelineDivider","lineColorClasses","lineColorStyles","makeVTimelineItemProps","hideOpposite","lineInset","VTimelineItem","dotRef","makeVTimelineProps","lineThickness","truncateLine","VTimeline","sideClasses","truncateClasses","makeVToolbarItemsProps","VToolbarItems","makeVTooltipProps","VTooltip","VValidation","validation","_mutate","Mutate","modifierKeys","attributes","attr","characterData","childList","subtree","sub","MutationObserver","mutations","Resize","_onResize","self","arg","_onScroll","Scroll","Tooltip","hook","textContent","walk","findComponentParent","appContext","mountComponent","resolveComponent","useDirectiveComponent","createVuetify","blueprint","components","createDefaults","platform","updateSize","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","createDisplay","createDate","createGoTo","$nuxt","mount","__VUE_OPTIONS_API__","mixin","$vuetify","call","version","_createVuetify"],"mappings":"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"}