{"version":3,"file":"js/1905.2dd149bd.js","mappings":"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","sources":["webpack://geoviz-ui/../../src/composables/scroll.ts","webpack://geoviz-ui/../../../src/components/VAppBar/VAppBar.tsx","webpack://geoviz-ui/../../../src/components/VAppBar/VAppBarNavIcon.tsx","webpack://geoviz-ui/../../../src/components/VAppBar/VAppBarTitle.tsx","webpack://geoviz-ui/../../../src/components/VBadge/VBadge.tsx","webpack://geoviz-ui/../../../src/components/VBtn/VBtn.tsx","webpack://geoviz-ui/../../../src/components/VCheckbox/VCheckbox.tsx","webpack://geoviz-ui/../../../src/components/VCheckbox/VCheckboxBtn.tsx","webpack://geoviz-ui/../../../src/components/VGrid/VContainer.tsx","webpack://geoviz-ui/../../../src/components/VNavigationDrawer/sticky.ts","webpack://geoviz-ui/../../src/composables/touch.ts","webpack://geoviz-ui/../../../src/components/VNavigationDrawer/touch.ts","webpack://geoviz-ui/../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx","webpack://geoviz-ui/../../../src/components/VSystemBar/VSystemBar.tsx","webpack://geoviz-ui/../../../src/components/VToolbar/VToolbar.tsx","webpack://geoviz-ui/../../../src/components/VToolbar/VToolbarTitle.tsx","webpack://geoviz-ui/../../src/composables/layout.ts","webpack://geoviz-ui/../../src/composables/theme.ts","webpack://geoviz-ui/../../../src/directives/ripple/index.ts","webpack://geoviz-ui/../../src/util/anchor.ts","webpack://geoviz-ui/../../src/util/helpers.ts"],"sourcesContent":["// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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","// 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 {\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 './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","// 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","// 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 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 objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n continue\n }\n\n if (Array.isArray(sourceProperty) && Array.isArray(targetProperty) && arrayFn) {\n out[key] = arrayFn(sourceProperty, targetProperty)\n\n continue\n }\n\n out[key] = targetProperty\n }\n\n return out\n}\n\nexport function 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"],"names":["makeScrollProps","propsFactory","scrollTarget","type","String","scrollThreshold","Number","default","useScroll","props","args","arguments","length","undefined","canScroll","previousScroll","previousScrollHeight","target","ref","currentScroll","shallowRef","savedScroll","currentThreshold","isScrollActive","isScrollingUp","computed","scrollRatio","clamp","value","onScroll","targetEl","pageYOffset","scrollTop","currentScrollHeight","Window","document","documentElement","scrollHeight","Math","abs","watch","onMounted","newTarget","querySelector","window","removeEventListener","addEventListener","passive","consoleWarn","immediate","onBeforeUnmount","makeVAppBarProps","scrollBehavior","modelValue","Boolean","location","validator","includes","makeVToolbarProps","makeLayoutItemProps","height","VAppBar","genericComponent","name","emits","setup","_ref","slots","vToolbarRef","isActive","useProxiedModel","behavior","Set","split","hide","has","fullyHide","inverted","collapse","elevate","fadeImage","canHide","isCollapsed","isFlat","flat","opacity","contentHeight","extensionHeight","useToggleScope","watchEffect","ssrBootStyles","useSsrBoot","layoutItemStyles","useLayoutItem","id","order","parseInt","position","toRef","layoutSize","elementSize","active","absolute","useRender","toolbarProps","VToolbar","filterProps","_createVNode","_mergeProps","class","style","makeVAppBarNavIconProps","makeVBtnProps","icon","variant","VAppBarNavIcon","VBtn","VAppBarTitle","makeVToolbarTitleProps","VToolbarTitle","makeVBadgeProps","bordered","color","content","dot","floating","IconValue","inline","label","max","offsetX","offsetY","textColor","makeComponentProps","makeLocationProps","makeRoundedProps","makeTagProps","makeThemeProps","makeTransitionProps","transition","VBadge","inheritAttrs","ctx","backgroundColorClasses","backgroundColorStyles","useBackgroundColor","roundedClasses","useRounded","t","useLocale","textColorClasses","textColorStyles","useTextColor","themeClasses","useTheme","locationStyles","useLocation","side","base","isNaN","badgeAttrs","attrs","pickWithRest","tag","MaybeTransition","_withDirectives","badge","VIcon","_vShow","activeColor","baseColor","symbol","VBtnToggleSymbol","Function","Object","prependIcon","appendIcon","block","readonly","slim","stacked","ripple","text","makeBorderProps","makeDensityProps","makeDimensionProps","makeElevationProps","makeGroupItemProps","makeLoaderProps","makePositionProps","makeRouterProps","makeSizeProps","makeVariantProps","val","provideTheme","borderClasses","useBorder","densityClasses","useDensity","dimensionStyles","useDimension","elevationClasses","useElevation","loaderClasses","useLoader","positionClasses","usePosition","sizeClasses","sizeStyles","useSize","group","useGroupItem","link","useLink","isLink","isSelected","variantProps","showColor","colorClasses","colorStyles","variantClasses","useVariant","isDisabled","disabled","isElevated","border","valueAttr","JSON","stringify","onClick","e","metaKey","ctrlKey","shiftKey","button","navigate","toggle","useSelectLink","select","Tag","hasPrepend","prepend","hasAppend","append","hasIcon","withDirectives","selectedClass","loading","href","genOverlays","VDefaultsProvider","loader","VProgressCircular","Ripple","center","makeVCheckboxProps","makeVInputProps","omit","makeVCheckboxBtnProps","VCheckbox","focused","model","isFocused","focus","blur","useFocus","uid","getUid","rootAttrs","controlAttrs","filterInputAttrs","inputProps","VInput","checkboxProps","VCheckboxBtn","$event","_ref2","messagesId","isReadonly","isValid","indeterminate","indeterminateIcon","makeVSelectionControlProps","falseIcon","trueIcon","onChange","v","controlProps","VSelectionControl","makeVContainerProps","fluid","VContainer","rtlClasses","useRtl","useSticky","rootEl","isSticky","isStuck","stuckPosition","stickyStyles","top","bottom","convertToUnit","lastScrollTop","direction","scrollY","rect","getBoundingClientRect","layoutTop","parseFloat","innerHeight","bodyScroll","getComputedStyle","getPropertyValue","HORIZON","HISTORY","kineticEnergyToVelocity","work","sqrt2","sqrt","calculateImpulseVelocity","samples","d","i","vprev","vcurr","useVelocity","touches","addMovement","Array","from","changedTouches","forEach","touch","identifier","CircularBuffer","push","timeStamp","endTouch","getVelocity","values","reverse","Error","newest","x","y","clientX","clientY","this","absX","absY","oops","useTouch","el","isTemporary","width","touchless","onTouchstart","onTouchmove","onTouchend","isHorizontal","maybeDragging","isDragging","dragProgress","offset","start","getOffset","pos","clientWidth","clientHeight","getProgress","limit","progress","min","touchX","touchY","touchZone","inTouchZone","inElement","cancelable","dx","dy","thresholdMet","preventDefault","velocity","vx","vy","left","right","dragStyles","transform","setProperty","onScopeDispose","locations","makeVNavigationDrawerProps","disableResizeWatcher","disableRouteWatcher","expandOnHover","permanent","rail","railWidth","scrim","image","temporary","persistent","sticky","makeDelayProps","makeDisplayProps","mobile","VNavigationDrawer","emit","isRtl","displayClasses","useDisplay","router","useRouter","scopeId","useScopeId","isHovering","runOpenDelay","runCloseDelay","useDelay","toPhysical","isPersistent","nextTick","currentRoute","size","layoutItemScrimStyles","disableTransitions","scrimColor","scrimStyles","provideDefaults","VList","bgColor","hasImage","_Fragment","VImg","alt","cover","src","Transition","makeVSystemBarProps","VSystemBar","allowedDensities","density","extended","title","isExtended","extension","hasTitle","VTabs","VExpandTransition","hasText","VuetifyLayoutKey","Symbol","for","VuetifyLayoutItemKey","ROOT_ZINDEX","makeLayoutProps","overlaps","fullHeight","useLayout","layout","inject","getLayoutItem","mainRect","mainStyles","options","vm","getCurrentInstance","provide","isKeptAlive","onDeactivated","onActivated","register","unregister","layoutRect","generateLayers","positions","layoutSizes","activeItems","previousLayer","layers","layer","get","amount","createLayout","parentLayout","rootZIndex","registered","reactive","Map","priorities","disabledTransitions","resizeRef","contentRect","useResizeObserver","computedOverlaps","map","overlap","filter","item","topPosition","bottomPosition","topAmount","bottomAmount","set","uniquePriorities","p","sort","a","b","items","transitionsEnabled","some","slice","index","find","rootVm","isMounted","instances","findChildrenWithProvide","vnode","instanceIndex","indexOf","splice","findIndex","zIndex","isOppositeHorizontal","isOppositeVertical","unit","styles","delete","layoutClasses","layoutStyles","overflow","layoutRef","ThemeSymbol","theme","genDefaults","defaultTheme","variations","colors","lighten","darken","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","defaults","key","entries","mergeDeep","createTheme","parsedOptions","computedThemes","acc","original","variation","fn","createRange","RGBtoHex","parseColor","keys","test","onColor","colorVal","getForeground","current","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","flatMap","str","join","getHead","children","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","IN_BROWSER","patch","addHeadObjs","updateDOM","styleEl","getElementById","updateStyles","createElement","setAttribute","appendChild","innerHTML","global","newTheme","selector","line","lightOverlay","darkOverlay","rgb","r","g","startsWith","getLuma","stopSymbol","DELAY_RIPPLE","webkitTransform","isTouchEvent","constructor","isKeyboardEvent","calculate","localX","localY","radius","scale","_ripple","circle","centerX","centerY","ripples","show","enabled","container","animation","className","dataset","previousPosition","classList","add","activated","performance","now","setTimeout","remove","getElementsByClassName","isHiding","diff","delay","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","keyCodes","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","isObject","stop","removeListeners","mounted","unmounted","updated","oldValue","parseAnchor","anchor","align","flipSide","flipAlign","flipCorner","getAxis","getNestedValue","obj","path","fallback","last","deepEqual","Date","getTime","every","getObjectValueByPath","replace","getPropertyFromItem","property","isArray","k","isFinite","refElement","$el","nodeType","Node","TEXT_NODE","nextElementSibling","freeze","tab","esc","up","down","end","home","del","backspace","insert","pageup","pagedown","shift","keyValues","hasOwnProperty","pick","paths","found","exclude","create","rest","RegExp","clone","prop","only","include","onRE","isOn","bubblingEvents","events","inputEvents","inputAttrs","assign","wrapInArray","debounce","timeoutId","wrap","_len","_key","unref","clear","getDecimals","trimmedStr","toString","trim","padEnd","char","repeat","padStart","chunk","chunked","substr","source","arrayFn","out","sourceProperty","targetProperty","flattenFragments","nodes","node","Fragment","toKebabCase","cache","kebab","toLowerCase","child","suspense","ssContent","component","getOwnPropertySymbols","subTree","_arr","WeakMap","_pointer","_classPrivateFieldInitSpec","_classPrivateFieldGet","_classPrivateFieldSet","concat","destructComputed","getter","refs","flush","toRefs","arr","eventName","propName","EventProp","hasEvent","capitalize","callEvent","handler","_len2","_key2","h","focusableChildren","filterByTabIndex","targets","s","querySelectorAll","getNextElement","elements","condition","_el","idx","activeElement","inc","offsetParent","focusChild","focusable","at","contains","matchesSelector","supportsSelector","CSS","supports","matches","err","ensureValidVNode","vnodes","isVNode","Comment","defer","timeout","cb","isClickInsideElement","event","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","templateRef","defineProperty","enumerable","checkPrintable","isPrintableChar","noModifier","altKey"],"sourceRoot":""}