@sectile/vue 0.15.0 → 0.16.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 (54) hide show
  1. package/README.md +5 -5
  2. package/dist/cascade-select.js +1 -1
  3. package/dist/cascade-select.js.map +1 -1
  4. package/dist/combobox.js +1 -1
  5. package/dist/combobox.js.map +1 -1
  6. package/dist/date-picker.js +1 -1
  7. package/dist/date-picker.js.map +1 -1
  8. package/dist/date-range-picker.js +1 -1
  9. package/dist/date-range-picker.js.map +1 -1
  10. package/dist/date-time-picker.js +1 -1
  11. package/dist/date-time-picker.js.map +1 -1
  12. package/dist/date-time-range-picker.js +1 -1
  13. package/dist/date-time-range-picker.js.map +1 -1
  14. package/dist/internal/date-picker.js +1 -1
  15. package/dist/internal/date-picker.js.map +1 -1
  16. package/dist/internal/virtual-collection.d.ts +45 -24
  17. package/dist/internal/virtual-collection.js +1 -1
  18. package/dist/internal/virtual-collection.js.map +1 -1
  19. package/dist/internal/virtual-core.d.ts +109 -34
  20. package/dist/internal/virtual-core.js +1 -1
  21. package/dist/internal/virtual-core.js.map +1 -1
  22. package/dist/internal/virtual-list.d.ts +58 -85
  23. package/dist/internal/virtual-list.js +1 -1
  24. package/dist/internal/virtual-list.js.map +1 -1
  25. package/dist/menu.js +1 -1
  26. package/dist/menu.js.map +1 -1
  27. package/dist/month-picker.js +1 -1
  28. package/dist/month-picker.js.map +1 -1
  29. package/dist/month-range-picker.js +1 -1
  30. package/dist/month-range-picker.js.map +1 -1
  31. package/dist/range-calendar.js +1 -1
  32. package/dist/range-calendar.js.map +1 -1
  33. package/dist/virtual-core.d.ts +1 -1
  34. package/dist/virtual-core.js +1 -1
  35. package/dist/virtual-core.js.map +1 -1
  36. package/dist/virtual-grid.d.ts +50 -75
  37. package/dist/virtual-grid.js +1 -1
  38. package/dist/virtual-grid.js.map +1 -1
  39. package/dist/virtual-list.d.ts +2 -1
  40. package/dist/virtual-list.js.map +1 -1
  41. package/dist/virtual-masonry.d.ts +51 -76
  42. package/dist/virtual-masonry.js +1 -1
  43. package/dist/virtual-masonry.js.map +1 -1
  44. package/dist/virtual-spatial.d.ts +44 -32
  45. package/dist/virtual-spatial.js +1 -1
  46. package/dist/virtual-spatial.js.map +1 -1
  47. package/dist/year-picker.js +1 -1
  48. package/dist/year-picker.js.map +1 -1
  49. package/dist/year-range-picker.js +1 -1
  50. package/dist/year-range-picker.js.map +1 -1
  51. package/package.json +6 -6
  52. package/dist/internal/virtual-collection-model.d.ts +0 -46
  53. package/dist/internal/virtual-collection-model.js +0 -2
  54. package/dist/internal/virtual-collection-model.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMonthCell,createPickerMove,specializePickerRootPart,createPickerRoot}from"./internal/date-picker.js";import{monthRangePickerCapability}from"./internal/month-range-picker-capability.js";const MonthRangePickerRoot=createPickerRoot(monthRangePickerCapability,"SectileMonthRangePickerRoot",{scope:"month-range-picker",granularity:"month",defaultView:"year"});const MonthRangePickerTrigger=specializePickerRootPart("date-range",PickerTrigger);const MonthRangePickerAnchor=specializePickerRootPart("date-range",PickerAnchor);const MonthRangePickerPortal=PickerPortal;const MonthRangePickerContent=specializePickerRootPart("date-range",PickerContent);const MonthRangePickerGrid=specializePickerRootPart("date-range",PickerGrid);const MonthRangePickerCell=createPickerMonthCell("cell","SectileMonthRangePickerCell");const MonthRangePickerStartInput=createPickerInput("start-input","SectileMonthRangePickerStartInput");const MonthRangePickerEndInput=createPickerInput("end-input","SectileMonthRangePickerEndInput");const MonthRangePickerPreviousYear=specializePickerRootPart("date-range",createPickerMove("year",-1,"SectileMonthRangePickerPreviousYear"));const MonthRangePickerNextYear=specializePickerRootPart("date-range",createPickerMove("year",1,"SectileMonthRangePickerNextYear"));export{MonthRangePickerAnchor,MonthRangePickerCell,MonthRangePickerContent,MonthRangePickerEndInput,MonthRangePickerGrid,MonthRangePickerNextYear,MonthRangePickerPortal,MonthRangePickerPreviousYear,MonthRangePickerRoot,MonthRangePickerStartInput,MonthRangePickerTrigger};
1
+ import{PickerAnchor,PickerContent,PickerGrid,PickerPortal,PickerTrigger,createPickerInput,createPickerMonthCell,createPickerMove,specializePickerRootPart,createPickerRoot}from'./internal/date-picker.js';import{monthRangePickerCapability}from'./internal/month-range-picker-capability.js';export const MonthRangePickerRoot=createPickerRoot(monthRangePickerCapability,'SectileMonthRangePickerRoot',{scope:'month-range-picker',granularity:'month',defaultView:'year'});export const MonthRangePickerTrigger=specializePickerRootPart('date-range',PickerTrigger);export const MonthRangePickerAnchor=specializePickerRootPart('date-range',PickerAnchor);export const MonthRangePickerPortal=PickerPortal;export const MonthRangePickerContent=/* @__PURE__ */specializePickerRootPart('date-range',PickerContent);export const MonthRangePickerGrid=specializePickerRootPart('date-range',PickerGrid);export const MonthRangePickerCell=createPickerMonthCell('cell','SectileMonthRangePickerCell');export const MonthRangePickerStartInput=createPickerInput('start-input','SectileMonthRangePickerStartInput');export const MonthRangePickerEndInput=createPickerInput('end-input','SectileMonthRangePickerEndInput');export const MonthRangePickerPreviousYear=specializePickerRootPart('date-range',createPickerMove('year',-1,'SectileMonthRangePickerPreviousYear'));export const MonthRangePickerNextYear=specializePickerRootPart('date-range',createPickerMove('year',1,'SectileMonthRangePickerNextYear'));
2
2
  //# sourceMappingURL=month-range-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/month-range-picker.ts"],"mappings":"AAEA,OACE,aAAc,cAAe,WAAY,aAAc,cAAe,kBAAmB,sBAAuB,iBAAkB,yBAClI,qBACK,4BACP,OAAS,+BAAkC,8CAiBpC,MAAM,qBAAuB,iBAAiB,2BAA4B,8BAA+B,CAAE,MAAO,qBAAsB,YAAa,QAAS,YAAa,MAAM,CAAE,EAKnL,MAAM,wBAA0B,yBAAyB,aAAc,aAAa,EACpF,MAAM,uBAAyB,yBAAyB,aAAc,YAAY,EAClF,MAAM,uBAAyB,aAC/B,MAAM,wBAA0B,yBAAyB,aAAc,aAAa,EACpF,MAAM,qBAAuB,yBAAyB,aAAc,UAAU,EAC9E,MAAM,qBAAuB,sBAAsB,OAAQ,6BAA6B,EACxF,MAAM,2BAA6B,kBAAkB,cAAe,mCAAmC,EACvG,MAAM,yBAA2B,kBAAkB,YAAa,iCAAiC,EACjG,MAAM,6BAA+B,yBAAyB,aAAc,iBAAiB,OAAQ,GAAI,qCAAqC,CAAC,EAC/I,MAAM,yBAA2B,yBAAyB,aAAc,iBAAiB,OAAQ,EAAG,iCAAiC,CAAC","names":[],"file":"month-range-picker.js"}
