@vuetify/nightly 3.7.5-master.2024-12-03 → 3.7.5-master.2024-12-12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3129 -2833
- package/dist/json/importMap-labs.json +22 -14
- package/dist/json/importMap.json +152 -152
- package/dist/json/tags.json +84 -0
- package/dist/json/web-types.json +6118 -5177
- package/dist/vuetify-labs.css +4145 -4074
- package/dist/vuetify-labs.d.ts +1314 -1
- package/dist/vuetify-labs.esm.js +331 -6
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +331 -6
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +3508 -3510
- package/dist/vuetify.d.ts +50 -48
- package/dist/vuetify.esm.js +16 -6
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +16 -6
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +14 -13
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.css +1 -3
- package/lib/components/VSelectionControl/VSelectionControl.sass +1 -5
- package/lib/composables/virtual.mjs +4 -0
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/mdi.mjs +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +50 -48
- package/lib/labs/VFileUpload/VFileUpload.css +74 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs +241 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -0
- package/lib/labs/VFileUpload/VFileUpload.sass +75 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs +95 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs.map +1 -0
- package/lib/labs/VFileUpload/_variables.scss +12 -0
- package/lib/labs/VFileUpload/index.d.mts +1365 -0
- package/lib/labs/VFileUpload/index.mjs +3 -0
- package/lib/labs/VFileUpload/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +1348 -37
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +5 -0
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +5 -0
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +5 -0
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +5 -0
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +5 -0
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +5 -0
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +5 -0
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +5 -0
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +5 -0
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +5 -0
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +5 -0
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +5 -0
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +5 -0
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +5 -0
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -0
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +5 -0
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +5 -0
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +5 -0
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +5 -0
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +5 -0
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +215 -0
- package/lib/locale/it.mjs +5 -0
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +5 -0
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +5 -0
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +5 -0
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +5 -0
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +5 -0
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +5 -0
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +5 -0
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +5 -0
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +5 -0
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +5 -0
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +5 -0
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +5 -0
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +5 -0
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +5 -0
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +5 -0
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +5 -0
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +5 -0
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +5 -0
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +5 -0
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +5 -0
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +5 -0
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +5 -0
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +1 -1
@@ -170,7 +170,7 @@ export const VRangeSlider = genericComponent()({
|
|
170
170
|
// the thumbs are on top of each other
|
171
171
|
// and they are both at minimum value
|
172
172
|
// but only if focused from outside.
|
173
|
-
if (model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {
|
173
|
+
if (max.value !== min.value && model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {
|
174
174
|
startThumbRef.value?.$el.blur();
|
175
175
|
stopThumbRef.value?.$el.focus();
|
176
176
|
}
|
@@ -199,7 +199,7 @@ export const VRangeSlider = genericComponent()({
|
|
199
199
|
// the thumbs are on top of each other
|
200
200
|
// and they are both at maximum value
|
201
201
|
// but only if focused from outside.
|
202
|
-
if (model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {
|
202
|
+
if (max.value !== min.value && model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {
|
203
203
|
stopThumbRef.value?.$el.blur();
|
204
204
|
startThumbRef.value?.$el.focus();
|
205
205
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VRangeSlider.mjs","names":["makeVInputProps","VInput","VLabel","getOffset","makeSliderProps","useSlider","useSteps","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVRangeSliderProps","strict","Boolean","modelValue","type","Array","default","VRangeSlider","name","props","emits","value","end","start","setup","_ref","slots","emit","startThumbRef","stopThumbRef","inputRef","rtlClasses","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","steps","model","undefined","arr","length","map","roundValue","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","trackContainerRef","readonly","onSliderStart","onSliderEnd","_ref2","newValue","onSliderMove","_ref3","stop","focus","isFocused","blur","trackStart","trackStop","inputProps","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","_ref4","id","messagesId","v","relatedTarget","onBlur","ripple"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<readonly (string | number)[]>,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VRangeSlider.mjs","names":["makeVInputProps","VInput","VLabel","getOffset","makeSliderProps","useSlider","useSteps","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVRangeSliderProps","strict","Boolean","modelValue","type","Array","default","VRangeSlider","name","props","emits","value","end","start","setup","_ref","slots","emit","startThumbRef","stopThumbRef","inputRef","rtlClasses","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","steps","model","undefined","arr","length","map","roundValue","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","trackContainerRef","readonly","onSliderStart","onSliderEnd","_ref2","newValue","onSliderMove","_ref3","stop","focus","isFocused","blur","trackStart","trackStop","inputProps","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","_ref4","id","messagesId","v","relatedTarget","onBlur","ripple"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<readonly (string | number)[]>,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n max.value !== min.value &&\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n max.value !== min.value &&\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe,EAAEC,MAAM;AAAA,SACvBC,MAAM;AAAA,SACNC,SAAS,EAAEC,eAAe,EAAEC,SAAS,EAAEC,QAAQ;AAAA,SAC/CC,YAAY;AAAA,SACZC,YAAY,uCAErB;AAAA,SACSC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,MAAM;AAAA,SACNC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAC1BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,qBAAqB,GAAGF,YAAY,CAAC;EAChD,GAAGP,cAAc,CAAC,CAAC;EACnB,GAAGT,eAAe,CAAC,CAAC;EACpB,GAAGI,eAAe,CAAC,CAAC;EAEpBe,MAAM,EAAEC,OAAO;EACfC,UAAU,EAAE;IACVC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAO,CAAC,CAAC,EAAE,CAAC;EACvB;AACF,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAMC,YAAY,GAAGV,gBAAgB,CAAe,CAAC,CAAC;EAC3DW,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAET,qBAAqB,CAAC,CAAC;EAE9BU,KAAK,EAAE;IACL,gBAAgB,EAAGC,KAAc,IAAK,IAAI;IAC1C,mBAAmB,EAAGA,KAAuB,IAAK,IAAI;IACtDC,GAAG,EAAGD,KAAuB,IAAK,IAAI;IACtCE,KAAK,EAAGF,KAAuB,IAAK;EACtC,CAAC;EAEDG,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAMG,aAAa,GAAGtB,GAAG,CAAe,CAAC;IACzC,MAAMuB,YAAY,GAAGvB,GAAG,CAAe,CAAC;IACxC,MAAMwB,QAAQ,GAAGxB,GAAG,CAAS,CAAC;IAC9B,MAAM;MAAEyB;IAAW,CAAC,GAAG5B,MAAM,CAAC,CAAC;IAE/B,SAAS6B,cAAcA,CAAEC,CAA0B,EAAE;MACnD,IAAI,CAACL,aAAa,CAACP,KAAK,IAAI,CAACQ,YAAY,CAACR,KAAK,EAAE;MAEjD,MAAMa,WAAW,GAAGvC,SAAS,CAACsC,CAAC,EAAEL,aAAa,CAACP,KAAK,CAACc,GAAG,EAAEhB,KAAK,CAACiB,SAAS,CAAC;MAC1E,MAAMC,UAAU,GAAG1C,SAAS,CAACsC,CAAC,EAAEJ,YAAY,CAACR,KAAK,CAACc,GAAG,EAAEhB,KAAK,CAACiB,SAAS,CAAC;MAExE,MAAME,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACN,WAAW,CAAC;MAC/B,MAAMO,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACH,UAAU,CAAC;MAE9B,OAAQC,CAAC,GAAGG,CAAC,IAAKH,CAAC,KAAKG,CAAC,IAAIP,WAAW,GAAG,CAAE,GAAIN,aAAa,CAACP,KAAK,CAACc,GAAG,GAAGN,YAAY,CAACR,KAAK,CAACc,GAAG;IACnG;IAEA,MAAMO,KAAK,GAAG5C,QAAQ,CAACqB,KAAK,CAAC;IAE7B,MAAMwB,KAAK,GAAGvC,eAAe,CAC3Be,KAAK,EACL,YAAY,EACZyB,SAAS,EACTC,GAAG,IAAI;MACL,IAAI,CAACA,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;MAE/B,OAAOD,GAAG,CAACE,GAAG,CAAC1B,KAAK,IAAIqB,KAAK,CAACM,UAAU,CAAC3B,KAAK,CAAC,CAAC;IAClD,CACF,CAAiF;IAEjF,MAAM;MACJ4B,cAAc;MACdC,SAAS;MACTC,GAAG;MACHC,GAAG;MACHC,YAAY;MACZC,iBAAiB;MACjBC,kBAAkB;MAClBC,QAAQ;MACRC,iBAAiB;MACjBC;IACF,CAAC,GAAG7D,SAAS,CAAC;MACZsB,KAAK;MACLuB,KAAK;MACLiB,aAAa,EAAEA,CAAA,KAAM;QACnBhC,IAAI,CAAC,OAAO,EAAEgB,KAAK,CAACtB,KAAK,CAAC;MAC5B,CAAC;MACDuC,WAAW,EAAEC,KAAA,IAAe;QAAA,IAAd;UAAExC;QAAM,CAAC,GAAAwC,KAAA;QACrB,MAAMC,QAA0B,GAAGb,cAAc,CAAC5B,KAAK,KAAKO,aAAa,CAACP,KAAK,EAAEc,GAAG,GAChF,CAACd,KAAK,EAAEsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,CAAC,GACvB,CAACsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC;QAE3B,IAAI,CAACF,KAAK,CAACR,MAAM,IAAImD,QAAQ,CAAC,CAAC,CAAC,GAAGA,QAAQ,CAAC,CAAC,CAAC,EAAE;UAC9CnB,KAAK,CAACtB,KAAK,GAAGyC,QAAQ;QACxB;QAEAnC,IAAI,CAAC,KAAK,EAAEgB,KAAK,CAACtB,KAAK,CAAC;MAC1B,CAAC;MACD0C,YAAY,EAAEC,KAAA,IAAe;QAAA,IAAd;UAAE3C;QAAM,CAAC,GAAA2C,KAAA;QACtB,MAAM,CAACzC,KAAK,EAAE0C,IAAI,CAAC,GAAGtB,KAAK,CAACtB,KAAK;QAEjC,IAAI,CAACF,KAAK,CAACR,MAAM,IAAIY,KAAK,KAAK0C,IAAI,IAAI1C,KAAK,KAAK6B,GAAG,CAAC/B,KAAK,EAAE;UAC1D4B,cAAc,CAAC5B,KAAK,GAAGA,KAAK,GAAGE,KAAK,GAAGM,YAAY,CAACR,KAAK,EAAEc,GAAG,GAAGP,aAAa,CAACP,KAAK,EAAEc,GAAG;UACzFc,cAAc,CAAC5B,KAAK,EAAE6C,KAAK,CAAC,CAAC;QAC/B;QAEA,IAAIjB,cAAc,CAAC5B,KAAK,KAAKO,aAAa,CAACP,KAAK,EAAEc,GAAG,EAAE;UACrDQ,KAAK,CAACtB,KAAK,GAAG,CAACkB,IAAI,CAACa,GAAG,CAAC/B,KAAK,EAAE4C,IAAI,CAAC,EAAEA,IAAI,CAAC;QAC7C,CAAC,MAAM;UACLtB,KAAK,CAACtB,KAAK,GAAG,CAACE,KAAK,EAAEgB,IAAI,CAACY,GAAG,CAAC5B,KAAK,EAAEF,KAAK,CAAC,CAAC;QAC/C;MACF,CAAC;MACDW;IACF,CAAC,CAAC;IAEF,MAAM;MAAEmC,SAAS;MAAED,KAAK;MAAEE;IAAK,CAAC,GAAGlE,QAAQ,CAACiB,KAAK,CAAC;IAClD,MAAMkD,UAAU,GAAGhE,QAAQ,CAAC,MAAMmD,QAAQ,CAACb,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAMiD,SAAS,GAAGjE,QAAQ,CAAC,MAAMmD,QAAQ,CAACb,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1DZ,SAAS,CAAC,MAAM;MACd,MAAM8D,UAAU,GAAG9E,MAAM,CAAC+E,WAAW,CAACrD,KAAK,CAAC;MAC5C,MAAMsD,UAAU,GAAG,CAAC,EAAEtD,KAAK,CAACuD,KAAK,IAAIhD,KAAK,CAACgD,KAAK,IAAIhD,KAAK,CAACiD,OAAO,CAAC;MAElE,OAAAC,YAAA,CAAAnF,MAAA,EAAAoF,WAAA;QAAA,SAEW,CACL,UAAU,EACV,gBAAgB,EAChB;UACE,sBAAsB,EAAE,CAAC,CAACnD,KAAK,CAAC,YAAY,CAAC,IAAIwB,SAAS,CAAC7B,KAAK;UAChE,mBAAmB,EAAE8C,SAAS,CAAC9C,KAAK;UACpC,mBAAmB,EAAEgC,YAAY,CAAChC,KAAK;UACvC,oBAAoB,EAAEF,KAAK,CAAC2D;QAC9B,CAAC,EACD/C,UAAU,CAACV,KAAK,EAChBF,KAAK,CAAC4D,KAAK,CACZ;QAAA,SACO5D,KAAK,CAAC6D,KAAK;QAAA,OACblD;MAAQ,GACTyC,UAAU;QAAA,WACLJ,SAAS,CAAC9C;MAAK;QAGvB,GAAGK,KAAK;QACRiD,OAAO,EAAEF,UAAU,GAAGQ,SAAS,IAAAL,YAAA,CAAAM,SAAA,SAEzBxD,KAAK,CAACgD,KAAK,GAAGO,SAAS,CAAC,KACxB9D,KAAK,CAACuD,KAAK,GAAAE,YAAA,CAAAlF,MAAA;UAAA;UAAA,QAIEyB,KAAK,CAACuD;QAAK,WAElB9B,SAAS,CAChB,EAEClB,KAAK,CAACiD,OAAO,GAAGM,SAAS,CAAC,EAE/B,GAAGrC,SAAS;QACb5B,OAAO,EAAEmE,KAAA;UAAA,IAAC;YAAEC,EAAE;YAAEC;UAAW,CAAC,GAAAF,KAAA;UAAA,OAAAP,YAAA;YAAA;YAAA,eAGV,CAAClB,QAAQ,CAACrC,KAAK,GAAGiC,iBAAiB,GAAGV,SAAS;YAAA,uBACvC,CAACc,QAAQ,CAACrC,KAAK,GAAGkC,kBAAkB,GAAGX;UAAS,IAAAgC,YAAA;YAAA,MAG/D,GAAGQ,EAAE,CAAC/D,KAAK,QAAQ;YAAA,QACjBF,KAAK,CAACD,IAAI,IAAIkE,EAAE,CAAC/D,KAAK;YAAA,YAClB,CAAC,CAACF,KAAK,CAAC2D,QAAQ;YAAA,YAChB,CAAC,CAAC3D,KAAK,CAACuC,QAAQ;YAAA;YAAA,SAEnBf,KAAK,CAACtB,KAAK,CAAC,CAAC;UAAC,UAAAuD,YAAA;YAAA,MAIjB,GAAGQ,EAAE,CAAC/D,KAAK,OAAO;YAAA,QAChBF,KAAK,CAACD,IAAI,IAAIkE,EAAE,CAAC/D,KAAK;YAAA,YAClB,CAAC,CAACF,KAAK,CAAC2D,QAAQ;YAAA,YAChB,CAAC,CAAC3D,KAAK,CAACuC,QAAQ;YAAA;YAAA,SAEnBf,KAAK,CAACtB,KAAK,CAAC,CAAC;UAAC,UAAAuD,YAAA,CAAA5E,YAAA;YAAA,OAIhByD,iBAAiB;YAAA,SACfY,UAAU,CAAChD,KAAK;YAAA,QACjBiD,SAAS,CAACjD;UAAK;YAEnB,YAAY,EAAEK,KAAK,CAAC,YAAY;UAAC,IAAAkD,YAAA,CAAA7E,YAAA;YAAA,OAI9B6B,aAAa;YAAA,oBACAyD,UAAU,CAAChE,KAAK;YAAA,WACzB8C,SAAS,IAAIlB,cAAc,CAAC5B,KAAK,KAAKO,aAAa,CAACP,KAAK,EAAEc,GAAG;YAAA,cAC3DQ,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC;YAAA,uBACLiE,CAAC,IAAK3C,KAAK,CAACtB,KAAK,GAAG,CAACiE,CAAC,EAAE3C,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,CAAE;YAAA,WACnDY,CAAa,IAAK;cAC3BiC,KAAK,CAAC,CAAC;cACPjB,cAAc,CAAC5B,KAAK,GAAGO,aAAa,CAACP,KAAK,EAAEc,GAAG;;cAE/C;cACA;cACA;cACA;cACA,IACEgB,GAAG,CAAC9B,KAAK,KAAK+B,GAAG,CAAC/B,KAAK,IACvBsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,KAAKsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,IACjCsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,KAAK+B,GAAG,CAAC/B,KAAK,IAC5BY,CAAC,CAACsD,aAAa,KAAK1D,YAAY,CAACR,KAAK,EAAEc,GAAG,EAC3C;gBACAP,aAAa,CAACP,KAAK,EAAEc,GAAG,CAACiC,IAAI,CAAC,CAAC;gBAC/BvC,YAAY,CAACR,KAAK,EAAEc,GAAG,CAAC+B,KAAK,CAAC,CAAC;cACjC;YACF,CAAC;YAAA,UACQsB,CAAA,KAAM;cACbpB,IAAI,CAAC,CAAC;cACNnB,cAAc,CAAC5B,KAAK,GAAGuB,SAAS;YAClC,CAAC;YAAA,OACKQ,GAAG,CAAC/B,KAAK;YAAA,OACTsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC;YAAA,YACTgD,UAAU,CAAChD,KAAK;YAAA,UAClBF,KAAK,CAACsE;UAAM;YAElB,aAAa,EAAE/D,KAAK,CAAC,aAAa;UAAC,IAAAkD,YAAA,CAAA7E,YAAA;YAAA,OAIhC8B,YAAY;YAAA,oBACCwD,UAAU,CAAChE,KAAK;YAAA,WACzB8C,SAAS,IAAIlB,cAAc,CAAC5B,KAAK,KAAKQ,YAAY,CAACR,KAAK,EAAEc,GAAG;YAAA,cAC1DQ,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC;YAAA,uBACLiE,CAAC,IAAK3C,KAAK,CAACtB,KAAK,GAAG,CAACsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,EAAEiE,CAAC,CAAE;YAAA,WACnDrD,CAAa,IAAK;cAC3BiC,KAAK,CAAC,CAAC;cACPjB,cAAc,CAAC5B,KAAK,GAAGQ,YAAY,CAACR,KAAK,EAAEc,GAAG;;cAE9C;cACA;cACA;cACA;cACA,IACEgB,GAAG,CAAC9B,KAAK,KAAK+B,GAAG,CAAC/B,KAAK,IACvBsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,KAAKsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,IACjCsB,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC,KAAK8B,GAAG,CAAC9B,KAAK,IAC5BY,CAAC,CAACsD,aAAa,KAAK3D,aAAa,CAACP,KAAK,EAAEc,GAAG,EAC5C;gBACAN,YAAY,CAACR,KAAK,EAAEc,GAAG,CAACiC,IAAI,CAAC,CAAC;gBAC9BxC,aAAa,CAACP,KAAK,EAAEc,GAAG,CAAC+B,KAAK,CAAC,CAAC;cAClC;YACF,CAAC;YAAA,UACQsB,CAAA,KAAM;cACbpB,IAAI,CAAC,CAAC;cACNnB,cAAc,CAAC5B,KAAK,GAAGuB,SAAS;YAClC,CAAC;YAAA,OACKD,KAAK,CAACtB,KAAK,CAAC,CAAC,CAAC;YAAA,OACd8B,GAAG,CAAC9B,KAAK;YAAA,YACJiD,SAAS,CAACjD,KAAK;YAAA,UACjBF,KAAK,CAACsE;UAAM;YAElB,aAAa,EAAE/D,KAAK,CAAC,aAAa;UAAC;QAAA;MAG3C;IAIT,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
@@ -11,14 +11,12 @@
|
|
11
11
|
white-space: normal;
|
12
12
|
word-break: break-word;
|
13
13
|
height: 100%;
|
14
|
+
opacity: 1;
|
14
15
|
}
|
15
16
|
.v-selection-control--disabled {
|
16
17
|
opacity: var(--v-disabled-opacity);
|
17
18
|
pointer-events: none;
|
18
19
|
}
|
19
|
-
.v-selection-control--error .v-label, .v-selection-control--disabled .v-label {
|
20
|
-
opacity: 1;
|
21
|
-
}
|
22
20
|
.v-selection-control--error:not(.v-selection-control--disabled) .v-label {
|
23
21
|
color: rgb(var(--v-theme-error));
|
24
22
|
}
|
@@ -18,16 +18,12 @@
|
|
18
18
|
white-space: normal
|
19
19
|
word-break: break-word
|
20
20
|
height: 100%
|
21
|
+
opacity: 1
|
21
22
|
|
22
23
|
&--disabled
|
23
24
|
opacity: var(--v-disabled-opacity)
|
24
25
|
pointer-events: none
|
25
26
|
|
26
|
-
&--error,
|
27
|
-
&--disabled
|
28
|
-
.v-label
|
29
|
-
opacity: 1
|
30
|
-
|
31
27
|
&--error:not(.v-selection-control--disabled)
|
32
28
|
.v-label
|
33
29
|
color: rgb(var(--v-theme-error))
|
@@ -122,6 +122,7 @@ export function useVirtual(props, items) {
|
|
122
122
|
}
|
123
123
|
}
|
124
124
|
});
|
125
|
+
let scrollTimeout = -1;
|
125
126
|
function handleScroll() {
|
126
127
|
if (!containerRef.value || !markerRef.value) return;
|
127
128
|
const scrollTop = containerRef.value.scrollTop;
|
@@ -138,12 +139,15 @@ export function useVirtual(props, items) {
|
|
138
139
|
}
|
139
140
|
lastScrollTop = scrollTop;
|
140
141
|
lastScrollTime = scrollTime;
|
142
|
+
window.clearTimeout(scrollTimeout);
|
143
|
+
scrollTimeout = window.setTimeout(handleScrollend, 500);
|
141
144
|
calculateVisibleItems();
|
142
145
|
}
|
143
146
|
function handleScrollend() {
|
144
147
|
if (!containerRef.value || !markerRef.value) return;
|
145
148
|
scrollVelocity = 0;
|
146
149
|
lastScrollTime = 0;
|
150
|
+
window.clearTimeout(scrollTimeout);
|
147
151
|
calculateVisibleItems();
|
148
152
|
}
|
149
153
|
let raf = -1;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"virtual.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","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","handleScroll","scrollTime","scrollDeltaT","sign","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","raw","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, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <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 function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<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.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","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","raw","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, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <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 raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<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.mjs
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.7.5-master.2024-12-
|
19
|
+
export const version = "3.7.5-master.2024-12-12";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/iconsets/mdi.mjs
CHANGED
@@ -45,7 +45,8 @@ const aliases = {
|
|
45
45
|
calendar: 'mdi-calendar',
|
46
46
|
treeviewCollapse: 'mdi-menu-down',
|
47
47
|
treeviewExpand: 'mdi-menu-right',
|
48
|
-
eyeDropper: 'mdi-eyedropper'
|
48
|
+
eyeDropper: 'mdi-eyedropper',
|
49
|
+
upload: 'mdi-cloud-upload'
|
49
50
|
};
|
50
51
|
const mdi = {
|
51
52
|
// Not using mergeProps here, functional components merge props by default (?)
|
package/lib/iconsets/mdi.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE;
|
1
|
+
{"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","upload","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n upload: 'mdi-cloud-upload',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE,gBAAgB;EAC5BC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,GAAY,GAAG;EACnB;EACAC,SAAS,EAAGC,KAAU,IAAK5C,CAAC,CAACD,UAAU,EAAE;IAAE,GAAG6C,KAAK;IAAEC,KAAK,EAAE;EAAM,CAAC;AACrE,CAAC;AAED,SAAS5C,OAAO,EAAEyC,GAAG","ignoreList":[]}
|
package/lib/index.d.mts
CHANGED
@@ -488,22 +488,29 @@ declare module 'vue' {
|
|
488
488
|
export interface GlobalComponents {
|
489
489
|
VApp: typeof import('vuetify/components')['VApp']
|
490
490
|
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
491
|
-
VAlert: typeof import('vuetify/components')['VAlert']
|
492
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
493
|
-
VAvatar: typeof import('vuetify/components')['VAvatar']
|
494
491
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
495
492
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
496
493
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
497
|
-
|
494
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
495
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
498
496
|
VBadge: typeof import('vuetify/components')['VBadge']
|
497
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
499
498
|
VBanner: typeof import('vuetify/components')['VBanner']
|
500
499
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
501
500
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
502
|
-
|
501
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
503
502
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
504
503
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
505
504
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
506
505
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
506
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
507
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
508
|
+
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
509
|
+
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
510
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
511
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
512
|
+
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
513
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
507
514
|
VCard: typeof import('vuetify/components')['VCard']
|
508
515
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
509
516
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
@@ -511,21 +518,15 @@ declare module 'vue' {
|
|
511
518
|
VCardText: typeof import('vuetify/components')['VCardText']
|
512
519
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
513
520
|
VChip: typeof import('vuetify/components')['VChip']
|
514
|
-
VCarousel: typeof import('vuetify/components')['VCarousel']
|
515
|
-
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
516
521
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
517
|
-
|
518
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
519
|
-
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
520
|
-
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
521
|
-
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
522
|
-
VCode: typeof import('vuetify/components')['VCode']
|
522
|
+
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
523
523
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
524
524
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
525
525
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
526
526
|
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
527
527
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
528
528
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
529
|
+
VCode: typeof import('vuetify/components')['VCode']
|
529
530
|
VCounter: typeof import('vuetify/components')['VCounter']
|
530
531
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
531
532
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
@@ -534,32 +535,29 @@ declare module 'vue' {
|
|
534
535
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
535
536
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
536
537
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
537
|
-
|
538
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
538
539
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
539
540
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
540
541
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
541
542
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
542
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
543
543
|
VDivider: typeof import('vuetify/components')['VDivider']
|
544
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
544
545
|
VField: typeof import('vuetify/components')['VField']
|
545
546
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
546
547
|
VFab: typeof import('vuetify/components')['VFab']
|
547
548
|
VFooter: typeof import('vuetify/components')['VFooter']
|
548
|
-
|
549
|
+
VImg: typeof import('vuetify/components')['VImg']
|
550
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
551
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
549
552
|
VIcon: typeof import('vuetify/components')['VIcon']
|
550
553
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
551
554
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
552
555
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
553
556
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
554
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
555
|
-
VImg: typeof import('vuetify/components')['VImg']
|
556
|
-
VKbd: typeof import('vuetify/components')['VKbd']
|
557
557
|
VInput: typeof import('vuetify/components')['VInput']
|
558
|
-
VLabel: typeof import('vuetify/components')['VLabel']
|
559
|
-
VMain: typeof import('vuetify/components')['VMain']
|
560
558
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
561
559
|
VItem: typeof import('vuetify/components')['VItem']
|
562
|
-
|
560
|
+
VKbd: typeof import('vuetify/components')['VKbd']
|
563
561
|
VList: typeof import('vuetify/components')['VList']
|
564
562
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
565
563
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -569,70 +567,73 @@ declare module 'vue' {
|
|
569
567
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
570
568
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
571
569
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
570
|
+
VMain: typeof import('vuetify/components')['VMain']
|
571
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
572
572
|
VMessages: typeof import('vuetify/components')['VMessages']
|
573
|
-
VOverlay: typeof import('vuetify/components')['VOverlay']
|
574
573
|
VMenu: typeof import('vuetify/components')['VMenu']
|
575
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
576
574
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
577
|
-
|
578
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
579
|
-
VRating: typeof import('vuetify/components')['VRating']
|
575
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
580
576
|
VPagination: typeof import('vuetify/components')['VPagination']
|
577
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
581
578
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
582
|
-
|
579
|
+
VOverlay: typeof import('vuetify/components')['VOverlay']
|
580
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
583
581
|
VSheet: typeof import('vuetify/components')['VSheet']
|
584
582
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
583
|
+
VRating: typeof import('vuetify/components')['VRating']
|
585
584
|
VSelect: typeof import('vuetify/components')['VSelect']
|
586
|
-
|
585
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
587
586
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
588
587
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
589
588
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
589
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
590
590
|
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
591
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
592
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
591
593
|
VStepper: typeof import('vuetify/components')['VStepper']
|
592
594
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
593
595
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
594
596
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
595
597
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
596
598
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
597
|
-
|
599
|
+
VTable: typeof import('vuetify/components')['VTable']
|
598
600
|
VTextField: typeof import('vuetify/components')['VTextField']
|
599
|
-
|
601
|
+
VToolbar: typeof import('vuetify/components')['VToolbar']
|
602
|
+
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
603
|
+
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
604
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
600
605
|
VTab: typeof import('vuetify/components')['VTab']
|
601
606
|
VTabs: typeof import('vuetify/components')['VTabs']
|
602
607
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
603
608
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
604
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
605
|
-
VTable: typeof import('vuetify/components')['VTable']
|
606
|
-
VTooltip: typeof import('vuetify/components')['VTooltip']
|
607
|
-
VToolbar: typeof import('vuetify/components')['VToolbar']
|
608
|
-
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
609
|
-
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
610
609
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
611
610
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
611
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
612
612
|
VWindow: typeof import('vuetify/components')['VWindow']
|
613
613
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
614
|
-
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
615
614
|
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
615
|
+
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
616
616
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
617
|
+
VForm: typeof import('vuetify/components')['VForm']
|
618
|
+
VHover: typeof import('vuetify/components')['VHover']
|
617
619
|
VContainer: typeof import('vuetify/components')['VContainer']
|
618
620
|
VCol: typeof import('vuetify/components')['VCol']
|
619
621
|
VRow: typeof import('vuetify/components')['VRow']
|
620
622
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
621
|
-
VForm: typeof import('vuetify/components')['VForm']
|
622
623
|
VLazy: typeof import('vuetify/components')['VLazy']
|
623
|
-
VHover: typeof import('vuetify/components')['VHover']
|
624
|
-
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
625
624
|
VLayout: typeof import('vuetify/components')['VLayout']
|
626
625
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
626
|
+
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
627
627
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
628
628
|
VParallax: typeof import('vuetify/components')['VParallax']
|
629
629
|
VRadio: typeof import('vuetify/components')['VRadio']
|
630
|
-
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
631
630
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
632
|
-
|
631
|
+
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
633
632
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
633
|
+
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
634
634
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
635
635
|
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
636
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
636
637
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
637
638
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
638
639
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
@@ -649,7 +650,6 @@ declare module 'vue' {
|
|
649
650
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
650
651
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
651
652
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
652
|
-
VValidation: typeof import('vuetify/components')['VValidation']
|
653
653
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
654
654
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
655
655
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
@@ -658,18 +658,20 @@ declare module 'vue' {
|
|
658
658
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
659
659
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
660
660
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
661
|
+
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
662
|
+
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
663
|
+
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
661
664
|
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
662
665
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
663
666
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
664
667
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
668
|
+
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
|
669
|
+
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
665
670
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
666
671
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
667
672
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
668
|
-
|
669
|
-
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
670
|
-
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
673
|
+
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
671
674
|
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
672
675
|
VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
|
673
|
-
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
674
676
|
}
|
675
677
|
}
|