@vuetify/nightly 3.8.5-master.2025-05-20 → 3.8.6-dev.2025-05-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -14
- package/dist/json/attributes.json +1331 -1311
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +192 -192
- package/dist/json/tags.json +5 -0
- package/dist/json/web-types.json +2610 -2471
- package/dist/vuetify-labs.cjs +288 -117
- package/dist/vuetify-labs.css +3866 -3838
- package/dist/vuetify-labs.d.ts +1490 -1352
- package/dist/vuetify-labs.esm.js +289 -118
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +288 -117
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +282 -106
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3130 -3102
- package/dist/vuetify.d.ts +659 -519
- package/dist/vuetify.esm.js +283 -107
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +282 -106
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1188 -1178
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +6 -1
- package/lib/components/VAlert/VAlert.d.ts +35 -0
- package/lib/components/VAlert/VAlert.js +14 -9
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +7 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +120 -96
- package/lib/components/VAutocomplete/VAutocomplete.js +18 -1
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.css +30 -7
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +58 -32
- package/lib/components/VBtnGroup/VBtnGroup.js +7 -3
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +44 -17
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +25 -0
- package/lib/components/VCheckbox/VCheckbox.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +120 -96
- package/lib/components/VCombobox/VCombobox.js +19 -1
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +103 -89
- package/lib/components/VNumberInput/VNumberInput.js +19 -4
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +3 -3
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +120 -96
- package/lib/components/VSelect/VSelect.js +18 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/composables/calendar.d.ts +1 -0
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/index.d.ts +1 -0
- package/lib/composables/date/index.js +1 -0
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/filter.js +3 -0
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/iconSizes.d.ts +28 -0
- package/lib/composables/iconSizes.js +23 -0
- package/lib/composables/iconSizes.js.map +1 -0
- package/lib/composables/theme.d.ts +6 -1
- package/lib/composables/theme.js +94 -26
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +6 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +74 -69
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +87 -87
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +7 -11
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/util/globals.d.ts +1 -0
- package/lib/util/globals.js +1 -0
- package/lib/util/globals.js.map +1 -1
- package/package.json +3 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"theme.js","names":["computed","inject","provide","ref","shallowRef","toRef","watch","watchEffect","createRange","darken","getCurrentInstance","getForeground","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","genDefaults","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","stylesheetId","parseThemeOptions","options","arguments","length","undefined","defaults","isDisabled","key","Object","entries","createCssClass","lines","selector","content","scope","push","getScopedSelector","map","line","genCssVariables","lightOverlay","darkOverlay","value","rgb","r","g","b","startsWith","color","genVariation","name","object","variation","fn","amount","genVariations","variationColors","genOnColors","onColors","keys","onColor","colorVal","scopeSelector","upsertStyles","styleEl","styles","innerHTML","getOrCreateStyleElement","id","cspNonce","style","document","getElementById","createElement","type","setAttribute","head","appendChild","createTheme","parsedOptions","computedThemes","acc","original","current","themeName","bgLines","fgLines","Set","values","flatMap","str","i","join","install","app","_context","provides","usehead","getHead","textContent","nonce","entry","patch","addHeadObjs","updateDOM","updateStyles","immediate","themeClasses","global","provideTheme","props","Error","newTheme","useTheme"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n shallowRef,\n toRef,\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/client'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n stylesheetId?: string\n scope?: string\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n stylesheetId: string\n scope?: string\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\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': '#c8c8c8',\n 'on-surface-variant': '#000000',\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 stylesheetId: 'vuetify-theme-stylesheet',\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<string, InternalThemeDefinition> = {}\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\nfunction createCssClass (lines: string[], selector: string, content: string[], scope?: string) {\n lines.push(\n `${getScopedSelector(selector, scope)} {\\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\nfunction genVariation (name: string, color: string, variations: VariationsOptions | false) {\n const object: Record<string, string> = {}\n if (variations) {\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(variations[variation], 1)) {\n object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n return object\n}\n\nfunction genVariations (colors: InternalThemeDefinition['colors'], variations: VariationsOptions | false) {\n if (!variations) return {}\n\n let variationColors = {}\n for (const name of variations.colors) {\n const color = colors[name]\n\n if (!color) continue\n\n variationColors = {\n ...variationColors,\n ...genVariation(name, color, variations),\n }\n }\n return variationColors\n}\n\nfunction genOnColors (colors: InternalThemeDefinition['colors']) {\n const onColors = {} as InternalThemeDefinition['colors']\n\n for (const color of Object.keys(colors)) {\n if (color.startsWith('on-') || colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(colors[color])\n\n onColors[onColor] = getForeground(colorVal)\n }\n\n return onColors\n}\n\nfunction getScopedSelector (selector: string, scope?: string) {\n if (!scope) return selector\n\n const scopeSelector = `:where(${scope})`\n\n return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`\n}\n\nfunction upsertStyles (styleEl: HTMLStyleElement | null, styles: string) {\n if (!styleEl) return\n\n styleEl.innerHTML = styles\n}\n\nfunction getOrCreateStyleElement (id: string, cspNonce?: string) {\n if (!IN_BROWSER) return null\n\n let style = document.getElementById(id) as HTMLStyleElement | null\n\n if (!style) {\n style = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (cspNonce) style.setAttribute('nonce', cspNonce)\n\n document.head.appendChild(style)\n }\n\n return style\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = shallowRef(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const colors = {\n ...original.colors,\n ...genVariations(original.colors, parsedOptions.variations),\n }\n\n acc[name] = {\n ...original,\n colors: {\n ...colors,\n ...genOnColors(colors),\n },\n }\n }\n return acc\n })\n\n const current = toRef(() => 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'], parsedOptions.scope)\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope)\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 ], parsedOptions.scope)\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 (key.startsWith('on-')) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope)\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 ], parsedOptions.scope)\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope)\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope)\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient & VueHeadClient<any> | undefined\n if (head) {\n function getHead () {\n return {\n style: [{\n textContent: styles.value,\n id: parsedOptions.stylesheetId,\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\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(toRef(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n upsertStyles(\n getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce),\n styles.value\n )\n }\n }\n }\n\n const themeClasses = toRef(() => 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 = toRef(() => props.theme ?? theme.name.value)\n const current = toRef(() => theme.themes.value[name.value])\n\n const themeClasses = toRef(() => 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"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"theme.js","names":["computed","getCurrentScope","inject","onScopeDispose","provide","ref","shallowRef","toRef","watch","watchEffect","consoleWarn","createRange","darken","deprecate","getCurrentInstance","getForeground","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","SUPPORTS_MATCH_MEDIA","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","genDefaults","defaultTheme","prefix","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","stylesheetId","scoped","unimportant","utilities","parseThemeOptions","options","arguments","length","undefined","defaults","isDisabled","key","Object","entries","createCssClass","lines","selector","content","scope","push","getScopedSelector","map","line","genCssVariables","lightOverlay","darkOverlay","value","rgb","r","g","b","startsWith","color","genVariation","name","object","variation","fn","amount","genVariations","variationColors","genOnColors","onColors","keys","onColor","colorVal","scopeSelector","upsertStyles","id","cspNonce","styles","styleEl","getOrCreateStyleElement","innerHTML","style","document","getElementById","createElement","type","setAttribute","head","appendChild","createTheme","parsedOptions","_name","systemName","get","set","val","computedThemes","acc","original","current","important","themeName","bgLines","fgLines","Set","values","flatMap","str","i","join","themeClasses","themeNames","media","window","matchMedia","updateSystemName","matches","addEventListener","passive","removeEventListener","install","app","_context","provides","usehead","getHead","textContent","nonce","entry","patch","addHeadObjs","updateDOM","updateStyles","immediate","change","includes","cycle","themeArray","currentIndex","indexOf","nextIndex","toggle","globalName","Proxy","target","prop","global","provideTheme","props","Error","newTheme","useTheme"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n getCurrentScope,\n inject,\n onScopeDispose,\n provide,\n ref,\n shallowRef,\n toRef,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n consoleWarn,\n createRange,\n darken,\n deprecate,\n getCurrentInstance,\n getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n SUPPORTS_MATCH_MEDIA,\n} from '@/util'\n\n// Types\nimport type { VueHeadClient } from '@unhead/vue/client'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: 'light' | 'dark' | 'system' | string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n stylesheetId?: string\n scope?: string\n unimportant?: boolean\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: 'light' | 'dark' | 'system' | string\n prefix: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n stylesheetId: string\n scope?: string\n scoped: boolean\n unimportant: boolean\n utilities: boolean\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n change: (themeName: string) => void\n cycle: (themeArray?: string[]) => void\n toggle: (themeArray?: [string, string]) => void\n\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n readonly prefix: string\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nfunction genDefaults () {\n return {\n defaultTheme: 'light',\n prefix: 'v-',\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': '#c8c8c8',\n 'on-surface-variant': '#000000',\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 stylesheetId: 'vuetify-theme-stylesheet',\n scoped: false,\n unimportant: false,\n utilities: true,\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<string, InternalThemeDefinition> = {}\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\nfunction createCssClass (lines: string[], selector: string, content: string[], scope?: string) {\n lines.push(\n `${getScopedSelector(selector, scope)} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition, prefix: string) {\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(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--${prefix}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(`--${prefix}${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n\nfunction genVariation (name: string, color: string, variations: VariationsOptions | false) {\n const object: Record<string, string> = {}\n if (variations) {\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(variations[variation], 1)) {\n object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n return object\n}\n\nfunction genVariations (colors: InternalThemeDefinition['colors'], variations: VariationsOptions | false) {\n if (!variations) return {}\n\n let variationColors = {}\n for (const name of variations.colors) {\n const color = colors[name]\n\n if (!color) continue\n\n variationColors = {\n ...variationColors,\n ...genVariation(name, color, variations),\n }\n }\n return variationColors\n}\n\nfunction genOnColors (colors: InternalThemeDefinition['colors']) {\n const onColors = {} as InternalThemeDefinition['colors']\n\n for (const color of Object.keys(colors)) {\n if (color.startsWith('on-') || colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(colors[color])\n\n onColors[onColor] = getForeground(colorVal)\n }\n\n return onColors\n}\n\nfunction getScopedSelector (selector: string, scope?: string) {\n if (!scope) return selector\n\n const scopeSelector = `:where(${scope})`\n\n return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`\n}\n\nfunction upsertStyles (id: string, cspNonce: string | undefined, styles: string) {\n const styleEl = getOrCreateStyleElement(id, cspNonce)\n\n if (!styleEl) return\n\n styleEl.innerHTML = styles\n}\n\nfunction getOrCreateStyleElement (id: string, cspNonce?: string) {\n if (!IN_BROWSER) return null\n\n let style = document.getElementById(id) as HTMLStyleElement | null\n\n if (!style) {\n style = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (cspNonce) style.setAttribute('nonce', cspNonce)\n\n document.head.appendChild(style)\n }\n\n return style\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const _name = shallowRef(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n const systemName = shallowRef('light')\n\n const name = computed({\n get () {\n return _name.value === 'system' ? systemName.value : _name.value\n },\n set (val: string) {\n _name.value = val\n },\n })\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const colors = {\n ...original.colors,\n ...genVariations(original.colors, parsedOptions.variations),\n }\n\n acc[name] = {\n ...original,\n colors: {\n ...colors,\n ...genOnColors(colors),\n },\n }\n }\n return acc\n })\n\n const current = toRef(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n const important = parsedOptions.unimportant ? '' : ' !important'\n const scoped = parsedOptions.scoped ? parsedOptions.prefix : ''\n\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope)\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope)\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme, parsedOptions.prefix),\n ], parsedOptions.scope)\n }\n\n if (parsedOptions.utilities) {\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 (key.startsWith('on-')) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope)\n } else {\n createCssClass(bgLines, `.${scoped}bg-${key}`, [\n `--${parsedOptions.prefix}theme-overlay-multiplier: var(--${parsedOptions.prefix}theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`,\n `color: rgb(var(--${parsedOptions.prefix}theme-on-${key}))${important}`,\n ], parsedOptions.scope)\n createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope)\n createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope)\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n }\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`)\n const themeNames = toRef(() => Object.keys(computedThemes.value))\n\n if (SUPPORTS_MATCH_MEDIA) {\n const media = window.matchMedia('(prefers-color-scheme: dark)')\n\n function updateSystemName () {\n systemName.value = media.matches ? 'dark' : 'light'\n }\n\n updateSystemName()\n\n media.addEventListener('change', updateSystemName, { passive: true })\n\n if (getCurrentScope()) {\n onScopeDispose(() => {\n media.removeEventListener('change', updateSystemName)\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<any> | undefined\n if (head) {\n function getHead () {\n return {\n style: [{\n textContent: styles.value,\n id: parsedOptions.stylesheetId,\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\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(toRef(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value)\n }\n }\n }\n\n function change (themeName: string) {\n if (!themeNames.value.includes(themeName)) {\n consoleWarn(`Theme \"${themeName}\" not found on the Vuetify theme instance`)\n return\n }\n\n name.value = themeName\n }\n\n function cycle (themeArray: string[] = themeNames.value) {\n const currentIndex = themeArray.indexOf(name.value)\n const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length\n\n change(themeArray[nextIndex])\n }\n\n function toggle (themeArray: [string, string] = ['light', 'dark']) {\n cycle(themeArray)\n }\n\n const globalName = new Proxy(name, {\n get (target, prop) {\n return target[prop as keyof typeof target]\n },\n set (target, prop, val) {\n if (prop === 'value') {\n deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`)\n }\n // @ts-expect-error\n target[prop] = val\n return true\n },\n }) as typeof name\n\n return {\n install,\n change,\n cycle,\n toggle,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n prefix: parsedOptions.prefix,\n themeClasses,\n styles,\n global: {\n name: globalName,\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 = toRef(() => props.theme ?? theme.name.value)\n const current = toRef(() => theme.themes.value[name.value])\n\n const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}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"],"mappings":"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","ignoreList":[]}
|
@@ -107,7 +107,12 @@ export function useVirtual(props, items) {
|
|
107
107
|
}
|
108
108
|
function calculateOffset(index) {
|
109
109
|
index = clamp(index, 0, items.value.length - 1);
|
110
|
-
|
110
|
+
const whole = Math.floor(index);
|
111
|
+
const fraction = index % 1;
|
112
|
+
const next = whole + 1;
|
113
|
+
const wholeOffset = offsets[whole] || 0;
|
114
|
+
const nextOffset = offsets[next] || wholeOffset;
|
115
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
111
116
|
}
|
112
117
|
function calculateIndex(scrollTop) {
|
113
118
|
return binaryClosest(offsets, scrollTop);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"virtual.js","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","getPropertyFromItem","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","itemKey","Array","Function","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","scrollTimeout","handleScroll","scrollTime","scrollDeltaT","sign","clearTimeout","setTimeout","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","_index","raw","key","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, getPropertyFromItem, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { SelectItemKey } from '@/util'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight: number | string | null | undefined\n itemKey: SelectItemKey\n height: number | string | undefined\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n itemKey: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n let scrollTimeout = -1\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n window.clearTimeout(scrollTimeout)\n scrollTimeout = window.setTimeout(handleScrollend, 500)\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n window.clearTimeout(scrollTimeout)\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => {\n const _index = index + first.value\n return {\n raw: item,\n index: _index,\n key: getPropertyFromItem(item, props.itemKey, _index),\n }\n })\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: 1 })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"virtual.js","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","getPropertyFromItem","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","itemKey","Array","Function","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","whole","floor","fraction","next","wholeOffset","nextOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","scrollTimeout","handleScroll","scrollTime","scrollDeltaT","sign","clearTimeout","setTimeout","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","_index","raw","key","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, getPropertyFromItem, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { SelectItemKey } from '@/util'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight: number | string | null | undefined\n itemKey: SelectItemKey\n height: number | string | undefined\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n itemKey: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n const whole = Math.floor(index)\n const fraction = index % 1\n const next = whole + 1\n const wholeOffset = offsets[whole] || 0\n const nextOffset = offsets[next] || wholeOffset\n return wholeOffset + (nextOffset - wholeOffset) * fraction\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n let scrollTimeout = -1\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n window.clearTimeout(scrollTimeout)\n scrollTimeout = window.setTimeout(handleScrollend, 500)\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n window.clearTimeout(scrollTimeout)\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => {\n const _index = index + first.value\n return {\n raw: item,\n index: _index,\n key: getPropertyFromItem(item, props.itemKey, _index),\n }\n })\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: 1 })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.8.
|
19
|
+
export const version = "3.8.6-dev.2025-05-21";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.js";
|
package/lib/entry-bundler.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entry-bundler.js","names":["blueprints","components","directives","createVuetify","_createVuetify","options","arguments","length","undefined","version"],"sources":["../src/entry-bundler.ts"],"sourcesContent":["/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as blueprints from './blueprints'\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"mappings":"AAAA;;AAEA;AACA;;AAEA;AAAA,OACO,KAAKA,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,SACbC,aAAa,IAAIC,cAAc,0BAExC;AAGA,OAAO,MAAMD,aAAa,GAAG,SAAAA,CAAA,EAAkC;EAAA,IAAjCE,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxD,OAAOF,cAAc,CAAC;IAAEH,UAAU;IAAEC,UAAU;IAAE,GAAGG;EAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,MAAMI,OAAO,
|
1
|
+
{"version":3,"file":"entry-bundler.js","names":["blueprints","components","directives","createVuetify","_createVuetify","options","arguments","length","undefined","version"],"sources":["../src/entry-bundler.ts"],"sourcesContent":["/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as blueprints from './blueprints'\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"mappings":"AAAA;;AAEA;AACA;;AAEA;AAAA,OACO,KAAKA,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,OACf,KAAKC,UAAU;AAAA,SACbC,aAAa,IAAIC,cAAc,0BAExC;AAGA,OAAO,MAAMD,aAAa,GAAG,SAAAA,CAAA,EAAkC;EAAA,IAAjCE,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACxD,OAAOF,cAAc,CAAC;IAAEH,UAAU;IAAEC,UAAU;IAAE,GAAGG;EAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,MAAMI,OAAO,yBAAsB;AAC1CN,aAAa,CAACM,OAAO,GAAGA,OAAO;AAE/B,SACET,UAAU,EACVC,UAAU,EACVC,UAAU;AACX","ignoreList":[]}
|
package/lib/framework.d.ts
CHANGED
@@ -147,11 +147,12 @@ type DeepPartial<T> = T extends object ? {
|
|
147
147
|
} : T;
|
148
148
|
type ThemeOptions = false | {
|
149
149
|
cspNonce?: string;
|
150
|
-
defaultTheme?: string;
|
150
|
+
defaultTheme?: 'light' | 'dark' | 'system' | string;
|
151
151
|
variations?: false | VariationsOptions;
|
152
152
|
themes?: Record<string, ThemeDefinition>;
|
153
153
|
stylesheetId?: string;
|
154
154
|
scope?: string;
|
155
|
+
unimportant?: boolean;
|
155
156
|
};
|
156
157
|
type ThemeDefinition = DeepPartial<InternalThemeDefinition>;
|
157
158
|
interface VariationsOptions {
|
@@ -188,11 +189,15 @@ interface OnColors {
|
|
188
189
|
'on-info': string;
|
189
190
|
}
|
190
191
|
interface ThemeInstance {
|
192
|
+
change: (themeName: string) => void;
|
193
|
+
cycle: (themeArray?: string[]) => void;
|
194
|
+
toggle: (themeArray?: [string, string]) => void;
|
191
195
|
readonly isDisabled: boolean;
|
192
196
|
readonly themes: Ref<Record<string, InternalThemeDefinition>>;
|
193
197
|
readonly name: Readonly<Ref<string>>;
|
194
198
|
readonly current: DeepReadonly<Ref<InternalThemeDefinition>>;
|
195
199
|
readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>;
|
200
|
+
readonly prefix: string;
|
196
201
|
readonly themeClasses: Readonly<Ref<string | undefined>>;
|
197
202
|
readonly styles: Readonly<Ref<string>>;
|
198
203
|
readonly global: {
|
@@ -2539,47 +2544,34 @@ declare module 'vue' {
|
|
2539
2544
|
$children?: VNodeChild
|
2540
2545
|
}
|
2541
2546
|
export interface GlobalComponents {
|
2542
|
-
|
2547
|
+
VApp: typeof import('vuetify/components')['VApp']
|
2543
2548
|
VAlert: typeof import('vuetify/components')['VAlert']
|
2544
2549
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
2545
|
-
|
2546
|
-
|
2547
|
-
VBannerText: typeof import('vuetify/components')['VBannerText']
|
2550
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
2551
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
2548
2552
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
2549
2553
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
2550
2554
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2555
|
+
VBanner: typeof import('vuetify/components')['VBanner']
|
2556
|
+
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
2557
|
+
VBannerText: typeof import('vuetify/components')['VBannerText']
|
2558
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
2559
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
2560
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
2554
2561
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
2555
2562
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
2556
2563
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
2557
|
-
|
2558
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
2564
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
2559
2565
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
2566
|
+
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
2560
2567
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
2561
2568
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
2562
|
-
|
2563
|
-
VCardActions: typeof import('vuetify/components')['VCardActions']
|
2564
|
-
VCardItem: typeof import('vuetify/components')['VCardItem']
|
2565
|
-
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
2566
|
-
VCardText: typeof import('vuetify/components')['VCardText']
|
2567
|
-
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
2568
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
2569
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
2569
2570
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
2570
2571
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
2571
|
-
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
2572
|
-
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
2573
|
-
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
2574
2572
|
VCode: typeof import('vuetify/components')['VCode']
|
2573
|
+
VChip: typeof import('vuetify/components')['VChip']
|
2575
2574
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
2576
|
-
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
2577
|
-
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
2578
|
-
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
2579
|
-
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
2580
|
-
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
2581
|
-
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
2582
|
-
VCounter: typeof import('vuetify/components')['VCounter']
|
2583
2575
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
2584
2576
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
2585
2577
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -2587,29 +2579,44 @@ declare module 'vue' {
|
|
2587
2579
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
2588
2580
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
2589
2581
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
2582
|
+
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
2583
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
2590
2584
|
VDivider: typeof import('vuetify/components')['VDivider']
|
2585
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
2586
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
2591
2587
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
2592
2588
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
2593
2589
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
2594
2590
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
2595
|
-
|
2591
|
+
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
2592
|
+
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
2593
|
+
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
2594
|
+
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
2595
|
+
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
2596
|
+
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
2596
2597
|
VField: typeof import('vuetify/components')['VField']
|
2597
2598
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
2598
|
-
VFab: typeof import('vuetify/components')['VFab']
|
2599
2599
|
VFileInput: typeof import('vuetify/components')['VFileInput']
|
2600
|
+
VFab: typeof import('vuetify/components')['VFab']
|
2601
|
+
VCard: typeof import('vuetify/components')['VCard']
|
2602
|
+
VCardActions: typeof import('vuetify/components')['VCardActions']
|
2603
|
+
VCardItem: typeof import('vuetify/components')['VCardItem']
|
2604
|
+
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
2605
|
+
VCardText: typeof import('vuetify/components')['VCardText']
|
2606
|
+
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
2607
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
2608
|
+
VImg: typeof import('vuetify/components')['VImg']
|
2600
2609
|
VIcon: typeof import('vuetify/components')['VIcon']
|
2601
2610
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
2602
2611
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
2603
2612
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
2604
2613
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
2605
|
-
|
2606
|
-
VImg: typeof import('vuetify/components')['VImg']
|
2614
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
2607
2615
|
VInput: typeof import('vuetify/components')['VInput']
|
2608
|
-
VMain: typeof import('vuetify/components')['VMain']
|
2609
2616
|
VKbd: typeof import('vuetify/components')['VKbd']
|
2610
2617
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
2611
2618
|
VItem: typeof import('vuetify/components')['VItem']
|
2612
|
-
|
2619
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
2613
2620
|
VList: typeof import('vuetify/components')['VList']
|
2614
2621
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
2615
2622
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -2619,51 +2626,54 @@ declare module 'vue' {
|
|
2619
2626
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
2620
2627
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
2621
2628
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
2622
|
-
|
2623
|
-
VMenu: typeof import('vuetify/components')['VMenu']
|
2624
|
-
VNumberInput: typeof import('vuetify/components')['VNumberInput']
|
2629
|
+
VMain: typeof import('vuetify/components')['VMain']
|
2625
2630
|
VMessages: typeof import('vuetify/components')['VMessages']
|
2626
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
2627
2631
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
2628
|
-
|
2632
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
2629
2633
|
VPagination: typeof import('vuetify/components')['VPagination']
|
2634
|
+
VMenu: typeof import('vuetify/components')['VMenu']
|
2635
|
+
VOverlay: typeof import('vuetify/components')['VOverlay']
|
2636
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2637
|
+
VNumberInput: typeof import('vuetify/components')['VNumberInput']
|
2630
2638
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
2639
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
2631
2640
|
VRating: typeof import('vuetify/components')['VRating']
|
2632
|
-
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
2633
2641
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
2634
|
-
|
2642
|
+
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
2635
2643
|
VSelect: typeof import('vuetify/components')['VSelect']
|
2636
2644
|
VSheet: typeof import('vuetify/components')['VSheet']
|
2645
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
2646
|
+
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
2637
2647
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
2638
2648
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
2649
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
2639
2650
|
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2640
|
-
|
2641
|
-
|
2651
|
+
VTab: typeof import('vuetify/components')['VTab']
|
2652
|
+
VTabs: typeof import('vuetify/components')['VTabs']
|
2653
|
+
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
2654
|
+
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
2642
2655
|
VStepper: typeof import('vuetify/components')['VStepper']
|
2643
2656
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
2644
2657
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
2645
2658
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
2646
2659
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
2647
2660
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
2648
|
-
|
2649
|
-
VSwitch: typeof import('vuetify/components')['VSwitch']
|
2661
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
2650
2662
|
VTextField: typeof import('vuetify/components')['VTextField']
|
2651
|
-
|
2652
|
-
|
2653
|
-
|
2654
|
-
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
2663
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
2664
|
+
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
2665
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
2655
2666
|
VTable: typeof import('vuetify/components')['VTable']
|
2656
2667
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
2657
2668
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
2658
2669
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
2659
|
-
|
2660
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
2670
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
2661
2671
|
VWindow: typeof import('vuetify/components')['VWindow']
|
2662
2672
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
2663
|
-
VChip: typeof import('vuetify/components')['VChip']
|
2664
2673
|
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
2665
2674
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
2666
2675
|
VForm: typeof import('vuetify/components')['VForm']
|
2676
|
+
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
2667
2677
|
VContainer: typeof import('vuetify/components')['VContainer']
|
2668
2678
|
VCol: typeof import('vuetify/components')['VCol']
|
2669
2679
|
VRow: typeof import('vuetify/components')['VRow']
|
@@ -2672,16 +2682,17 @@ declare module 'vue' {
|
|
2672
2682
|
VLayout: typeof import('vuetify/components')['VLayout']
|
2673
2683
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
2674
2684
|
VLazy: typeof import('vuetify/components')['VLazy']
|
2675
|
-
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2676
2685
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
2677
|
-
VRadio: typeof import('vuetify/components')['VRadio']
|
2678
2686
|
VParallax: typeof import('vuetify/components')['VParallax']
|
2687
|
+
VRadio: typeof import('vuetify/components')['VRadio']
|
2679
2688
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
2680
|
-
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
|
2681
2689
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
2690
|
+
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
|
2682
2691
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
2683
2692
|
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
2693
|
+
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
2684
2694
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
2695
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
2685
2696
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
2686
2697
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
2687
2698
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
@@ -2698,13 +2709,7 @@ declare module 'vue' {
|
|
2698
2709
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
2699
2710
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
2700
2711
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
2701
|
-
|
2702
|
-
VValidation: typeof import('vuetify/components')['VValidation']
|
2703
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2704
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
2705
|
-
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
2706
|
-
VTimeline: typeof import('vuetify/components')['VTimeline']
|
2707
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
2712
|
+
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2708
2713
|
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
|
2709
2714
|
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
2710
2715
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
@@ -2713,20 +2718,20 @@ declare module 'vue' {
|
|
2713
2718
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
2714
2719
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
2715
2720
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
2716
|
-
|
2721
|
+
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
2722
|
+
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
2723
|
+
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2717
2724
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
2718
2725
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
2719
2726
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
2720
|
-
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2721
|
-
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
2722
|
-
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
2723
|
-
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
2724
2727
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
2725
2728
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
2726
2729
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
2727
|
-
|
2728
|
-
|
2729
|
-
|
2730
|
+
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
2731
|
+
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
2732
|
+
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
2730
2733
|
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
2734
|
+
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
2735
|
+
VColorInput: typeof import('vuetify/labs/components')['VColorInput']
|
2731
2736
|
}
|
2732
2737
|
}
|
package/lib/framework.js
CHANGED