vuetify 3.10.5 → 3.10.7

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.
Files changed (94) hide show
  1. package/README.md +0 -6
  2. package/dist/json/attributes.json +3488 -3512
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +176 -176
  5. package/dist/json/tags.json +3 -9
  6. package/dist/json/web-types.json +6467 -6520
  7. package/dist/vuetify-labs.cjs +190 -82
  8. package/dist/vuetify-labs.css +4945 -4895
  9. package/dist/vuetify-labs.d.ts +117 -172
  10. package/dist/vuetify-labs.esm.js +190 -82
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +190 -82
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +171 -72
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3926 -3898
  17. package/dist/vuetify.d.ts +117 -137
  18. package/dist/vuetify.esm.js +171 -72
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +171 -72
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +118 -107
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
  26. package/lib/components/VAutocomplete/VAutocomplete.js +15 -12
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VChipGroup/VChipGroup.d.ts +37 -0
  29. package/lib/components/VChipGroup/VChipGroup.js +3 -1
  30. package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
  31. package/lib/components/VCombobox/VCombobox.d.ts +6 -67
  32. package/lib/components/VCombobox/VCombobox.js +29 -30
  33. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  34. package/lib/components/VCounter/VCounter.css +1 -0
  35. package/lib/components/VCounter/VCounter.sass +1 -0
  36. package/lib/components/VDatePicker/VDatePicker.js +1 -1
  37. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  38. package/lib/components/VFileInput/VFileInput.js +3 -2
  39. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  40. package/lib/components/VList/VListItem.css +14 -12
  41. package/lib/components/VList/VListItem.js +4 -2
  42. package/lib/components/VList/VListItem.js.map +1 -1
  43. package/lib/components/VList/VListItem.sass +20 -18
  44. package/lib/components/VMenu/VMenu.js +22 -4
  45. package/lib/components/VMenu/VMenu.js.map +1 -1
  46. package/lib/components/VNumberInput/VNumberInput.css +8 -0
  47. package/lib/components/VNumberInput/VNumberInput.js +5 -2
  48. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  49. package/lib/components/VNumberInput/VNumberInput.sass +10 -4
  50. package/lib/components/VSelect/VSelect.js +2 -1
  51. package/lib/components/VSelect/VSelect.js.map +1 -1
  52. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +17 -0
  53. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +3 -3
  54. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  55. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +7 -0
  56. package/lib/components/VSlideGroup/VSlideGroup.d.ts +25 -0
  57. package/lib/components/VSlideGroup/VSlideGroup.js +5 -1
  58. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  59. package/lib/components/VTabs/VTabs.d.ts +25 -0
  60. package/lib/components/VTextField/VTextField.js +3 -5
  61. package/lib/components/VTextField/VTextField.js.map +1 -1
  62. package/lib/components/VTextarea/VTextarea.css +2 -2
  63. package/lib/components/VTextarea/VTextarea.d.ts +3 -3
  64. package/lib/components/VTextarea/VTextarea.js +23 -3
  65. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  66. package/lib/components/VTextarea/VTextarea.sass +4 -2
  67. package/lib/components/VWindow/VWindow.js +39 -3
  68. package/lib/components/VWindow/VWindow.js.map +1 -1
  69. package/lib/composables/date/date.js +1 -1
  70. package/lib/composables/date/date.js.map +1 -1
  71. package/lib/composables/group.js +1 -1
  72. package/lib/composables/group.js.map +1 -1
  73. package/lib/composables/nested/nested.js +12 -2
  74. package/lib/composables/nested/nested.js.map +1 -1
  75. package/lib/composables/virtual.js +2 -2
  76. package/lib/composables/virtual.js.map +1 -1
  77. package/lib/entry-bundler.js +1 -1
  78. package/lib/framework.d.ts +60 -60
  79. package/lib/framework.js +1 -1
  80. package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
  81. package/lib/labs/VColorInput/VColorInput.js +2 -2
  82. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  83. package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
  84. package/lib/labs/VDateInput/VDateInput.js +16 -7
  85. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  86. package/lib/labs/VIconBtn/VIconBtn.css +22 -0
  87. package/lib/labs/VIconBtn/VIconBtn.scss +32 -0
  88. package/lib/labs/VMaskInput/VMaskInput.js +1 -1
  89. package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
  90. package/lib/labs/rules/rules.js +1 -1
  91. package/lib/labs/rules/rules.js.map +1 -1
  92. package/lib/util/helpers.js +4 -2
  93. package/lib/util/helpers.js.map +1 -1
  94. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","children","Map","parents","disabled","Set","open","openOnSelect","activate","select","activatable","selectable","opened","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","useNested","props","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","undefined","unshift","get","vm","nodeIds","nested","arr","key","entries","push","parentId","isDisabled","isGroup","has","join","newPath","concat","add","set","delete","list","filter","child","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","idValue","item","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n disabled: Ref<Set<unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n children: ref(new Map()),\n parents: ref(new Map()),\n disabled: ref(new Set()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n const disabled = shallowRef(new Set<unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'trunk': return trunkSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value, disabled.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = toRaw(id)\n\n while (parent !== undefined) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nodeIds = new Set<unknown>()\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n selectable: toRef(() => props.selectable),\n activated,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isDisabled, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isDisabled && disabled.value.add(id)\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n nodeIds.delete(id)\n children.value.delete(id)\n disabled.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n disabled: disabled.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n disabled,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => {\n const idValue = toRaw(toValue(id))\n return idValue !== undefined ? idValue : uidSymbol\n })\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n onBeforeMount(() => {\n if (!parent.isGroupActivator) {\n parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup)\n }\n })\n\n onBeforeUnmount(() => {\n if (!parent.isGroupActivator) {\n parent.root.unregister(computedId.value)\n }\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","nextTick","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","watch","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","children","Map","parents","disabled","Set","open","openOnSelect","activate","select","activatable","selectable","opened","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","useNested","props","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","undefined","unshift","get","vm","nodeIds","nested","arr","key","entries","push","parentId","isDisabled","isGroup","has","join","newPath","concat","add","set","delete","list","filter","child","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","idValue","item","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","val","oldVal","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n watch,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n disabled: Ref<Set<unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n children: ref(new Map()),\n parents: ref(new Map()),\n disabled: ref(new Set()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n const disabled = shallowRef(new Set<unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'trunk': return trunkSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value, disabled.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = toRaw(id)\n\n while (parent !== undefined) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nodeIds = new Set<unknown>()\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n selectable: toRef(() => props.selectable),\n activated,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isDisabled, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isDisabled && disabled.value.add(id)\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n nodeIds.delete(id)\n children.value.delete(id)\n disabled.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n disabled: disabled.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n disabled,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => {\n const idValue = toRaw(toValue(id))\n return idValue !== undefined ? idValue : uidSymbol\n })\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n onBeforeMount(() => {\n if (!parent.isGroupActivator) {\n nextTick(() => {\n parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup)\n })\n }\n })\n\n onBeforeUnmount(() => {\n if (!parent.isGroupActivator) {\n parent.root.unregister(computedId.value)\n }\n })\n\n watch(computedId, (val, oldVal) => {\n if (!parent.isGroupActivator) {\n parent.root.unregister(oldVal)\n nextTick(() => {\n parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup)\n })\n }\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"AAAA;AAAA,SACSA,eAAe,8BAExB;AACA,SACEC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,aAAa,EACbC,eAAe,EACfC,OAAO,EACPC,GAAG,EACHC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,OAAO,EACPC,KAAK,QACA,KAAK;AAAA,SAEVC,yBAAyB,EACzBC,+BAA+B,EAC/BC,kBAAkB,EAClBC,wBAAwB;AAAA,SAEjBC,gBAAgB,EAAEC,oBAAoB,EAAEC,kBAAkB;AAAA,SAEjEC,qBAAqB,EACrBC,yBAAyB,EACzBC,+BAA+B,EAC/BC,kBAAkB,EAClBC,wBAAwB,EACxBC,mBAAmB;AAAA,SAEZC,YAAY,EAAEC,kBAAkB,EAAEC,YAAY,+BAEvD;AA+DA,OAAO,MAAMC,aAA0C,GAAGC,MAAM,CAACC,GAAG,CAAC,gBAAgB,CAAC;AAEtF,OAAO,MAAMC,WAA0B,GAAG;EACxCC,EAAE,EAAEzB,UAAU,CAAC,CAAC;EAChB0B,IAAI,EAAE;IACJC,QAAQ,EAAEA,CAAA,KAAM,IAAI;IACpBC,UAAU,EAAEA,CAAA,KAAM,IAAI;IACtBC,QAAQ,EAAE9B,GAAG,CAAC,IAAI+B,GAAG,CAAC,CAAC,CAAC;IACxBC,OAAO,EAAEhC,GAAG,CAAC,IAAI+B,GAAG,CAAC,CAAC,CAAC;IACvBE,QAAQ,EAAEjC,GAAG,CAAC,IAAIkC,GAAG,CAAC,CAAC,CAAC;IACxBC,IAAI,EAAEA,CAAA,KAAM,IAAI;IAChBC,YAAY,EAAEA,CAAA,KAAM,IAAI;IACxBC,QAAQ,EAAEA,CAAA,KAAM,IAAI;IACpBC,MAAM,EAAEA,CAAA,KAAM,IAAI;IAClBC,WAAW,EAAEvC,GAAG,CAAC,KAAK,CAAC;IACvBwC,UAAU,EAAExC,GAAG,CAAC,KAAK,CAAC;IACtByC,MAAM,EAAEzC,GAAG,CAAC,IAAIkC,GAAG,CAAC,CAAC,CAAC;IACtBQ,SAAS,EAAE1C,GAAG,CAAC,IAAIkC,GAAG,CAAC,CAAC,CAAC;IACzBS,QAAQ,EAAE3C,GAAG,CAAC,IAAI+B,GAAG,CAAC,CAAC,CAAC;IACxBa,cAAc,EAAE5C,GAAG,CAAC,EAAE,CAAC;IACvB6C,OAAO,EAAEA,CAAA,KAAM;EACjB;AACF,CAAC;AAED,OAAO,MAAMC,eAAe,GAAGzB,YAAY,CAAC;EAC1CkB,WAAW,EAAEQ,OAAO;EACpBP,UAAU,EAAEO,OAAO;EACnBC,cAAc,EAAE,CAACC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,CAAiC;EAC1EC,cAAc,EAAE,CAACH,MAAM,EAAEC,QAAQ,EAAEC,MAAM,CAAiC;EAC1EE,YAAY,EAAE,CAACJ,MAAM,EAAEE,MAAM,CAA+B;EAC5DV,MAAM,EAAE,IAAI;EACZC,SAAS,EAAE,IAAI;EACfC,QAAQ,EAAE,IAAI;EACdW,SAAS,EAAEP;AACb,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMQ,SAAS,GAAIC,KAAkB,IAAK;EAC/C,IAAIC,WAAW,GAAG,KAAK;EACvB,MAAM3B,QAAQ,GAAG7B,UAAU,CAAC,IAAI8B,GAAG,CAAqB,CAAC,CAAC;EAC1D,MAAMC,OAAO,GAAG/B,UAAU,CAAC,IAAI8B,GAAG,CAAmB,CAAC,CAAC;EACvD,MAAME,QAAQ,GAAGhC,UAAU,CAAC,IAAIiC,GAAG,CAAU,CAAC,CAAC;EAE/C,MAAMO,MAAM,GAAGhD,eAAe,CAC5B+D,KAAK,EACL,QAAQ,EACRA,KAAK,CAACf,MAAM,EACZiB,CAAC,IAAI,IAAIxB,GAAG,CAACyB,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,GAAGA,CAAC,CAACG,GAAG,CAACC,CAAC,IAAI5D,KAAK,CAAC4D,CAAC,CAAC,CAAC,GAAGJ,CAAC,CAAC,EACzDA,CAAC,IAAI,CAAC,GAAGA,CAAC,CAACK,MAAM,CAAC,CAAC,CACrB,CAAC;EAED,MAAMf,cAAc,GAAGtD,QAAQ,CAAC,MAAM;IACpC,IAAI,OAAO8D,KAAK,CAACR,cAAc,KAAK,QAAQ,EAAE,OAAOQ,KAAK,CAACR,cAAc;IACzE,IAAI,OAAOQ,KAAK,CAACR,cAAc,KAAK,UAAU,EAAE,OAAOQ,KAAK,CAACR,cAAc,CAACQ,KAAK,CAACF,SAAS,CAAC;IAE5F,QAAQE,KAAK,CAACR,cAAc;MAC1B,KAAK,MAAM;QAAE,OAAOxC,kBAAkB,CAACgD,KAAK,CAACF,SAAS,CAAC;MACvD,KAAK,aAAa;QAAE,OAAO7C,wBAAwB,CAAC+C,KAAK,CAACF,SAAS,CAAC;MACpE,KAAK,aAAa;QAAE,OAAOhD,yBAAyB,CAACkD,KAAK,CAACF,SAAS,CAAC;MACrE,KAAK,oBAAoB;MACzB;QAAS,OAAO/C,+BAA+B,CAACiD,KAAK,CAACF,SAAS,CAAC;IAClE;EACF,CAAC,CAAC;EAEF,MAAMF,cAAc,GAAG1D,QAAQ,CAAC,MAAM;IACpC,IAAI,OAAO8D,KAAK,CAACJ,cAAc,KAAK,QAAQ,EAAE,OAAOI,KAAK,CAACJ,cAAc;IACzE,IAAI,OAAOI,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE,OAAOI,KAAK,CAACJ,cAAc,CAACI,KAAK,CAACF,SAAS,CAAC;IAE5F,QAAQE,KAAK,CAACJ,cAAc;MAC1B,KAAK,aAAa;QAAE,OAAOnC,wBAAwB,CAACuC,KAAK,CAACF,SAAS,CAAC;MACpE,KAAK,MAAM;QAAE,OAAOtC,kBAAkB,CAACwC,KAAK,CAACF,SAAS,CAAC;MACvD,KAAK,aAAa;QAAE,OAAOxC,yBAAyB,CAAC0C,KAAK,CAACF,SAAS,CAAC;MACrE,KAAK,oBAAoB;QAAE,OAAOvC,+BAA+B,CAACyC,KAAK,CAACF,SAAS,CAAC;MAClF,KAAK,OAAO;QAAE,OAAOpC,mBAAmB,CAACsC,KAAK,CAACF,SAAS,CAAC;MACzD,KAAK,SAAS;MACd;QAAS,OAAOzC,qBAAqB,CAAC2C,KAAK,CAACF,SAAS,CAAC;IACxD;EACF,CAAC,CAAC;EAEF,MAAMD,YAAY,GAAG3D,QAAQ,CAAC,MAAM;IAClC,IAAI,OAAO8D,KAAK,CAACH,YAAY,KAAK,QAAQ,EAAE,OAAOG,KAAK,CAACH,YAAY;IAErE,QAAQG,KAAK,CAACH,YAAY;MACxB,KAAK,MAAM;QAAE,OAAO3C,gBAAgB;MACpC,KAAK,QAAQ;QAAE,OAAOE,kBAAkB;MACxC,KAAK,UAAU;MACf;QAAS,OAAOD,oBAAoB;IACtC;EACF,CAAC,CAAC;EAEF,MAAM+B,SAAS,GAAGjD,eAAe,CAC/B+D,KAAK,EACL,WAAW,EACXA,KAAK,CAACd,SAAS,EACfgB,CAAC,IAAIV,cAAc,CAACgB,KAAK,CAACC,EAAE,CAACP,CAAC,EAAE5B,QAAQ,CAACkC,KAAK,EAAEhC,OAAO,CAACgC,KAAK,CAAC,EAC9DN,CAAC,IAAIV,cAAc,CAACgB,KAAK,CAACE,GAAG,CAACR,CAAC,EAAE5B,QAAQ,CAACkC,KAAK,EAAEhC,OAAO,CAACgC,KAAK,CAChE,CAAC;EACD,MAAMrB,QAAQ,GAAGlD,eAAe,CAC9B+D,KAAK,EACL,UAAU,EACVA,KAAK,CAACb,QAAQ,EACde,CAAC,IAAIN,cAAc,CAACY,KAAK,CAACC,EAAE,CAACP,CAAC,EAAE5B,QAAQ,CAACkC,KAAK,EAAEhC,OAAO,CAACgC,KAAK,EAAE/B,QAAQ,CAAC+B,KAAK,CAAC,EAC9EN,CAAC,IAAIN,cAAc,CAACY,KAAK,CAACE,GAAG,CAACR,CAAC,EAAE5B,QAAQ,CAACkC,KAAK,EAAEhC,OAAO,CAACgC,KAAK,CAChE,CAAC;EAEDlE,eAAe,CAAC,MAAM;IACpB2D,WAAW,GAAG,IAAI;EACpB,CAAC,CAAC;EAEF,SAASZ,OAAOA,CAAEnB,EAAW,EAAE;IAC7B,MAAMyC,IAAe,GAAG,EAAE;IAC1B,IAAIC,MAAe,GAAGlE,KAAK,CAACwB,EAAE,CAAC;IAE/B,OAAO0C,MAAM,KAAKC,SAAS,EAAE;MAC3BF,IAAI,CAACG,OAAO,CAACF,MAAM,CAAC;MACpBA,MAAM,GAAGpC,OAAO,CAACgC,KAAK,CAACO,GAAG,CAACH,MAAM,CAAC;IACpC;IAEA,OAAOD,IAAI;EACb;EAEA,MAAMK,EAAE,GAAGpD,kBAAkB,CAAC,QAAQ,CAAC;EAEvC,MAAMqD,OAAO,GAAG,IAAIvC,GAAG,CAAU,CAAC;EAElC,MAAMwC,MAAqB,GAAG;IAC5BhD,EAAE,EAAEzB,UAAU,CAAC,CAAC;IAChB0B,IAAI,EAAE;MACJc,MAAM;MACNF,WAAW,EAAEpC,KAAK,CAAC,MAAMqD,KAAK,CAACjB,WAAW,CAAC;MAC3CC,UAAU,EAAErC,KAAK,CAAC,MAAMqD,KAAK,CAAChB,UAAU,CAAC;MACzCE,SAAS;MACTC,QAAQ;MACRC,cAAc,EAAElD,QAAQ,CAAC,MAAM;QAC7B,MAAMiF,GAAG,GAAG,EAAE;QAEd,KAAK,MAAM,CAACC,GAAG,EAAEZ,KAAK,CAAC,IAAIrB,QAAQ,CAACqB,KAAK,CAACa,OAAO,CAAC,CAAC,EAAE;UACnD,IAAIb,KAAK,KAAK,IAAI,EAAEW,GAAG,CAACG,IAAI,CAACF,GAAG,CAAC;QACnC;QAEA,OAAOD,GAAG;MACZ,CAAC,CAAC;MACF/C,QAAQ,EAAEA,CAACF,EAAE,EAAEqD,QAAQ,EAAEC,UAAU,EAAEC,OAAO,KAAK;QAC/C,IAAIR,OAAO,CAACS,GAAG,CAACxD,EAAE,CAAC,EAAE;UACnB,MAAMyC,IAAI,GAAGtB,OAAO,CAACnB,EAAE,CAAC,CAACmC,GAAG,CAACZ,MAAM,CAAC,CAACkC,IAAI,CAAC,MAAM,CAAC;UACjD,MAAMC,OAAO,GAAGvC,OAAO,CAACkC,QAAQ,CAAC,CAACM,MAAM,CAAC3D,EAAE,CAAC,CAACmC,GAAG,CAACZ,MAAM,CAAC,CAACkC,IAAI,CAAC,MAAM,CAAC;UACrEhE,YAAY,CAAC,sCAAsCgD,IAAI,OAAOiB,OAAO,EAAE,CAAC;UACxE;QACF,CAAC,MAAM;UACLX,OAAO,CAACa,GAAG,CAAC5D,EAAE,CAAC;QACjB;QAEAqD,QAAQ,IAAIrD,EAAE,KAAKqD,QAAQ,IAAI/C,OAAO,CAACgC,KAAK,CAACuB,GAAG,CAAC7D,EAAE,EAAEqD,QAAQ,CAAC;QAE9DC,UAAU,IAAI/C,QAAQ,CAAC+B,KAAK,CAACsB,GAAG,CAAC5D,EAAE,CAAC;QACpCuD,OAAO,IAAInD,QAAQ,CAACkC,KAAK,CAACuB,GAAG,CAAC7D,EAAE,EAAE,EAAE,CAAC;QAErC,IAAIqD,QAAQ,IAAI,IAAI,EAAE;UACpBjD,QAAQ,CAACkC,KAAK,CAACuB,GAAG,CAACR,QAAQ,EAAE,CAAC,IAAGjD,QAAQ,CAACkC,KAAK,CAACO,GAAG,CAACQ,QAAQ,CAAC,IAAI,EAAE,GAAErD,EAAE,CAAC,CAAC;QAC3E;MACF,CAAC;MACDG,UAAU,EAAEH,EAAE,IAAI;QAChB,IAAI+B,WAAW,EAAE;QAEjBgB,OAAO,CAACe,MAAM,CAAC9D,EAAE,CAAC;QAClBI,QAAQ,CAACkC,KAAK,CAACwB,MAAM,CAAC9D,EAAE,CAAC;QACzBO,QAAQ,CAAC+B,KAAK,CAACwB,MAAM,CAAC9D,EAAE,CAAC;QACzB,MAAM0C,MAAM,GAAGpC,OAAO,CAACgC,KAAK,CAACO,GAAG,CAAC7C,EAAE,CAAC;QACpC,IAAI0C,MAAM,EAAE;UACV,MAAMqB,IAAI,GAAG3D,QAAQ,CAACkC,KAAK,CAACO,GAAG,CAACH,MAAM,CAAC,IAAI,EAAE;UAC7CtC,QAAQ,CAACkC,KAAK,CAACuB,GAAG,CAACnB,MAAM,EAAEqB,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,KAAKjE,EAAE,CAAC,CAAC;QAChE;QACAM,OAAO,CAACgC,KAAK,CAACwB,MAAM,CAAC9D,EAAE,CAAC;MAC1B,CAAC;MACDS,IAAI,EAAEA,CAACT,EAAE,EAAEsC,KAAK,EAAE4B,KAAK,KAAK;QAC1BpB,EAAE,CAACqB,IAAI,CAAC,YAAY,EAAE;UAAEnE,EAAE;UAAEsC,KAAK;UAAEG,IAAI,EAAEtB,OAAO,CAACnB,EAAE,CAAC;UAAEkE;QAAM,CAAC,CAAC;QAE9D,MAAME,SAAS,GAAGzC,YAAY,CAACW,KAAK,CAAC7B,IAAI,CAAC;UACxCT,EAAE;UACFsC,KAAK;UACLvB,MAAM,EAAE,IAAIP,GAAG,CAACO,MAAM,CAACuB,KAAK,CAAC;UAC7BlC,QAAQ,EAAEA,QAAQ,CAACkC,KAAK;UACxBhC,OAAO,EAAEA,OAAO,CAACgC,KAAK;UACtB4B;QACF,CAAC,CAAC;QAEFE,SAAS,KAAKrD,MAAM,CAACuB,KAAK,GAAG8B,SAAS,CAAC;MACzC,CAAC;MACD1D,YAAY,EAAEA,CAACV,EAAE,EAAEsC,KAAK,EAAE4B,KAAK,KAAK;QAClC,MAAME,SAAS,GAAGzC,YAAY,CAACW,KAAK,CAAC1B,MAAM,CAAC;UAC1CZ,EAAE;UACFsC,KAAK;UACLrB,QAAQ,EAAE,IAAIZ,GAAG,CAACY,QAAQ,CAACqB,KAAK,CAAC;UACjCvB,MAAM,EAAE,IAAIP,GAAG,CAACO,MAAM,CAACuB,KAAK,CAAC;UAC7BlC,QAAQ,EAAEA,QAAQ,CAACkC,KAAK;UACxBhC,OAAO,EAAEA,OAAO,CAACgC,KAAK;UACtB4B;QACF,CAAC,CAAC;QACFE,SAAS,KAAKrD,MAAM,CAACuB,KAAK,GAAG8B,SAAS,CAAC;MACzC,CAAC;MACDxD,MAAM,EAAEA,CAACZ,EAAE,EAAEsC,KAAK,EAAE4B,KAAK,KAAK;QAC5BpB,EAAE,CAACqB,IAAI,CAAC,cAAc,EAAE;UAAEnE,EAAE;UAAEsC,KAAK;UAAEG,IAAI,EAAEtB,OAAO,CAACnB,EAAE,CAAC;UAAEkE;QAAM,CAAC,CAAC;QAEhE,MAAMG,WAAW,GAAG3C,cAAc,CAACY,KAAK,CAAC1B,MAAM,CAAC;UAC9CZ,EAAE;UACFsC,KAAK;UACLrB,QAAQ,EAAE,IAAIZ,GAAG,CAACY,QAAQ,CAACqB,KAAK,CAAC;UACjClC,QAAQ,EAAEA,QAAQ,CAACkC,KAAK;UACxBhC,OAAO,EAAEA,OAAO,CAACgC,KAAK;UACtB/B,QAAQ,EAAEA,QAAQ,CAAC+B,KAAK;UACxB4B;QACF,CAAC,CAAC;QACFG,WAAW,KAAKpD,QAAQ,CAACqB,KAAK,GAAG+B,WAAW,CAAC;QAE7CrB,MAAM,CAAC/C,IAAI,CAACS,YAAY,CAACV,EAAE,EAAEsC,KAAK,EAAE4B,KAAK,CAAC;MAC5C,CAAC;MACDvD,QAAQ,EAAEA,CAACX,EAAE,EAAEsC,KAAK,EAAE4B,KAAK,KAAK;QAC9B,IAAI,CAACpC,KAAK,CAACjB,WAAW,EAAE;UACtB,OAAOmC,MAAM,CAAC/C,IAAI,CAACW,MAAM,CAACZ,EAAE,EAAE,IAAI,EAAEkE,KAAK,CAAC;QAC5C;QAEApB,EAAE,CAACqB,IAAI,CAAC,gBAAgB,EAAE;UAAEnE,EAAE;UAAEsC,KAAK;UAAEG,IAAI,EAAEtB,OAAO,CAACnB,EAAE,CAAC;UAAEkE;QAAM,CAAC,CAAC;QAElE,MAAMI,YAAY,GAAGhD,cAAc,CAACgB,KAAK,CAAC3B,QAAQ,CAAC;UACjDX,EAAE;UACFsC,KAAK;UACLtB,SAAS,EAAE,IAAIR,GAAG,CAACQ,SAAS,CAACsB,KAAK,CAAC;UACnClC,QAAQ,EAAEA,QAAQ,CAACkC,KAAK;UACxBhC,OAAO,EAAEA,OAAO,CAACgC,KAAK;UACtB4B;QACF,CAAC,CAAC;QAEF,IAAII,YAAY,CAACC,IAAI,KAAKvD,SAAS,CAACsB,KAAK,CAACiC,IAAI,EAAE;UAC9CvD,SAAS,CAACsB,KAAK,GAAGgC,YAAY;QAChC,CAAC,MAAM;UACL,KAAK,MAAMhC,KAAK,IAAIgC,YAAY,EAAE;YAChC,IAAI,CAACtD,SAAS,CAACsB,KAAK,CAACkB,GAAG,CAAClB,KAAK,CAAC,EAAE;cAC/BtB,SAAS,CAACsB,KAAK,GAAGgC,YAAY;cAC9B;YACF;UACF;UACA,KAAK,MAAMhC,KAAK,IAAItB,SAAS,CAACsB,KAAK,EAAE;YACnC,IAAI,CAACgC,YAAY,CAACd,GAAG,CAAClB,KAAK,CAAC,EAAE;cAC5BtB,SAAS,CAACsB,KAAK,GAAGgC,YAAY;cAC9B;YACF;UACF;QACF;MACF,CAAC;MACDlE,QAAQ;MACRE,OAAO;MACPC,QAAQ;MACRY;IACF;EACF,CAAC;EAED9C,OAAO,CAACuB,aAAa,EAAEoD,MAAM,CAAC;EAE9B,OAAOA,MAAM,CAAC/C,IAAI;AACpB,CAAC;AAED,OAAO,MAAMuE,aAAa,GAAGA,CAACxE,EAA6B,EAAEsD,UAAqC,EAAEC,OAAgB,KAAK;EACvH,MAAMb,MAAM,GAAGzE,MAAM,CAAC2B,aAAa,EAAEG,WAAW,CAAC;EAEjD,MAAM0E,SAAS,GAAG5E,MAAM,CAAC,aAAa,CAAC;EACvC,MAAM6E,UAAU,GAAG1G,QAAQ,CAAC,MAAM;IAChC,MAAM2G,OAAO,GAAGnG,KAAK,CAACE,OAAO,CAACsB,EAAE,CAAC,CAAC;IAClC,OAAO2E,OAAO,KAAKhC,SAAS,GAAGgC,OAAO,GAAGF,SAAS;EACpD,CAAC,CAAC;EAEF,MAAMG,IAAI,GAAG;IACX,GAAGlC,MAAM;IACT1C,EAAE,EAAE0E,UAAU;IACdjE,IAAI,EAAEA,CAACA,IAAa,EAAEoE,CAAQ,KAAKnC,MAAM,CAACzC,IAAI,CAACQ,IAAI,CAACiE,UAAU,CAACpC,KAAK,EAAE7B,IAAI,EAAEoE,CAAC,CAAC;IAC9EnE,YAAY,EAAEA,CAACD,IAAa,EAAEoE,CAAS,KAAKnC,MAAM,CAACzC,IAAI,CAACS,YAAY,CAACgE,UAAU,CAACpC,KAAK,EAAE7B,IAAI,EAAEoE,CAAC,CAAC;IAC/FC,MAAM,EAAE9G,QAAQ,CAAC,MAAM0E,MAAM,CAACzC,IAAI,CAACc,MAAM,CAACuB,KAAK,CAACkB,GAAG,CAACkB,UAAU,CAACpC,KAAK,CAAC,CAAC;IACtEI,MAAM,EAAE1E,QAAQ,CAAC,MAAM0E,MAAM,CAACzC,IAAI,CAACK,OAAO,CAACgC,KAAK,CAACO,GAAG,CAAC6B,UAAU,CAACpC,KAAK,CAAC,CAAC;IACvE3B,QAAQ,EAAEA,CAACK,SAAkB,EAAE6D,CAAS,KAAKnC,MAAM,CAACzC,IAAI,CAACU,QAAQ,CAAC+D,UAAU,CAACpC,KAAK,EAAEtB,SAAS,EAAE6D,CAAC,CAAC;IACjGE,WAAW,EAAE/G,QAAQ,CAAC,MAAM0E,MAAM,CAACzC,IAAI,CAACe,SAAS,CAACsB,KAAK,CAACkB,GAAG,CAACkB,UAAU,CAACpC,KAAK,CAAC,CAAC;IAC9E1B,MAAM,EAAEA,CAACK,QAAiB,EAAE4D,CAAS,KAAKnC,MAAM,CAACzC,IAAI,CAACW,MAAM,CAAC8D,UAAU,CAACpC,KAAK,EAAErB,QAAQ,EAAE4D,CAAC,CAAC;IAC3FG,UAAU,EAAEhH,QAAQ,CAAC,MAAM0E,MAAM,CAACzC,IAAI,CAACgB,QAAQ,CAACqB,KAAK,CAACO,GAAG,CAAC6B,UAAU,CAACpC,KAAK,CAAC,KAAK,IAAI,CAAC;IACrF2C,eAAe,EAAEjH,QAAQ,CAAC,MAAM0E,MAAM,CAACzC,IAAI,CAACgB,QAAQ,CAACqB,KAAK,CAACO,GAAG,CAAC6B,UAAU,CAACpC,KAAK,CAAC,KAAK,eAAe,CAAC;IACrG4C,MAAM,EAAElH,QAAQ,CAAC,MAAM,CAAC0E,MAAM,CAACzC,IAAI,CAACG,QAAQ,CAACkC,KAAK,CAACO,GAAG,CAAC6B,UAAU,CAACpC,KAAK,CAAC,CAAC;IACzE6C,gBAAgB,EAAEzC,MAAM,CAACyC;EAC3B,CAAC;EAEDhH,aAAa,CAAC,MAAM;IAClB,IAAI,CAACuE,MAAM,CAACyC,gBAAgB,EAAE;MAC5BjH,QAAQ,CAAC,MAAM;QACbwE,MAAM,CAACzC,IAAI,CAACC,QAAQ,CAACwE,UAAU,CAACpC,KAAK,EAAEI,MAAM,CAAC1C,EAAE,CAACsC,KAAK,EAAE5D,OAAO,CAAC4E,UAAU,CAAC,EAAEC,OAAO,CAAC;MACvF,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EAEFnF,eAAe,CAAC,MAAM;IACpB,IAAI,CAACsE,MAAM,CAACyC,gBAAgB,EAAE;MAC5BzC,MAAM,CAACzC,IAAI,CAACE,UAAU,CAACuE,UAAU,CAACpC,KAAK,CAAC;IAC1C;EACF,CAAC,CAAC;EAEF3D,KAAK,CAAC+F,UAAU,EAAE,CAACU,GAAG,EAAEC,MAAM,KAAK;IACjC,IAAI,CAAC3C,MAAM,CAACyC,gBAAgB,EAAE;MAC5BzC,MAAM,CAACzC,IAAI,CAACE,UAAU,CAACkF,MAAM,CAAC;MAC9BnH,QAAQ,CAAC,MAAM;QACbwE,MAAM,CAACzC,IAAI,CAACC,QAAQ,CAACkF,GAAG,EAAE1C,MAAM,CAAC1C,EAAE,CAACsC,KAAK,EAAE5D,OAAO,CAAC4E,UAAU,CAAC,EAAEC,OAAO,CAAC;MAC1E,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EAEFA,OAAO,IAAIlF,OAAO,CAACuB,aAAa,EAAEgF,IAAI,CAAC;EAEvC,OAAOA,IAAI;AACb,CAAC;AAED,OAAO,MAAMU,uBAAuB,GAAGA,CAAA,KAAM;EAC3C,MAAM5C,MAAM,GAAGzE,MAAM,CAAC2B,aAAa,EAAEG,WAAW,CAAC;EAEjD1B,OAAO,CAACuB,aAAa,EAAE;IAAE,GAAG8C,MAAM;IAAEyC,gBAAgB,EAAE;EAAK,CAAC,CAAC;AAC/D,CAAC","ignoreList":[]}
@@ -71,7 +71,7 @@ export function useVirtual(props, items) {
71
71
  const start = performance.now();
72
72
  offsets[0] = 0;
73
73
  const length = items.value.length;
74
- for (let i = 1; i <= length - 1; i++) {
74
+ for (let i = 1; i <= length; i++) {
75
75
  offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);
76
76
  }
77
77
  updateTime.value = Math.max(updateTime.value, performance.now() - start);
@@ -106,7 +106,7 @@ export function useVirtual(props, items) {
106
106
  }
107
107
  }
108
108
  function calculateOffset(index) {
109
- index = clamp(index, 0, items.value.length - 1);
109
+ index = clamp(index, 0, items.value.length);
110
110
  const whole = Math.floor(index);
111
111
  const fraction = index % 1;
112
112
  const next = whole + 1;
@@ -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","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 || !itemHeight.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; 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)\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 || !itemHeight.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":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.10.5";
19
+ export const version = "3.10.7";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2712,49 +2712,41 @@ declare module 'vue' {
2712
2712
  $children?: VNodeChild
2713
2713
  }
2714
2714
  export interface GlobalComponents {
2715
- VAvatar: typeof import('vuetify/components')['VAvatar']
2716
2715
  VApp: typeof import('vuetify/components')['VApp']
2716
+ VAlert: typeof import('vuetify/components')['VAlert']
2717
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2718
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2717
2719
  VAppBar: typeof import('vuetify/components')['VAppBar']
2718
2720
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2719
2721
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2720
- VBadge: typeof import('vuetify/components')['VBadge']
2721
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2722
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2723
2722
  VBanner: typeof import('vuetify/components')['VBanner']
2724
2723
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2725
2724
  VBannerText: typeof import('vuetify/components')['VBannerText']
2725
+ VBadge: typeof import('vuetify/components')['VBadge']
2726
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2727
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2728
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2726
2729
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2727
2730
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2728
2731
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2732
+ VBtn: typeof import('vuetify/components')['VBtn']
2729
2733
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2730
- VAlert: typeof import('vuetify/components')['VAlert']
2731
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2734
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2735
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2736
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2737
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2732
2738
  VCard: typeof import('vuetify/components')['VCard']
2733
2739
  VCardActions: typeof import('vuetify/components')['VCardActions']
2734
2740
  VCardItem: typeof import('vuetify/components')['VCardItem']
2735
2741
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2736
2742
  VCardText: typeof import('vuetify/components')['VCardText']
2737
2743
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2738
- VBtn: typeof import('vuetify/components')['VBtn']
2739
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2740
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2741
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2742
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2743
- VChip: typeof import('vuetify/components')['VChip']
2744
- VCombobox: typeof import('vuetify/components')['VCombobox']
2745
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2746
2744
  VCarousel: typeof import('vuetify/components')['VCarousel']
2747
2745
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2746
+ VChip: typeof import('vuetify/components')['VChip']
2748
2747
  VCode: typeof import('vuetify/components')['VCode']
2748
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2749
2749
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2750
- VCounter: typeof import('vuetify/components')['VCounter']
2751
- VDialog: typeof import('vuetify/components')['VDialog']
2752
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2753
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2754
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2755
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2756
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2757
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2758
2750
  VDataTable: typeof import('vuetify/components')['VDataTable']
2759
2751
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2760
2752
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2762,26 +2754,36 @@ declare module 'vue' {
2762
2754
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2763
2755
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2764
2756
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2757
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2758
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2759
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2760
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2761
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2762
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2765
2763
  VDivider: typeof import('vuetify/components')['VDivider']
2764
+ VCounter: typeof import('vuetify/components')['VCounter']
2765
+ VDialog: typeof import('vuetify/components')['VDialog']
2766
2766
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2767
2767
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2768
2768
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2769
2769
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2770
- VFab: typeof import('vuetify/components')['VFab']
2771
- VField: typeof import('vuetify/components')['VField']
2772
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2773
2770
  VEmptyState: typeof import('vuetify/components')['VEmptyState']
2774
2771
  VFooter: typeof import('vuetify/components')['VFooter']
2772
+ VImg: typeof import('vuetify/components')['VImg']
2773
+ VField: typeof import('vuetify/components')['VField']
2774
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2775
+ VFab: typeof import('vuetify/components')['VFab']
2776
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2777
+ VInput: typeof import('vuetify/components')['VInput']
2775
2778
  VIcon: typeof import('vuetify/components')['VIcon']
2776
2779
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2777
2780
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2778
2781
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2779
2782
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2780
2783
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2781
- VFileInput: typeof import('vuetify/components')['VFileInput']
2784
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
2785
+ VItem: typeof import('vuetify/components')['VItem']
2782
2786
  VKbd: typeof import('vuetify/components')['VKbd']
2783
- VImg: typeof import('vuetify/components')['VImg']
2784
- VInput: typeof import('vuetify/components')['VInput']
2785
2787
  VLabel: typeof import('vuetify/components')['VLabel']
2786
2788
  VList: typeof import('vuetify/components')['VList']
2787
2789
  VListGroup: typeof import('vuetify/components')['VListGroup']
@@ -2792,34 +2794,27 @@ declare module 'vue' {
2792
2794
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2793
2795
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2794
2796
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2795
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
2796
- VItem: typeof import('vuetify/components')['VItem']
2797
- VMessages: typeof import('vuetify/components')['VMessages']
2798
- VMain: typeof import('vuetify/components')['VMain']
2799
2797
  VMenu: typeof import('vuetify/components')['VMenu']
2798
+ VMain: typeof import('vuetify/components')['VMain']
2799
+ VMessages: typeof import('vuetify/components')['VMessages']
2800
2800
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2801
2801
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2802
- VPagination: typeof import('vuetify/components')['VPagination']
2803
2802
  VNumberInput: typeof import('vuetify/components')['VNumberInput']
2804
2803
  VOverlay: typeof import('vuetify/components')['VOverlay']
2805
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2806
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2804
+ VPagination: typeof import('vuetify/components')['VPagination']
2807
2805
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2806
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2808
2807
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2808
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2809
2809
  VRating: typeof import('vuetify/components')['VRating']
2810
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2811
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2812
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2813
2810
  VSelect: typeof import('vuetify/components')['VSelect']
2814
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2815
2811
  VSheet: typeof import('vuetify/components')['VSheet']
2816
- VSlider: typeof import('vuetify/components')['VSlider']
2817
- VSwitch: typeof import('vuetify/components')['VSwitch']
2812
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2818
2813
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2819
- VTab: typeof import('vuetify/components')['VTab']
2820
- VTabs: typeof import('vuetify/components')['VTabs']
2821
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2822
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2814
+ VSlider: typeof import('vuetify/components')['VSlider']
2815
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2816
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2817
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2823
2818
  VStepper: typeof import('vuetify/components')['VStepper']
2824
2819
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2825
2820
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
@@ -2827,32 +2822,40 @@ declare module 'vue' {
2827
2822
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2828
2823
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2829
2824
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2830
- VTextField: typeof import('vuetify/components')['VTextField']
2831
- VTable: typeof import('vuetify/components')['VTable']
2825
+ VTab: typeof import('vuetify/components')['VTab']
2826
+ VTabs: typeof import('vuetify/components')['VTabs']
2827
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2828
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2832
2829
  VTextarea: typeof import('vuetify/components')['VTextarea']
2830
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2831
+ VTable: typeof import('vuetify/components')['VTable']
2832
+ VTextField: typeof import('vuetify/components')['VTextField']
2833
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2834
+ VTimePicker: typeof import('vuetify/components')['VTimePicker']
2835
+ VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2836
+ VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2833
2837
  VTimeline: typeof import('vuetify/components')['VTimeline']
2834
2838
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2835
2839
  VTreeview: typeof import('vuetify/components')['VTreeview']
2836
2840
  VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2837
2841
  VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2838
- VTooltip: typeof import('vuetify/components')['VTooltip']
2842
+ VWindow: typeof import('vuetify/components')['VWindow']
2843
+ VWindowItem: typeof import('vuetify/components')['VWindowItem']
2839
2844
  VToolbar: typeof import('vuetify/components')['VToolbar']
2840
2845
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2841
2846
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2842
- VWindow: typeof import('vuetify/components')['VWindow']
2843
- VWindowItem: typeof import('vuetify/components')['VWindowItem']
2844
2847
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2845
2848
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2846
2849
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2847
2850
  VForm: typeof import('vuetify/components')['VForm']
2848
- VHover: typeof import('vuetify/components')['VHover']
2849
2851
  VContainer: typeof import('vuetify/components')['VContainer']
2850
2852
  VCol: typeof import('vuetify/components')['VCol']
2851
2853
  VRow: typeof import('vuetify/components')['VRow']
2852
2854
  VSpacer: typeof import('vuetify/components')['VSpacer']
2855
+ VHover: typeof import('vuetify/components')['VHover']
2856
+ VLazy: typeof import('vuetify/components')['VLazy']
2853
2857
  VLayout: typeof import('vuetify/components')['VLayout']
2854
2858
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2855
- VLazy: typeof import('vuetify/components')['VLazy']
2856
2859
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2857
2860
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2858
2861
  VParallax: typeof import('vuetify/components')['VParallax']
@@ -2881,26 +2884,23 @@ declare module 'vue' {
2881
2884
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2882
2885
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2883
2886
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2884
- VTimePicker: typeof import('vuetify/components')['VTimePicker']
2885
- VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2886
- VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2887
2887
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2888
2888
  VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2889
2889
  VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2890
2890
  VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2891
2891
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2892
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2893
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2894
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2895
2892
  VPie: typeof import('vuetify/labs/components')['VPie']
2896
2893
  VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2897
2894
  VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2895
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2896
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2897
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2898
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2899
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2898
2900
  VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2899
2901
  VVideo: typeof import('vuetify/labs/components')['VVideo']
2900
2902
  VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2901
2903
  VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2902
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2903
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2904
2904
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2905
2905
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2906
2906
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.10.5";
112
+ export const version = "3.10.7";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup