@vuetify/nightly 3.2.0-dev-20230405.0 → 3.2.0-dev-20230407.0

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 (42) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/json/importMap-labs.json +0 -4
  3. package/dist/json/importMap.json +52 -48
  4. package/dist/json/web-types.json +1 -1
  5. package/dist/vuetify-labs.css +10 -10
  6. package/dist/vuetify-labs.d.ts +164 -164
  7. package/dist/vuetify-labs.esm.js +180 -180
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +179 -179
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +10 -1
  12. package/dist/vuetify.d.ts +166 -14
  13. package/dist/vuetify.esm.js +176 -4
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +175 -3
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +222 -206
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -0
  21. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -0
  22. package/lib/components/VVirtualScroll/index.mjs.map +1 -0
  23. package/lib/components/index.d.ts +150 -1
  24. package/lib/components/index.mjs +2 -1
  25. package/lib/components/index.mjs.map +1 -1
  26. package/lib/entry-bundler.mjs +1 -1
  27. package/lib/framework.mjs +1 -1
  28. package/lib/index.d.ts +15 -14
  29. package/lib/labs/VDataTable/index.d.ts +15 -15
  30. package/lib/labs/components.d.ts +16 -165
  31. package/lib/labs/components.mjs +0 -1
  32. package/lib/labs/components.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +0 -1
  35. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +0 -1
  36. package/lib/labs/VVirtualScroll/index.mjs.map +0 -1
  37. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.css +0 -0
  38. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.mjs +0 -0
  39. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.sass +0 -0
  40. /package/lib/{labs → components}/VVirtualScroll/VVirtualScrollItem.mjs +0 -0
  41. /package/lib/{labs → components}/VVirtualScroll/index.d.ts +0 -0
  42. /package/lib/{labs → components}/VVirtualScroll/index.mjs +0 -0
@@ -2104,14 +2104,14 @@ declare const VDataTableVirtual: {
2104
2104
  hover: boolean;
2105
2105
  fixedHeader: boolean;
2106
2106
  fixedFooter: boolean;
2107
+ itemHeight: string | number;
2108
+ visibleItems: string | number;
2107
2109
  multiSort: boolean;
2108
2110
  mustSort: boolean;
2109
2111
  groupBy: SortItem[];
2110
2112
  showSelect: boolean;
2111
2113
  expandOnClick: boolean;
2112
2114
  showExpand: boolean;
2113
- visibleItems: string | number;
2114
- itemHeight: string | number;
2115
2115
  }> & Omit<{
2116
2116
  expanded: string[];
2117
2117
  headers: DataTableHeader[] | DataTableHeader[][];
@@ -2130,14 +2130,14 @@ declare const VDataTableVirtual: {
2130
2130
  hover: boolean;
2131
2131
  fixedHeader: boolean;
2132
2132
  fixedFooter: boolean;
2133
+ itemHeight: string | number;
2134
+ visibleItems: string | number;
2133
2135
  multiSort: boolean;
2134
2136
  mustSort: boolean;
2135
2137
  groupBy: SortItem[];
2136
2138
  showSelect: boolean;
2137
2139
  expandOnClick: boolean;
2138
2140
  showExpand: boolean;
2139
- visibleItems: string | number;
2140
- itemHeight: string | number;
2141
2141
  } & {
2142
2142
  search?: string | undefined;
2143
2143
  height?: string | number | undefined;
@@ -2410,7 +2410,7 @@ declare const VDataTableVirtual: {
2410
2410
  item: DataTableItem;
2411
2411
  }) => any) | undefined;
2412
2412
  "onUpdate:options"?: ((value: any) => any) | undefined;
2413
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "expanded" | "headers" | "noDataText" | "sortBy" | "items" | "modelValue" | "itemTitle" | "itemValue" | "itemChildren" | "itemProps" | "returnObject" | "hideNoData" | "filterMode" | "noFilter" | "hover" | "fixedHeader" | "fixedFooter" | "multiSort" | "mustSort" | "groupBy" | "showSelect" | "expandOnClick" | "showExpand" | "visibleItems" | "itemHeight">;
2413
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "expanded" | "headers" | "noDataText" | "sortBy" | "items" | "modelValue" | "itemTitle" | "itemValue" | "itemChildren" | "itemProps" | "returnObject" | "hideNoData" | "filterMode" | "noFilter" | "hover" | "fixedHeader" | "fixedFooter" | "itemHeight" | "visibleItems" | "multiSort" | "mustSort" | "groupBy" | "showSelect" | "expandOnClick" | "showExpand">;
2414
2414
  $attrs: {
2415
2415
  [x: string]: unknown;
2416
2416
  };
@@ -2444,14 +2444,14 @@ declare const VDataTableVirtual: {
2444
2444
  hover: boolean;
2445
2445
  fixedHeader: boolean;
2446
2446
  fixedFooter: boolean;
2447
+ itemHeight: string | number;
2448
+ visibleItems: string | number;
2447
2449
  multiSort: boolean;
2448
2450
  mustSort: boolean;
2449
2451
  groupBy: SortItem[];
2450
2452
  showSelect: boolean;
2451
2453
  expandOnClick: boolean;
2452
2454
  showExpand: boolean;
2453
- visibleItems: string | number;
2454
- itemHeight: string | number;
2455
2455
  } & {
2456
2456
  search?: string | undefined;
2457
2457
  height?: string | number | undefined;
@@ -2751,14 +2751,14 @@ declare const VDataTableVirtual: {
2751
2751
  hover: boolean;
2752
2752
  fixedHeader: boolean;
2753
2753
  fixedFooter: boolean;
2754
+ itemHeight: string | number;
2755
+ visibleItems: string | number;
2754
2756
  multiSort: boolean;
2755
2757
  mustSort: boolean;
2756
2758
  groupBy: SortItem[];
2757
2759
  showSelect: boolean;
2758
2760
  expandOnClick: boolean;
2759
2761
  showExpand: boolean;
2760
- visibleItems: string | number;
2761
- itemHeight: string | number;
2762
2762
  }, {}, string> & {
2763
2763
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
2764
2764
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -2797,14 +2797,14 @@ declare const VDataTableVirtual: {
2797
2797
  hover: boolean;
2798
2798
  fixedHeader: boolean;
2799
2799
  fixedFooter: boolean;
2800
+ itemHeight: string | number;
2801
+ visibleItems: string | number;
2800
2802
  multiSort: boolean;
2801
2803
  mustSort: boolean;
2802
2804
  groupBy: SortItem[];
2803
2805
  showSelect: boolean;
2804
2806
  expandOnClick: boolean;
2805
2807
  showExpand: boolean;
2806
- visibleItems: string | number;
2807
- itemHeight: string | number;
2808
2808
  } & {
2809
2809
  search?: string | undefined;
2810
2810
  height?: string | number | undefined;
@@ -3099,14 +3099,14 @@ declare const VDataTableVirtual: {
3099
3099
  hover: boolean;
3100
3100
  fixedHeader: boolean;
3101
3101
  fixedFooter: boolean;
3102
+ itemHeight: string | number;
3103
+ visibleItems: string | number;
3102
3104
  multiSort: boolean;
3103
3105
  mustSort: boolean;
3104
3106
  groupBy: SortItem[];
3105
3107
  showSelect: boolean;
3106
3108
  expandOnClick: boolean;
3107
3109
  showExpand: boolean;
3108
- visibleItems: string | number;
3109
- itemHeight: string | number;
3110
3110
  } & {
3111
3111
  search?: string | undefined;
3112
3112
  height?: string | number | undefined;
@@ -3406,14 +3406,14 @@ declare const VDataTableVirtual: {
3406
3406
  hover: boolean;
3407
3407
  fixedHeader: boolean;
3408
3408
  fixedFooter: boolean;
3409
+ itemHeight: string | number;
3410
+ visibleItems: string | number;
3409
3411
  multiSort: boolean;
3410
3412
  mustSort: boolean;
3411
3413
  groupBy: SortItem[];
3412
3414
  showSelect: boolean;
3413
3415
  expandOnClick: boolean;
3414
3416
  showExpand: boolean;
3415
- visibleItems: string | number;
3416
- itemHeight: string | number;
3417
3417
  }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
3418
3418
  customFilter: vue.PropType<FilterFunction>;
3419
3419
  customKeyFilter: vue.PropType<FilterKeyFunctions>;
@@ -5654,153 +5654,4 @@ declare const VSkeletonLoader: {
5654
5654
  }>>;
5655
5655
  type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>;
5656
5656
 
5657
- interface VVirtualScrollSlot<T> {
5658
- item: T;
5659
- index: number;
5660
- }
5661
- declare const VVirtualScroll: {
5662
- new (...args: any[]): {
5663
- $: vue.ComponentInternalInstance;
5664
- $data: {};
5665
- $props: Partial<{}> & Omit<Readonly<vue.ExtractPropTypes<Omit<{
5666
- height: (StringConstructor | NumberConstructor)[];
5667
- maxHeight: (StringConstructor | NumberConstructor)[];
5668
- maxWidth: (StringConstructor | NumberConstructor)[];
5669
- minHeight: (StringConstructor | NumberConstructor)[];
5670
- minWidth: (StringConstructor | NumberConstructor)[];
5671
- width: (StringConstructor | NumberConstructor)[];
5672
- items: {
5673
- type: ArrayConstructor;
5674
- default: () => never[];
5675
- };
5676
- itemHeight: (StringConstructor | NumberConstructor)[];
5677
- visibleItems: (StringConstructor | NumberConstructor)[];
5678
- }, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, never>;
5679
- $attrs: {
5680
- [x: string]: unknown;
5681
- };
5682
- $refs: {
5683
- [x: string]: unknown;
5684
- };
5685
- $slots: Readonly<{
5686
- [name: string]: vue.Slot | undefined;
5687
- }>;
5688
- $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
5689
- $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
5690
- $emit: (event: string, ...args: any[]) => void;
5691
- $el: any;
5692
- $options: vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<Omit<{
5693
- height: (StringConstructor | NumberConstructor)[];
5694
- maxHeight: (StringConstructor | NumberConstructor)[];
5695
- maxWidth: (StringConstructor | NumberConstructor)[];
5696
- minHeight: (StringConstructor | NumberConstructor)[];
5697
- minWidth: (StringConstructor | NumberConstructor)[];
5698
- width: (StringConstructor | NumberConstructor)[];
5699
- items: {
5700
- type: ArrayConstructor;
5701
- default: () => never[];
5702
- };
5703
- itemHeight: (StringConstructor | NumberConstructor)[];
5704
- visibleItems: (StringConstructor | NumberConstructor)[];
5705
- }, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">>>, {
5706
- scrollToIndex: (index: number) => void;
5707
- }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">, string, {}, {}, string> & {
5708
- beforeCreate?: ((() => void) | (() => void)[]) | undefined;
5709
- created?: ((() => void) | (() => void)[]) | undefined;
5710
- beforeMount?: ((() => void) | (() => void)[]) | undefined;
5711
- mounted?: ((() => void) | (() => void)[]) | undefined;
5712
- beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
5713
- updated?: ((() => void) | (() => void)[]) | undefined;
5714
- activated?: ((() => void) | (() => void)[]) | undefined;
5715
- deactivated?: ((() => void) | (() => void)[]) | undefined;
5716
- beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
5717
- beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
5718
- destroyed?: ((() => void) | (() => void)[]) | undefined;
5719
- unmounted?: ((() => void) | (() => void)[]) | undefined;
5720
- renderTracked?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined;
5721
- renderTriggered?: (((e: vue.DebuggerEvent) => void) | ((e: vue.DebuggerEvent) => void)[]) | undefined;
5722
- errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void)[]) | undefined;
5723
- };
5724
- $forceUpdate: () => void;
5725
- $nextTick: typeof vue.nextTick;
5726
- $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
5727
- } & Readonly<vue.ExtractPropTypes<Omit<{
5728
- height: (StringConstructor | NumberConstructor)[];
5729
- maxHeight: (StringConstructor | NumberConstructor)[];
5730
- maxWidth: (StringConstructor | NumberConstructor)[];
5731
- minHeight: (StringConstructor | NumberConstructor)[];
5732
- minWidth: (StringConstructor | NumberConstructor)[];
5733
- width: (StringConstructor | NumberConstructor)[];
5734
- items: {
5735
- type: ArrayConstructor;
5736
- default: () => never[];
5737
- };
5738
- itemHeight: (StringConstructor | NumberConstructor)[];
5739
- visibleItems: (StringConstructor | NumberConstructor)[];
5740
- }, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">>> & vue.ShallowUnwrapRef<{
5741
- scrollToIndex: (index: number) => void;
5742
- }> & {} & vue.ComponentCustomProperties & {};
5743
- __isFragment?: undefined;
5744
- __isTeleport?: undefined;
5745
- __isSuspense?: undefined;
5746
- } & vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<Omit<{
5747
- height: (StringConstructor | NumberConstructor)[];
5748
- maxHeight: (StringConstructor | NumberConstructor)[];
5749
- maxWidth: (StringConstructor | NumberConstructor)[];
5750
- minHeight: (StringConstructor | NumberConstructor)[];
5751
- minWidth: (StringConstructor | NumberConstructor)[];
5752
- width: (StringConstructor | NumberConstructor)[];
5753
- items: {
5754
- type: ArrayConstructor;
5755
- default: () => never[];
5756
- };
5757
- itemHeight: (StringConstructor | NumberConstructor)[];
5758
- visibleItems: (StringConstructor | NumberConstructor)[];
5759
- }, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">>>, {
5760
- scrollToIndex: (index: number) => void;
5761
- }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "$slots" | "v-slots" | "items">, string, {}, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1>() => {
5762
- $props: {
5763
- items: readonly T_1[];
5764
- } & {
5765
- $children?: vue.VNodeChild | ((args_0: VVirtualScrollSlot<T_1>) => vue.VNodeChild) | {
5766
- default?: ((args_0: VVirtualScrollSlot<T_1>) => vue.VNodeChild) | undefined;
5767
- };
5768
- $slots?: {
5769
- default?: ((args_0: VVirtualScrollSlot<T_1>) => vue.VNodeChild) | undefined;
5770
- } | undefined;
5771
- 'v-slots'?: {
5772
- default?: false | ((args_0: VVirtualScrollSlot<T_1>) => vue.VNodeChild) | undefined;
5773
- } | undefined;
5774
- } & {
5775
- "v-slot:default"?: false | ((args_0: VVirtualScrollSlot<T_1>) => vue.VNodeChild) | undefined;
5776
- };
5777
- }) & FilterPropsOptions<{
5778
- height: (StringConstructor | NumberConstructor)[];
5779
- maxHeight: (StringConstructor | NumberConstructor)[];
5780
- maxWidth: (StringConstructor | NumberConstructor)[];
5781
- minHeight: (StringConstructor | NumberConstructor)[];
5782
- minWidth: (StringConstructor | NumberConstructor)[];
5783
- width: (StringConstructor | NumberConstructor)[];
5784
- items: {
5785
- type: ArrayConstructor;
5786
- default: () => never[];
5787
- };
5788
- itemHeight: (StringConstructor | NumberConstructor)[];
5789
- visibleItems: (StringConstructor | NumberConstructor)[];
5790
- }, vue.ExtractPropTypes<{
5791
- height: (StringConstructor | NumberConstructor)[];
5792
- maxHeight: (StringConstructor | NumberConstructor)[];
5793
- maxWidth: (StringConstructor | NumberConstructor)[];
5794
- minHeight: (StringConstructor | NumberConstructor)[];
5795
- minWidth: (StringConstructor | NumberConstructor)[];
5796
- width: (StringConstructor | NumberConstructor)[];
5797
- items: {
5798
- type: ArrayConstructor;
5799
- default: () => never[];
5800
- };
5801
- itemHeight: (StringConstructor | NumberConstructor)[];
5802
- visibleItems: (StringConstructor | NumberConstructor)[];
5803
- }>>;
5804
- type VVirtualScroll = InstanceType<typeof VVirtualScroll>;
5805
-
5806
- export { VDataTable, VDataTableFooter, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual, VSkeletonLoader, VVirtualScroll };
5657
+ export { VDataTable, VDataTableFooter, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual, VSkeletonLoader };
@@ -1,4 +1,3 @@
1
1
  export * from "./VDataTable/index.mjs";