1
+ {"version":3,"file":"month-range-picker.js","names":["PickerAnchor","PickerContent","PickerGrid","PickerPortal","PickerTrigger","createPickerInput","createPickerMonthCell","createPickerMove","specializePickerRootPart","createPickerRoot","monthRangePickerCapability","MonthRangePickerRoot","scope","granularity","defaultView","MonthRangePickerTrigger","MonthRangePickerAnchor","MonthRangePickerPortal","MonthRangePickerContent","MonthRangePickerGrid","MonthRangePickerCell","MonthRangePickerStartInput","MonthRangePickerEndInput","MonthRangePickerPreviousYear","MonthRangePickerNextYear"],"sources":["../src/month-range-picker.ts"],"mappings":"OAGEA,aAAcC,cAAeC,WAAYC,aAAcC,cAAeC,kBAAmBC,sBAAuBC,iBAAkBC,yBAClIC,qBACK,mCACEC,+BAAkC,qDAiBpC,MAAMC,qBAAuBF,iBAAiBC,2BAA4B,8BAA+B,CAAEE,MAAO,qBAAsBC,YAAa,QAASC,YAAa,gBAK3K,MAAMC,wBAA0BP,yBAAyB,aAAcJ,sBACvE,MAAMY,uBAAyBR,yBAAyB,aAAcR,qBACtE,MAAMiB,uBAAyBd,oBAC/B,MAAMe,uCAA0CV,yBAAyB,aAAcP,sBACvF,MAAMkB,qBAAuBX,yBAAyB,aAAcN,mBACpE,MAAMkB,qBAAuBd,sBAAsB,OAAQ,sCAC3D,MAAMe,2BAA6BhB,kBAAkB,cAAe,4CACpE,MAAMiB,yBAA2BjB,kBAAkB,YAAa,0CAChE,MAAMkB,6BAA+Bf,yBAAyB,aAAcD,iBAAiB,QAAS,EAAG,+CACzG,MAAMiB,yBAA2BhB,yBAAyB,aAAcD,iBAAiB,OAAQ,EAAG","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{PickerCell,PickerContent,PickerGrid,createPickerMove,createPickerRoot,specializePickerRootPart}from"./internal/date-picker.js";import{rangeCalendarCapability}from"./internal/range-calendar-capability.js";const RangeCalendarRoot=createPickerRoot(rangeCalendarCapability,"SectileRangeCalendarRoot",{scope:"range-calendar",defaultOpen:true,defaultView:"month",inline:true});const RangeCalendarContent=specializePickerRootPart("date-range",PickerContent);const RangeCalendarGrid=specializePickerRootPart("date-range",PickerGrid);const RangeCalendarCell=PickerCell;const RangeCalendarPreviousMonth=specializePickerRootPart("date-range",createPickerMove("month",-1,"SectileRangeCalendarPreviousMonth"));const RangeCalendarNextMonth=specializePickerRootPart("date-range",createPickerMove("month",1,"SectileRangeCalendarNextMonth"));const RangeCalendarPreviousYear=specializePickerRootPart("date-range",createPickerMove("year",-1,"SectileRangeCalendarPreviousYear"));const RangeCalendarNextYear=specializePickerRootPart("date-range",createPickerMove("year",1,"SectileRangeCalendarNextYear"));export{RangeCalendarCell,RangeCalendarContent,RangeCalendarGrid,RangeCalendarNextMonth,RangeCalendarNextYear,RangeCalendarPreviousMonth,RangeCalendarPreviousYear,RangeCalendarRoot};
1
+ import{PickerCell,PickerContent,PickerGrid,createPickerMove,createPickerRoot,specializePickerRootPart}from'./internal/date-picker.js';import{rangeCalendarCapability}from'./internal/range-calendar-capability.js';export const RangeCalendarRoot=createPickerRoot(rangeCalendarCapability,'SectileRangeCalendarRoot',{scope:'range-calendar',defaultOpen:true,defaultView:'month',inline:true});export const RangeCalendarContent=/* @__PURE__ */specializePickerRootPart('date-range',PickerContent);export const RangeCalendarGrid=specializePickerRootPart('date-range',PickerGrid);export const RangeCalendarCell=PickerCell;export const RangeCalendarPreviousMonth=specializePickerRootPart('date-range',createPickerMove('month',-1,'SectileRangeCalendarPreviousMonth'));export const RangeCalendarNextMonth=specializePickerRootPart('date-range',createPickerMove('month',1,'SectileRangeCalendarNextMonth'));export const RangeCalendarPreviousYear=specializePickerRootPart('date-range',createPickerMove('year',-1,'SectileRangeCalendarPreviousYear'));export const RangeCalendarNextYear=specializePickerRootPart('date-range',createPickerMove('year',1,'SectileRangeCalendarNextYear'));
2
2
  //# sourceMappingURL=range-calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/range-calendar.ts"],"mappings":"AAEA,OACE,WAAY,cAAe,WAAY,iBAAkB,iBAAkB,6BAEtE,4BACP,OAAS,4BAA+B,0CAiBjC,MAAM,kBAAoB,iBAAiB,wBAAyB,2BAA4B,CACrG,MAAO,iBACP,YAAa,KACb,YAAa,QACb,OAAQ,KACT,EAKM,MAAM,qBAAuB,yBAAyB,aAAc,aAAa,EACjF,MAAM,kBAAoB,yBAAyB,aAAc,UAAU,EAC3E,MAAM,kBAAoB,WAC1B,MAAM,2BAA6B,yBAAyB,aAAc,iBAAiB,QAAS,GAAI,mCAAmC,CAAC,EAC5I,MAAM,uBAAyB,yBAAyB,aAAc,iBAAiB,QAAS,EAAG,+BAA+B,CAAC,EACnI,MAAM,0BAA4B,yBAAyB,aAAc,iBAAiB,OAAQ,GAAI,kCAAkC,CAAC,EACzI,MAAM,sBAAwB,yBAAyB,aAAc,iBAAiB,OAAQ,EAAG,8BAA8B,CAAC","names":[],"file":"range-calendar.js"}
1
+ {"version":3,"file":"range-calendar.js","names":["PickerCell","PickerContent","PickerGrid","createPickerMove","createPickerRoot","specializePickerRootPart","rangeCalendarCapability","RangeCalendarRoot","scope","defaultOpen","defaultView","inline","RangeCalendarContent","RangeCalendarGrid","RangeCalendarCell","RangeCalendarPreviousMonth","RangeCalendarNextMonth","RangeCalendarPreviousYear","RangeCalendarNextYear"],"sources":["../src/range-calendar.ts"],"mappings":"OAGEA,WAAYC,cAAeC,WAAYC,iBAAkBC,iBAAkBC,6BAEtE,mCACEC,4BAA+B,iDAiBjC,MAAMC,kBAAoBH,iBAAiBE,wBAAyB,2BAA4B,CACrGE,MAAO,iBACPC,YAAa,KACbC,YAAa,QACbC,OAAQ,cAMH,MAAMC,oCAAuCP,yBAAyB,aAAcJ,sBACpF,MAAMY,kBAAoBR,yBAAyB,aAAcH,mBACjE,MAAMY,kBAAoBd,kBAC1B,MAAMe,2BAA6BV,yBAAyB,aAAcF,iBAAiB,SAAU,EAAG,6CACxG,MAAMa,uBAAyBX,yBAAyB,aAAcF,iBAAiB,QAAS,EAAG,yCACnG,MAAMc,0BAA4BZ,yBAAyB,aAAcF,iBAAiB,QAAS,EAAG,4CACtG,MAAMe,sBAAwBb,yBAAyB,aAAcF,iBAAiB,OAAQ,EAAG","ignoreList":[]}
@@ -1 +1 @@
1
- export { VirtualizerContent, VirtualizerItem, VirtualizerRoot, useVirtualizer, type UseVirtualizerOptions, type UseVirtualizerReturn, type VirtualizerContentProps, type VirtualizerItemProps, type VirtualizerItemSize, type VirtualizerRootExpose, type VirtualizerRootProps, type VirtualizerRootSlotProps } from './internal/virtual-core.js';
1
+ export { VirtualizerFooter, VirtualizerHeader, VirtualizerItem, VirtualizerRoot, VirtualizerSurface, useVirtualizer, type UseVirtualizerOptions, type UseVirtualizerReturn, type VirtualizerFrameProps, type VirtualizerHostErrorCode, type VirtualizerItemProps, type VirtualizerItemSize, type VirtualizerOperationResult, type VirtualizerRootExpose, type VirtualizerRootProps, type VirtualizerRootSlotProps, type VirtualizerSurfaceProps } from './internal/virtual-core.js';
@@ -1,2 +1,2 @@
1
- import{VirtualizerContent,VirtualizerItem,VirtualizerRoot,useVirtualizer}from"./internal/virtual-core.js";export{VirtualizerContent,VirtualizerItem,VirtualizerRoot,useVirtualizer};
1
+ import{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer}from"./internal/virtual-core.js";export{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer};
2
2
  //# sourceMappingURL=virtual-core.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/virtual-core.ts"],"mappings":"AAEA,OAAS,mBAAoB,gBAAiB,gBAAiB,mBAAsP","names":[],"file":"virtual-core.js"}
1
+ {"version":3,"sources":["../src/virtual-core.ts"],"mappings":"AAEA,OAAS,kBAAmB,kBAAmB,gBAAiB,gBAAiB,mBAAoB,mBAAkV","names":[],"file":"virtual-core.js"}
@@ -1,29 +1,31 @@
1
1
  import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
2
+ import type { StableID } from '@sectile/core';
3
+ import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
2
4
  import { type TrackGridLayoutState } from '@sectile/virtual/track-grid-layout';
3
5
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
4
- import { type VirtualListEstimate, type VirtualListItemAttributes, type VirtualListKeyResolver } from './internal/virtual-collection-model.js';
5
- import type { VirtualListSlotProps } from './internal/virtual-list.js';
6
- import { type ResponsiveLaneProps, type VirtualCollectionBaseProps } from './internal/virtual-collection.js';
7
- export interface VirtualGridProps<Value = unknown> extends VirtualCollectionBaseProps<Value>, ResponsiveLaneProps {
8
- readonly itemSize?: number;
9
- readonly estimateSize?: VirtualListEstimate<Value>;
6
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
7
+ export interface VirtualGridProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
8
+ readonly sizePolicy: VirtualSizePolicy<Value>;
9
+ readonly lanePolicy: VirtualLanePolicy;
10
10
  readonly rowGap?: number;
11
11
  }
12
- export type VirtualGridPublicProps<Value = unknown> = VirtualGridProps<Value> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
13
- readonly onStateChange?: (state: TrackGridLayoutState<string>) => unknown;
14
- readonly onPlanChange?: (plan: VirtualLayoutPlan<string>) => unknown;
12
+ export type VirtualGridPublicProps<Value = unknown, ID extends StableID = StableID> = VirtualGridProps<Value, ID> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
13
+ readonly onStateChange?: (state: TrackGridLayoutState<ID>) => unknown;
14
+ readonly onPlanChange?: (plan: VirtualLayoutPlan<ID>) => unknown;
15
15
  readonly onError?: VirtualizerErrorHandler;
16
16
  };
17
- export interface VirtualGridSlotProps<Value = unknown> extends VirtualListSlotProps<Value> {
17
+ export interface VirtualGridSlotProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionItemSlotProps<Value, ID> {
18
18
  readonly row: number;
19
19
  readonly column: number;
20
20
  }
21
21
  export interface VirtualGridComponent {
22
- new <Value = unknown>(props: VirtualGridPublicProps<Value>): {
23
- $props: VirtualGridPublicProps<Value>;
22
+ new <Value = unknown, ID extends StableID = StableID>(props: VirtualGridPublicProps<Value, ID>): {
23
+ $props: VirtualGridPublicProps<Value, ID>;
24
24
  $slots: {
25
- default?: (props: VirtualGridSlotProps<Value>) => VNodeChild;
25
+ header?: () => VNodeChild;
26
+ item?: (props: VirtualGridSlotProps<Value, ID>) => VNodeChild;
26
27
  empty?: () => VNodeChild;
28
+ footer?: () => VNodeChild;
27
29
  };
28
30
  };
29
31
  }
@@ -32,33 +34,17 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
32
34
  type: PropType<readonly unknown[]>;
33
35
  required: true;
34
36
  };
35
- getKey: {
36
- type: PropType<VirtualListKeyResolver<unknown>>;
37
+ getID: {
38
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
37
39
  required: true;
38
40
  };
39
- itemSize: {
40
- type: NumberConstructor;
41
- default: undefined;
42
- };
43
- estimateSize: {
44
- type: PropType<VirtualListEstimate<unknown>>;
45
- default: undefined;
46
- };
47
- laneCount: {
48
- type: NumberConstructor;
49
- default: undefined;
50
- };
51
- minLaneSize: {
52
- type: NumberConstructor;
53
- default: number;
54
- };
55
- maxLaneCount: {
56
- type: NumberConstructor;
57
- default: number;
41
+ sizePolicy: {
42
+ type: PropType<VirtualSizePolicy<unknown>>;
43
+ required: true;
58
44
  };
59
- laneGap: {
60
- type: NumberConstructor;
61
- default: number;
45
+ lanePolicy: {
46
+ type: PropType<VirtualLanePolicy>;
47
+ required: true;
62
48
  };
63
49
  rowGap: {
64
50
  type: NumberConstructor;
@@ -68,6 +54,10 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
68
54
  type: PropType<number | Partial<VirtualInsets>>;
69
55
  default: number;
70
56
  };
57
+ viewportInsets: {
58
+ type: PropType<number | Partial<VirtualInsets>>;
59
+ default: undefined;
60
+ };
71
61
  maxItems: {
72
62
  type: NumberConstructor;
73
63
  default: number;
@@ -89,45 +79,29 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
89
79
  default: string;
90
80
  };
91
81
  itemAttributes: {
92
- type: PropType<VirtualListItemAttributes<unknown>>;
82
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
93
83
  default: undefined;
94
84
  };
95
85
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
96
- stateChange: (_state: TrackGridLayoutState<string>) => boolean;
97
- planChange: (_plan: VirtualLayoutPlan<string>) => boolean;
86
+ stateChange: (_state: TrackGridLayoutState<StableID>) => boolean;
87
+ planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
98
88
  error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
99
89
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
100
90
  items: {
101
91
  type: PropType<readonly unknown[]>;
102
92
  required: true;
103
93
  };
104
- getKey: {
105
- type: PropType<VirtualListKeyResolver<unknown>>;
94
+ getID: {
95
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
106
96
  required: true;
107
97
  };
108
- itemSize: {
109
- type: NumberConstructor;
110
- default: undefined;
111
- };
112
- estimateSize: {
113
- type: PropType<VirtualListEstimate<unknown>>;
114
- default: undefined;
115
- };
116
- laneCount: {
117
- type: NumberConstructor;
118
- default: undefined;
119
- };
120
- minLaneSize: {
121
- type: NumberConstructor;
122
- default: number;
123
- };
124
- maxLaneCount: {
125
- type: NumberConstructor;
126
- default: number;
98
+ sizePolicy: {
99
+ type: PropType<VirtualSizePolicy<unknown>>;
100
+ required: true;
127
101
  };
128
- laneGap: {
129
- type: NumberConstructor;
130
- default: number;
102
+ lanePolicy: {
103
+ type: PropType<VirtualLanePolicy>;
104
+ required: true;
131
105
  };
132
106
  rowGap: {
133
107
  type: NumberConstructor;
@@ -137,6 +111,10 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
137
111
  type: PropType<number | Partial<VirtualInsets>>;
138
112
  default: number;
139
113
  };
114
+ viewportInsets: {
115
+ type: PropType<number | Partial<VirtualInsets>>;
116
+ default: undefined;
117
+ };
140
118
  maxItems: {
141
119
  type: NumberConstructor;
142
120
  default: number;
@@ -158,31 +136,28 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
158
136
  default: string;
159
137
  };
160
138
  itemAttributes: {
161
- type: PropType<VirtualListItemAttributes<unknown>>;
139
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
162
140
  default: undefined;
163
141
  };
164
142
  }>> & Readonly<{
165
143
  onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
166
- onPlanChange?: (_plan: VirtualLayoutPlan<string>) => any;
167
- onStateChange?: (_state: TrackGridLayoutState<string>) => any;
144
+ onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
145
+ onStateChange?: (_state: TrackGridLayoutState<StableID>) => any;
168
146
  }>, {
169
- itemSize: number;
170
- estimateSize: VirtualListEstimate<unknown>;
171
- laneCount: number;
172
- minLaneSize: number;
173
- maxLaneCount: number;
174
- laneGap: number;
175
147
  rowGap: number;
176
148
  overscan: number | Partial<import("@sectile/core/geometry").Insets>;
149
+ viewportInsets: number | Partial<import("@sectile/core/geometry").Insets>;
177
150
  maxItems: number;
178
151
  initialViewport: import("@sectile/core/geometry").Rect;
179
152
  as: string;
180
153
  contentAs: string;
181
154
  itemAs: string;
182
- itemAttributes: VirtualListItemAttributes<unknown>;
155
+ itemAttributes: VirtualCollectionItemAttributes<unknown>;
183
156
  }, SlotsType<{
184
- default: (props: VirtualGridSlotProps<unknown>) => VNodeChild;
157
+ header: () => VNodeChild;
158
+ item: (props: VirtualGridSlotProps<unknown>) => VNodeChild;
185
159
  empty: () => VNodeChild;
160
+ footer: () => VNodeChild;
186
161
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
187
162
  export declare const VirtualGrid: typeof VirtualGridRuntime & VirtualGridComponent;
188
163
  export {};
@@ -1,2 +1,2 @@
1
- import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{VirtualizerContent,VirtualizerRoot}from'./internal/virtual-core.js';import{assertVirtualListSizeMode,createPreparedVirtualListSequence,exactExtent,estimatedExtent,prepareVirtualList,requireAutomaticEstimate,requiresDOMBootstrap,updatePreparedVirtualList}from'./internal/virtual-collection-model.js';import{createHighLevelVirtualExpose,nearlyEqual,renderCollectionBootstrapItems,renderHighLevelItems,resolveResponsiveLanes}from'./internal/virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getKey:{type:Function,required:true},itemSize:{type:Number,default:undefined},estimateSize:{type:[Number,Function],default:undefined},laneCount:{type:Number,default:undefined},minLaneSize:{type:Number,default:240},maxLaneCount:{type:Number,default:12},laneGap:{type:Number,default:0},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){assertVirtualListSizeMode(props.itemSize,props.estimateSize);const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualList(props.items,props.getKey,props.maxItems));const initialGeometry=resolveResponsiveLanes(initialViewport?.width??0,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const automaticEstimate=shallowRef();const isBootstrapping=()=>requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=requiresDOMBootstrap(props.itemSize,props.estimateSize)?createVirtualGridState(prepareVirtualList([],props.getKey,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(automaticEstimate.value!==undefined||!requiresDOMBootstrap(props.itemSize,props.estimateSize)||prepared.value.domain.size===0)return;const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.itemSize===undefined?({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.estimateSize,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:exactExtent(height)})}:undefined;const sync=()=>{if(requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualList(prepared.value,props.items,props.getKey);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualList(prepared.value,props.items,props.getKey);const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getKey,props.itemSize,props.estimateSize,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createHighLevelVirtualExpose(root,initialState));return()=>h(VirtualizerRoot,{...attrs,key:isBootstrapping()?'bootstrap':'ready',ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{if(plan.viewport.width>0)viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>h(VirtualizerContent,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).count,prepared.value.domain.size),resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).extent,props.itemAs,props.itemAttributes,(value,key,index,placement)=>slots['default']?.({value,key,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.itemSize===undefined?'width':'both',(value,key,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['default']?.({value,key,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])})})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,exactExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:props.laneGap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const estimate=props.estimateSize??automaticEstimate;const shared=props.itemSize!==undefined?exactExtent(props.itemSize):typeof estimate!=='function'?estimatedExtent(requireAutomaticEstimate(estimate),undefined,0):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.itemSize!==undefined)return exactExtent(props.itemSize);const estimate=requireAutomaticEstimate(props.estimateSize??automaticEstimate);let value=typeof estimate==='number'?estimate:0;if(typeof estimate==='function'){const start=row*columnCount;const end=Math.min(items.length,start+columnCount);for(let index=start;index<end;index+=1)value=Math.max(value,estimate(items[index],index))}return Object.freeze({kind:'unknown',fallback:value})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,estimate,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const resolvedEstimate=requireAutomaticEstimate(estimate??automaticEstimate);const fallback=typeof resolvedEstimate==='function'?resolvedEstimate(items[index],index):resolvedEstimate;maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function syncVirtualGrid(exposed,previous,prepared,items,props,geometry,measured,automaticEstimate){let state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const itemEstimatesChanged=props.itemSize===undefined&&typeof props.estimateSize==='function'&&previous.items!==items;const geometryUnchanged=state.regions.size===prepared.domain.size&&state.rows.size===rowCount&&state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===props.laneGap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent)&&!itemEstimatesChanged;if(geometryUnchanged&&prepared.change===null)return true;const structuralGeometryUnchanged=prepared.change!==null&&state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===props.laneGap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent)&&!itemEstimatesChanged;if(structuralGeometryUnchanged){const rowPatch=rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)});const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createGridRowExtents(rowCount,geometry.count,items,props,automaticEstimate).map((extent,row)=>{if(props.itemSize!==undefined)return extent;const measuredHeight=gridMeasuredRowHeight(row,geometry.count,prepared,items,props.estimateSize,measured,automaticEstimate);return measuredHeight>('fallback'in extent?extent.fallback:extent.value)?exactExtent(measuredHeight):extent});const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:Object.freeze(rowExtents)}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>exactExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./internal/virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./internal/virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualGridState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.sizePolicy,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:createExactVirtualExtent(height)})};const sync=()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);if(next.valueChange!==null&&props.sizePolicy.kind!=='fixed'){const end=next.valueChange.index+next.valueChange.count;for(let index=next.valueChange.index;index<end;index+=1){const id=next.domain.at(index);if(id!==null)measuredHeights.delete(id)}}if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getID,props.sizePolicy,props.lanePolicy,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['item']?.({value,id,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,createExactVirtualExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:geometry.gap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.sizePolicy.kind==='fixed'){return createExactVirtualExtent(props.sizePolicy.extent)}const start=row*columnCount;const end=Math.min(items.length,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){maximum=Math.max(maximum,extentValue(createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)))}return Object.freeze({kind:'unknown',fallback:maximum})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,sizePolicy,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const fallback=extentValue(createVirtualExtent(sizePolicy,items[index],index,automaticEstimate));maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function extentValue(extent){return extent.kind==='unknown'?extent.fallback:extent.value}function createResolvedGridRowExtents(rowCount,columnCount,prepared,items,props,measured,automaticEstimate,startRow=0){const extents=createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow);if(props.sizePolicy.kind==='fixed')return extents;return Object.freeze(extents.map((extent,localRow)=>{const row=startRow+localRow;const measuredHeight=gridMeasuredRowHeight(row,columnCount,prepared,items,props.sizePolicy,measured,automaticEstimate);return measuredHeight>extentValue(extent)?createExactVirtualExtent(measuredHeight):extent}))}function syncVirtualGrid(exposed,_previous,prepared,items,props,geometry,measured,automaticEstimate){const state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const geometryUnchanged=state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===geometry.gap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent);if(geometryUnchanged&&prepared.change===null&&prepared.valueChange===null){return state.regions.size===prepared.domain.size&&state.rows.size===rowCount}if(geometryUnchanged&&prepared.change===null&&prepared.valueChange!==null){if(props.sizePolicy.kind==='fixed')return true;const startRow=Math.floor(prepared.valueChange.index/geometry.count);const endRow=Math.min(rowCount,Math.ceil((prepared.valueChange.index+prepared.valueChange.count)/geometry.count));if(endRow<=startRow)return true;const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:startRow,deleteCount:endRow-startRow,inserted:createResolvedGridRowExtents(endRow-startRow,geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})}));return result.ok}if(geometryUnchanged&&prepared.change!==null){const rowPatch=props.sizePolicy.kind==='fixed'?rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)}):(()=>{const startRow=Math.floor(prepared.change.index/geometry.count);return Object.freeze({index:startRow,deleteCount:Math.max(0,state.rows.size-startRow),inserted:createResolvedGridRowExtents(Math.max(0,rowCount-startRow),geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})})();const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createResolvedGridRowExtents(rowCount,geometry.count,prepared,items,props,measured,automaticEstimate);const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:rowExtents}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>createExactVirtualExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
2
2
  //# sourceMappingURL=virtual-grid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","createAxisMeasurementResolver","VirtualizerContent","VirtualizerRoot","assertVirtualListSizeMode","createPreparedVirtualListSequence","exactExtent","estimatedExtent","prepareVirtualList","requireAutomaticEstimate","requiresDOMBootstrap","updatePreparedVirtualList","createHighLevelVirtualExpose","nearlyEqual","renderCollectionBootstrapItems","renderHighLevelItems","resolveResponsiveLanes","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getKey","Function","itemSize","Number","default","undefined","estimateSize","laneCount","minLaneSize","maxLaneCount","laneGap","rowGap","overscan","Object","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","kind","axis","extent","sync","exposed","next","keys","contains","syncVirtualGrid","flush","key","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","maxRegions","columnCount","estimate","shared","createGridRowExtents","startRow","from","length","_unused","localRow","start","end","fallback","measured","resolvedEstimate","previous","currentColumn","itemEstimatesChanged","geometryUnchanged","change","structuralGeometryUnchanged","rowPatch","deleteCount","inserted","result","mutate","regionPatch","ok","rowExtents","map","measuredHeight","columnPatch"],"sources":["../src/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","rowGap","Number","default","overscan","viewportInsets","undefined","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","kind","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","axis","extent","sync","exposed","next","valueChange","end","keys","contains","syncVirtualGrid","flush","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","gap","maxRegions","columnCount","shared","estimate","createGridRowExtents","startRow","from","length","_unused","localRow","start","extentValue","fallback","measured","createResolvedGridRowExtents","extents","map","measuredHeight","_previous","currentColumn","geometryUnchanged","change","floor","endRow","result","mutate","rowPatch","deleteCount","inserted","ok","regionPatch","rowExtents","columnPatch"],"sources":["../src/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1,2 @@
1
- export { VirtualList, type VirtualCollectionExpose, type VirtualListComponent, type VirtualListEstimate, type VirtualListExpose, type VirtualListItemAttributes, type VirtualListKeyResolver, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './internal/virtual-list.js';
1
+ export { VirtualList, type VirtualListComponent, type VirtualListExpose, type VirtualListIDResolver, type VirtualListItemAttributes, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './internal/virtual-list.js';
2
+ export type { VirtualCollectionExpose, VirtualCollectionItemSlotProps, VirtualCollectionLanePolicyProps, VirtualCollectionPhase, VirtualCollectionSizePolicyProps, VirtualCollectionSlots } from './internal/virtual-collection.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/virtual-list.ts"],"mappings":"AAEA,OAAS,gBAA0Q","names":[],"file":"virtual-list.js"}
1
+ {"version":3,"sources":["../src/virtual-list.ts"],"mappings":"AAAA,OAAS,gBAAiN","names":[],"file":"virtual-list.js"}
@@ -1,30 +1,32 @@
1
1
  import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
2
+ import type { StableID } from '@sectile/core';
3
+ import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
2
4
  import { type MasonryLayoutState, type MasonryPlacement, type MasonryPlacementPolicy } from '@sectile/virtual/masonry-layout';
3
5
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
4
- import { type VirtualListEstimate, type VirtualListItemAttributes, type VirtualListKeyResolver } from './internal/virtual-collection-model.js';
5
- import type { VirtualListSlotProps } from './internal/virtual-list.js';
6
- import { type ResponsiveLaneProps, type VirtualCollectionBaseProps } from './internal/virtual-collection.js';
7
- export interface VirtualMasonryProps<Value = unknown> extends VirtualCollectionBaseProps<Value>, ResponsiveLaneProps {
8
- readonly itemSize?: number;
9
- readonly estimateSize?: VirtualListEstimate<Value>;
6
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
7
+ export interface VirtualMasonryProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
8
+ readonly sizePolicy: VirtualSizePolicy<Value>;
9
+ readonly lanePolicy: VirtualLanePolicy;
10
10
  readonly itemGap?: number;
11
11
  readonly placementPolicy?: MasonryPlacementPolicy;
12
12
  }
13
- export type VirtualMasonryPublicProps<Value = unknown> = VirtualMasonryProps<Value> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
14
- readonly onStateChange?: (state: MasonryLayoutState<string>) => unknown;
15
- readonly onPlanChange?: (plan: VirtualLayoutPlan<string>) => unknown;
13
+ export type VirtualMasonryPublicProps<Value = unknown, ID extends StableID = StableID> = VirtualMasonryProps<Value, ID> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
14
+ readonly onStateChange?: (state: MasonryLayoutState<ID>) => unknown;
15
+ readonly onPlanChange?: (plan: VirtualLayoutPlan<ID>) => unknown;
16
16
  readonly onError?: VirtualizerErrorHandler;
17
17
  };
18
- export interface VirtualMasonrySlotProps<Value = unknown> extends VirtualListSlotProps<Value> {
19
- readonly placement: MasonryPlacement<string>;
18
+ export interface VirtualMasonrySlotProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionItemSlotProps<Value, ID> {
19
+ readonly placement: MasonryPlacement<ID>;
20
20
  readonly lane: number;
21
21
  }
22
22
  export interface VirtualMasonryComponent {
23
- new <Value = unknown>(props: VirtualMasonryPublicProps<Value>): {
24
- $props: VirtualMasonryPublicProps<Value>;
23
+ new <Value = unknown, ID extends StableID = StableID>(props: VirtualMasonryPublicProps<Value, ID>): {
24
+ $props: VirtualMasonryPublicProps<Value, ID>;
25
25
  $slots: {
26
- default?: (props: VirtualMasonrySlotProps<Value>) => VNodeChild;
26
+ header?: () => VNodeChild;
27
+ item?: (props: VirtualMasonrySlotProps<Value, ID>) => VNodeChild;
27
28
  empty?: () => VNodeChild;
29
+ footer?: () => VNodeChild;
28
30
  };
29
31
  };
30
32
  }
@@ -33,33 +35,17 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
33
35
  type: PropType<readonly unknown[]>;
34
36
  required: true;
35
37
  };
36
- getKey: {
37
- type: PropType<VirtualListKeyResolver<unknown>>;
38
+ getID: {
39
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
38
40
  required: true;
39
41
  };
40
- itemSize: {
41
- type: NumberConstructor;
42
- default: undefined;
43
- };
44
- estimateSize: {
45
- type: PropType<VirtualListEstimate<unknown>>;
46
- default: undefined;
47
- };
48
- laneCount: {
49
- type: NumberConstructor;
50
- default: undefined;
51
- };
52
- minLaneSize: {
53
- type: NumberConstructor;
54
- default: number;
55
- };
56
- maxLaneCount: {
57
- type: NumberConstructor;
58
- default: number;
42
+ sizePolicy: {
43
+ type: PropType<VirtualSizePolicy<unknown>>;
44
+ required: true;
59
45
  };
60
- laneGap: {
61
- type: NumberConstructor;
62
- default: number;
46
+ lanePolicy: {
47
+ type: PropType<VirtualLanePolicy>;
48
+ required: true;
63
49
  };
64
50
  itemGap: {
65
51
  type: NumberConstructor;
@@ -73,6 +59,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
73
59
  type: PropType<number | Partial<VirtualInsets>>;
74
60
  default: number;
75
61
  };
62
+ viewportInsets: {
63
+ type: PropType<number | Partial<VirtualInsets>>;
64
+ default: undefined;
65
+ };
76
66
  maxItems: {
77
67
  type: NumberConstructor;
78
68
  default: number;
@@ -94,45 +84,29 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
94
84
  default: string;
95
85
  };
96
86
  itemAttributes: {
97
- type: PropType<VirtualListItemAttributes<unknown>>;
87
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
98
88
  default: undefined;
99
89
  };
100
90
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
101
- stateChange: (_state: MasonryLayoutState<string>) => boolean;
102
- planChange: (_plan: VirtualLayoutPlan<string>) => boolean;
91
+ stateChange: (_state: MasonryLayoutState<StableID>) => boolean;
92
+ planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
103
93
  error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
104
94
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
105
95
  items: {
106
96
  type: PropType<readonly unknown[]>;
107
97
  required: true;
108
98
  };
109
- getKey: {
110
- type: PropType<VirtualListKeyResolver<unknown>>;
99
+ getID: {
100
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
111
101
  required: true;
112
102
  };
113
- itemSize: {
114
- type: NumberConstructor;
115
- default: undefined;
116
- };
117
- estimateSize: {
118
- type: PropType<VirtualListEstimate<unknown>>;
119
- default: undefined;
120
- };
121
- laneCount: {
122
- type: NumberConstructor;
123
- default: undefined;
124
- };
125
- minLaneSize: {
126
- type: NumberConstructor;
127
- default: number;
128
- };
129
- maxLaneCount: {
130
- type: NumberConstructor;
131
- default: number;
103
+ sizePolicy: {
104
+ type: PropType<VirtualSizePolicy<unknown>>;
105
+ required: true;
132
106
  };
133
- laneGap: {
134
- type: NumberConstructor;
135
- default: number;
107
+ lanePolicy: {
108
+ type: PropType<VirtualLanePolicy>;
109
+ required: true;
136
110
  };
137
111
  itemGap: {
138
112
  type: NumberConstructor;
@@ -146,6 +120,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
146
120
  type: PropType<number | Partial<VirtualInsets>>;
147
121
  default: number;
148
122
  };
123
+ viewportInsets: {
124
+ type: PropType<number | Partial<VirtualInsets>>;
125
+ default: undefined;
126
+ };
149
127
  maxItems: {
150
128
  type: NumberConstructor;
151
129
  default: number;
@@ -167,32 +145,29 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
167
145
  default: string;
168
146
  };
169
147
  itemAttributes: {
170
- type: PropType<VirtualListItemAttributes<unknown>>;
148
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
171
149
  default: undefined;
172
150
  };
173
151
  }>> & Readonly<{
174
152
  onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
175
- onPlanChange?: (_plan: VirtualLayoutPlan<string>) => any;
176
- onStateChange?: (_state: MasonryLayoutState<string>) => any;
153
+ onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
154
+ onStateChange?: (_state: MasonryLayoutState<StableID>) => any;
177
155
  }>, {
178
- itemSize: number;
179
- estimateSize: VirtualListEstimate<unknown>;
180
- laneCount: number;
181
- minLaneSize: number;
182
- maxLaneCount: number;
183
- laneGap: number;
184
156
  itemGap: number;
185
157
  placementPolicy: MasonryPlacementPolicy;
186
158
  overscan: number | Partial<import("@sectile/core/geometry").Insets>;
159
+ viewportInsets: number | Partial<import("@sectile/core/geometry").Insets>;
187
160
  maxItems: number;
188
161
  initialViewport: import("@sectile/core/geometry").Rect;
189
162
  as: string;
190
163
  contentAs: string;
191
164
  itemAs: string;
192
- itemAttributes: VirtualListItemAttributes<unknown>;
165
+ itemAttributes: VirtualCollectionItemAttributes<unknown>;
193
166
  }, SlotsType<{
194
- default: (props: VirtualMasonrySlotProps<unknown>) => VNodeChild;
167
+ header: () => VNodeChild;
168
+ item: (props: VirtualMasonrySlotProps<unknown>) => VNodeChild;
195
169
  empty: () => VNodeChild;
170
+ footer: () => VNodeChild;
196
171
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
197
172
  export declare const VirtualMasonry: typeof VirtualMasonryRuntime & VirtualMasonryComponent;
198
173
  export {};