2
2
  export * from "./VSkeletonLoader/index.mjs";
3
- export * from "./VVirtualScroll/index.mjs";
4
3
  //# sourceMappingURL=components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.mjs","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VDataTable'\nexport * from './VSkeletonLoader'\nexport * from './VVirtualScroll'\n"],"mappings":""}
1
+ {"version":3,"file":"components.mjs","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VDataTable'\nexport * from './VSkeletonLoader'\n"],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.2.0-dev-20230405.0",
4
+ "version": "3.2.0-dev-20230407.0",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -1 +0,0 @@
1
- {"version":3,"file":"VVirtualScroll.mjs","names":["VVirtualScrollItem","makeDimensionProps","useDimension","useDisplay","useResizeObserver","computed","onMounted","ref","watch","watchEffect","clamp","convertToUnit","createRange","genericComponent","useRender","UP","DOWN","VVirtualScroll","name","props","items","type","Array","default","itemHeight","Number","String","visibleItems","setup","_ref","slots","first","baseItemHeight","get","parseInt","value","set","val","rootEl","resizeRef","contentRect","display","sizeMap","Map","sizes","length","map","Math","max","ceil","height","handleItemResize","index","calculateOffset","slice","reduce","curr","calculateMidPointIndex","scrollTop","start","end","middle","floor","middleOffset","lastScrollTop","handleScroll","direction","midPointIndex","buffer","round","scrollToIndex","offset","last","min","computedItems","paddingTop","paddingBottom","dimensionStyles","forEach","item","indexOf","delete","_createVNode"],"sources":["../../../src/labs/VVirtualScroll/VVirtualScroll.tsx"],"sourcesContent":["// Styles\nimport './VVirtualScroll.sass'\n\n// Components\nimport { VVirtualScrollItem } from './VVirtualScrollItem'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onMounted, ref, watch, watchEffect } from 'vue'\nimport {\n clamp,\n convertToUnit,\n createRange,\n genericComponent,\n useRender,\n} from '@/util'\n\n// Types\nimport type { SlotsToProps } from '@/util'\n\nconst UP = -1\nconst DOWN = 1\n\nexport interface VVirtualScrollSlot<T> {\n item: T\n index: number\n}\n\nexport const VVirtualScroll = genericComponent<new <T>() => {\n $props: {\n items: readonly T[]\n } & SlotsToProps<{\n default: [VVirtualScrollSlot<T>]\n }>\n}>()({\n name: 'VVirtualScroll',\n\n props: {\n items: {\n type: Array,\n default: () => ([]),\n },\n itemHeight: [Number, String],\n visibleItems: [Number, String],\n\n ...makeDimensionProps(),\n },\n\n setup (props, { slots }) {\n const first = ref(0)\n const baseItemHeight = ref(props.itemHeight)\n const itemHeight = computed({\n get: () => parseInt(baseItemHeight.value ?? 0, 10),\n set (val) {\n baseItemHeight.value = val\n },\n })\n const rootEl = ref<HTMLDivElement>()\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = rootEl.value\n })\n const display = useDisplay()\n\n const sizeMap = new Map<any, number>()\n let sizes = createRange(props.items.length).map(() => itemHeight.value)\n const visibleItems = computed(() => {\n return props.visibleItems\n ? parseInt(props.visibleItems, 10)\n : Math.max(12,\n Math.ceil(((contentRect.value?.height ?? display.height.value) / itemHeight.value) * 1.7 + 1)\n )\n })\n\n function handleItemResize (index: number, height: number) {\n itemHeight.value = Math.max(itemHeight.value, height)\n sizes[index] = height\n sizeMap.set(props.items[index], height)\n }\n\n function calculateOffset (index: number) {\n return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0)\n }\n\n function calculateMidPointIndex (scrollTop: number) {\n let start = 0\n let end = props.items.length\n\n while (start <= end) {\n const middle = start + Math.floor((end - start) / 2)\n const middleOffset = calculateOffset(middle)\n\n if (middleOffset === scrollTop) {\n return middle\n } else if (middleOffset < scrollTop) {\n start = middle + 1\n } else if (middleOffset > scrollTop) {\n end = middle - 1\n }\n }\n\n return start\n }\n\n let lastScrollTop = 0\n function handleScroll () {\n if (!rootEl.value || !contentRect.value) return\n\n const height = contentRect.value.height\n const scrollTop = rootEl.value.scrollTop\n const direction = scrollTop < lastScrollTop ? UP : DOWN\n\n const midPointIndex = calculateMidPointIndex(scrollTop + height / 2)\n const buffer = Math.round(visibleItems.value / 3)\n if (direction === UP && midPointIndex <= first.value + (buffer * 2) - 1) {\n first.value = clamp(midPointIndex - buffer, 0, props.items.length)\n } else if (direction === DOWN && midPointIndex >= first.value + (buffer * 2) - 1) {\n first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value)\n }\n\n lastScrollTop = rootEl.value.scrollTop\n }\n\n function scrollToIndex (index: number) {\n if (!rootEl.value) return\n\n const offset = calculateOffset(index)\n rootEl.value.scrollTop = offset\n }\n\n const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value))\n const computedItems = computed(() => props.items.slice(first.value, last.value))\n const paddingTop = computed(() => calculateOffset(first.value))\n const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value))\n\n const { dimensionStyles } = useDimension(props)\n\n onMounted(() => {\n if (!itemHeight.value) {\n // If itemHeight prop is not set, then calculate an estimated height from the average of inital items\n itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / (visibleItems.value)\n }\n })\n\n watch(() => props.items.length, () => {\n sizes = createRange(props.items.length).map(() => itemHeight.value)\n sizeMap.forEach((height, item) => {\n const index = props.items.indexOf(item)\n if (index === -1) {\n sizeMap.delete(item)\n } else {\n sizes[index] = height\n }\n })\n })\n\n useRender(() => (\n <div\n ref={ rootEl }\n class=\"v-virtual-scroll\"\n onScroll={ handleScroll }\n style={ dimensionStyles.value }\n >\n <div\n class=\"v-virtual-scroll__container\"\n style={{\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value),\n }}\n >\n { computedItems.value.map((item, index) => (\n <VVirtualScrollItem\n key={ index }\n dynamicHeight={ !props.itemHeight }\n onUpdate:height={ height => handleItemResize(index + first.value, height) }\n >\n { slots.default?.({ item, index: index + first.value }) }\n </VVirtualScrollItem>\n ))}\n </div>\n </div>\n ))\n\n return {\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType<typeof VVirtualScroll>\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VVirtualScrollItem.mjs","names":["useResizeObserver","useToggleScope","genericComponent","useRender","onUpdated","watch","VVirtualScrollItem","name","props","dynamicHeight","Boolean","emits","height","setup","_ref","emit","slots","resizeRef","contentRect","value","updateHeight","_createVNode","undefined","default"],"sources":["../../../src/labs/VVirtualScroll/VVirtualScrollItem.tsx"],"sourcesContent":["// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { onUpdated, watch } from 'vue'\n\nexport const VVirtualScrollItem = genericComponent()({\n name: 'VVirtualScrollItem',\n\n props: {\n dynamicHeight: Boolean,\n },\n\n emits: {\n 'update:height': (height: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const { resizeRef, contentRect } = useResizeObserver()\n\n useToggleScope(() => props.dynamicHeight, () => {\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height)\n })\n })\n\n function updateHeight () {\n if (props.dynamicHeight && contentRect.value) {\n emit('update:height', contentRect.value.height)\n }\n }\n\n onUpdated(updateHeight)\n\n useRender(() => (\n <div\n ref={ props.dynamicHeight ? resizeRef : undefined }\n class=\"v-virtual-scroll__item\"\n >\n { slots.default?.() }\n </div>\n ))\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc,6CAEvB;AAAA,SACSC,gBAAgB,EAAEC,SAAS;AACpC,SAASC,SAAS,EAAEC,KAAK,QAAQ,KAAK;AAEtC,OAAO,MAAMC,kBAAkB,GAAGJ,gBAAgB,EAAE,CAAC;EACnDK,IAAI,EAAE,oBAAoB;EAE1BC,KAAK,EAAE;IACLC,aAAa,EAAEC;EACjB,CAAC;EAEDC,KAAK,EAAE;IACL,eAAe,EAAGC,MAAc,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,SAAS;MAAEC;IAAY,CAAC,GAAGlB,iBAAiB,EAAE;IAEtDC,cAAc,CAAC,MAAMO,KAAK,CAACC,aAAa,EAAE,MAAM;MAC9CJ,KAAK,CAAC,MAAMa,WAAW,CAACC,KAAK,EAAEP,MAAM,EAAEA,MAAM,IAAI;QAC/C,IAAIA,MAAM,IAAI,IAAI,EAAEG,IAAI,CAAC,eAAe,EAAEH,MAAM,CAAC;MACnD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASQ,YAAYA,CAAA,EAAI;MACvB,IAAIZ,KAAK,CAACC,aAAa,IAAIS,WAAW,CAACC,KAAK,EAAE;QAC5CJ,IAAI,CAAC,eAAe,EAAEG,WAAW,CAACC,KAAK,CAACP,MAAM,CAAC;MACjD;IACF;IAEAR,SAAS,CAACgB,YAAY,CAAC;IAEvBjB,SAAS,CAAC,MAAAkB,YAAA;MAAA,OAEAb,KAAK,CAACC,aAAa,GAAGQ,SAAS,GAAGK,SAAS;MAAA,SAC3C;IAAwB,IAE5BN,KAAK,CAACO,OAAO,IAAI,EAEtB,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["VVirtualScroll"],"sources":["../../../src/labs/VVirtualScroll/index.ts"],"sourcesContent":["export { VVirtualScroll } from './VVirtualScroll'\n"],"mappings":"SAASA,cAAc"}