@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.
- package/README.md +5 -5
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/date-picker.js +1 -1
- package/dist/date-picker.js.map +1 -1
- package/dist/date-range-picker.js +1 -1
- package/dist/date-range-picker.js.map +1 -1
- package/dist/date-time-picker.js +1 -1
- package/dist/date-time-picker.js.map +1 -1
- package/dist/date-time-range-picker.js +1 -1
- package/dist/date-time-range-picker.js.map +1 -1
- package/dist/internal/date-picker.js +1 -1
- package/dist/internal/date-picker.js.map +1 -1
- package/dist/internal/virtual-collection.d.ts +45 -24
- package/dist/internal/virtual-collection.js +1 -1
- package/dist/internal/virtual-collection.js.map +1 -1
- package/dist/internal/virtual-core.d.ts +109 -34
- package/dist/internal/virtual-core.js +1 -1
- package/dist/internal/virtual-core.js.map +1 -1
- package/dist/internal/virtual-list.d.ts +58 -85
- package/dist/internal/virtual-list.js +1 -1
- package/dist/internal/virtual-list.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/month-picker.js +1 -1
- package/dist/month-picker.js.map +1 -1
- package/dist/month-range-picker.js +1 -1
- package/dist/month-range-picker.js.map +1 -1
- package/dist/range-calendar.js +1 -1
- package/dist/range-calendar.js.map +1 -1
- package/dist/virtual-core.d.ts +1 -1
- package/dist/virtual-core.js +1 -1
- package/dist/virtual-core.js.map +1 -1
- package/dist/virtual-grid.d.ts +50 -75
- package/dist/virtual-grid.js +1 -1
- package/dist/virtual-grid.js.map +1 -1
- package/dist/virtual-list.d.ts +2 -1
- package/dist/virtual-list.js.map +1 -1
- package/dist/virtual-masonry.d.ts +51 -76
- package/dist/virtual-masonry.js +1 -1
- package/dist/virtual-masonry.js.map +1 -1
- package/dist/virtual-spatial.d.ts +44 -32
- package/dist/virtual-spatial.js +1 -1
- package/dist/virtual-spatial.js.map +1 -1
- package/dist/year-picker.js +1 -1
- package/dist/year-picker.js.map +1 -1
- package/dist/year-range-picker.js +1 -1
- package/dist/year-range-picker.js.map +1 -1
- package/package.json +6 -6
- package/dist/internal/virtual-collection-model.d.ts +0 -46
- package/dist/internal/virtual-collection-model.js +0 -2
- 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
|
|
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":"
|
|
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":[]}
|
package/dist/range-calendar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{PickerCell,PickerContent,PickerGrid,createPickerMove,createPickerRoot,specializePickerRootPart}from
|
|
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":"
|
|
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":[]}
|
package/dist/virtual-core.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
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';
|
package/dist/virtual-core.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
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
|
package/dist/virtual-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/virtual-core.ts"],"mappings":"AAEA,OAAS,
|
|
1
|
+
{"version":3,"sources":["../src/virtual-core.ts"],"mappings":"AAEA,OAAS,kBAAmB,kBAAmB,gBAAiB,gBAAiB,mBAAoB,mBAAkV","names":[],"file":"virtual-core.js"}
|
package/dist/virtual-grid.d.ts
CHANGED
|
@@ -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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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<
|
|
14
|
-
readonly onPlanChange?: (plan: VirtualLayoutPlan<
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
type: PropType<
|
|
37
|
+
getID: {
|
|
38
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
37
39
|
required: true;
|
|
38
40
|
};
|
|
39
|
-
|
|
40
|
-
type:
|
|
41
|
-
|
|
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
|
-
|
|
60
|
-
type:
|
|
61
|
-
|
|
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<
|
|
82
|
+
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
93
83
|
default: undefined;
|
|
94
84
|
};
|
|
95
85
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
96
|
-
stateChange: (_state: TrackGridLayoutState<
|
|
97
|
-
planChange: (_plan: VirtualLayoutPlan<
|
|
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
|
-
|
|
105
|
-
type: PropType<
|
|
94
|
+
getID: {
|
|
95
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
106
96
|
required: true;
|
|
107
97
|
};
|
|
108
|
-
|
|
109
|
-
type:
|
|
110
|
-
|
|
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
|
-
|
|
129
|
-
type:
|
|
130
|
-
|
|
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<
|
|
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<
|
|
167
|
-
onStateChange?: (_state: TrackGridLayoutState<
|
|
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:
|
|
155
|
+
itemAttributes: VirtualCollectionItemAttributes<unknown>;
|
|
183
156
|
}, SlotsType<{
|
|
184
|
-
|
|
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 {};
|
package/dist/virtual-grid.js
CHANGED
|
@@ -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&¤tColumn?.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&¤tColumn?.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&¤tColumn?.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
|
package/dist/virtual-grid.js.map
CHANGED
|
@@ -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":"OAASA,gBAAiBC,EAAGC,SAAUC,gBAAiBC,UAAWC,WAAYC,UAAqI,aAGlNC,yBACAC,oBACAC,2BACAC,yCAIK,qCACEC,kBAAmBC,6BAA+D,uCAClFC,2BAA4BC,4BAA6G,iDACsB,8BAC/JC,kBAAmBC,kBAAmBC,gBAAiBC,uBAAqF,oCAC5IC,8BAA+BC,YAAaC,yBAA0BC,+BAAgCC,qBAAsBC,oCAAqN,mCAuC1V,MAAMC,kCAAqCzB,gBAAgB,CACzD0B,KAAM,qBACNC,aAAc,MACdC,MAAO,CACLC,MAAO,CAAEC,KAAMC,MAAkDC,SAAU,MAC3EC,MAAO,CAAEH,KAAMI,SAAsEF,SAAU,MAC/FG,WAAY,CAAEL,KAAMM,OAAgDJ,SAAU,MAC9EK,WAAY,CAAEP,KAAMM,OAAuCJ,SAAU,MACrEM,OAAQ,CAAER,KAAMS,OAAQC,QAAS,GACjCC,SAAU,CAAEX,KAAM,CAACS,OAAQH,QAAsDI,QAAS,KAC1FE,eAAgB,CAAEZ,KAAM,CAACS,OAAQH,QAAsDI,QAASG,WAChGC,SAAU,CAAEd,KAAMS,OAAQC,QAAS,WACnCK,gBAAiB,CAAEf,KAAMM,OAAiCI,QAASG,WACnEG,GAAI,CAAEhB,KAAMiB,OAAQP,QAAS,OAC7BQ,UAAW,CAAElB,KAAMiB,OAAQP,QAAS,OACpCS,OAAQ,CAAEnB,KAAMiB,OAAQP,QAAS,OACjCU,eAAgB,CAAEpB,KAAMI,SAAgEM,QAASG,YAEnGQ,MAAO,CACLC,YAAcC,QAAoD,KAClEC,WAAaC,OAAgD,KAC7DC,MAAQC,QAA4D,MAEtEC,MAAOtB,OAMP,KAAAuB,CAAM/B,OAAOgC,MAAOC,KAAMC,OAAQJ,QAChC,MAAMb,gBAAkBjB,MAAMiB,kBAAoBF,UAC9CA,UACAP,OAAO2B,OAAO,IAAKnC,MAAMiB,kBAC7B,MAAMmB,SAAW3D,WAAWgB,yBAAyBO,MAAMC,MAAOD,MAAMK,MAAOL,MAAMgB,WACrF,MAAMqB,gBAAkBxD,2BACtBoC,iBAAiBqB,OAAS,EAC1BtC,MAAMS,YAER,MAAM8B,kBAAoB9D,aAC1B,MAAM+D,gBAAkB,IAAe1D,qCAAqCkB,MAAMO,aAC7EgC,kBAAkBE,QAAU1B,WAC5BqB,SAASK,MAAMC,OAAOC,KAAO,EAClC,MAAMC,aAAe9D,qCAAqCkB,MAAMO,YAC5DsC,uBACEpD,yBAAyB,GAAIO,MAAMK,MAAOL,MAAMgB,UAChD,GACAhB,MACAqC,gBACA,GAEFQ,uBAAuBT,SAASK,MAAOzC,MAAMC,MAAOD,MAAOqC,iBAC/D,MAAMS,YAAcrE,WAAWmE,cAC/B,MAAMG,KAAOtE,aACb,MAAMuE,cAAgBvE,WAAWwC,iBAAiBqB,OAAS,GAC3D,MAAMW,gBAAkB,IAAIC,IAC5B,MAAMC,kBAAoB,IAAID,IAC9B,IAAIE,mBAAqB,MACzB,IAAIC,SAAW,MACf,MAAMC,iBAAmB,CAACC,MAAed,SACvC,MAAMe,QAAUf,iBAAiBgB,YAAchB,MAAQ,KACvD,GAAIe,UAAY,KAAML,kBAAkBO,OAAOH,WAC1C,CACHJ,kBAAkBQ,IAAIJ,MAAOC,SAC7BI,mBACF,GAEF,MAAMC,kBAAoB,KACxB,IAAKrB,kBAAmB,OACxB,MAAMsB,SAAWjF,2BACfmE,cAAcP,MACdzC,MAAMS,YAER,MAAMsD,MAAQC,KAAKC,IAAIH,SAASC,MAAO3B,SAASK,MAAMC,OAAOC,MAC7D,IAAIuB,QAAU,EACd,IAAK,IAAIX,MAAQ,EAAGA,MAAQQ,MAAOR,OAAS,EAAG,CAC7C,MAAMC,QAAUL,kBAAkBgB,IAAIZ,OACtC,GAAIC,UAAYzC,UAAW,OAC3B,MAAMqD,OAASZ,QAAQa,wBAAwBD,OAC/C,IAAKzD,OAAO2D,SAASF,SAAWA,QAAU,EAAG,OAC7CF,QAAUF,KAAKO,IAAIL,QAASE,OAC9B,CACA7B,kBAAkBE,MAAQyB,QAC1Bf,kBAAkBqB,QAClB1B,YAAYL,MAAQI,uBAClBT,SAASK,MACTzC,MAAMC,MACND,MACA8D,SACAI,UAGJ,SAASN,oBACP,GACEP,UACGD,oBACAb,kBAAkBE,QAAU1B,WAC5BqB,SAASK,MAAMC,OAAOC,OAAS,EAClC,OACFS,mBAAqB,UAChB9E,SAAS,KACZ8E,mBAAqB,MACrB,IAAKC,SAAUQ,qBAEnB,CACArF,UAAUoF,mBACVrF,gBAAgB,KACd8E,SAAW,KACXF,kBAAkBqB,UAEpB,MAAMC,QAAUzE,MAAMO,WAAWmE,OAAS,QACtC3D,UACA,EAAIyC,QAASmB,UAAWC,UACtB,MAAMC,OAASrB,QAAQa,wBACvB,GAAIQ,OAAOT,QAAU,EAAG,OAAO,KAC/BnB,gBAAgBU,IAAIgB,UAAUG,GAAID,OAAOT,QACzC,MAAMW,KAAOH,MACb,MAAMI,OAASD,KAAKE,QAAQC,GAAGP,UAAUpB,OACzC,GAAIyB,SAAWjE,UAAW,OAAO,KACjC,MAAMqD,OAASe,sBACbH,OAAOI,IACPL,KAAKM,QAAQ1C,KACbP,SAASK,MACTzC,MAAMC,MACND,MAAMO,WACN0C,gBACAV,kBAAkBE,OAEpB,MAAM6C,QAAUP,KAAKQ,KAAKC,SAASR,OAAOI,KAC1C,GAAIE,SAASZ,OAAS,SAAWlF,YAAY8F,QAAQ7C,MAAO2B,QAAS,CACnE,OAAO,IACT,CACA,OAAO5D,OAAO2B,OAAO,CACnBsD,KAAM,MACNlC,MAAOyB,OAAOI,IACdM,OAAQ/G,yBAAyByF,SAEpC,EAEL,MAAMuB,KAAO,KACX,GAAI7G,qCAAqCkB,MAAMO,aAAegC,kBAAkBE,QAAU1B,UAAW,CACnGqB,SAASK,MAAQ7C,gCAAgCwC,SAASK,MAAOzC,MAAMC,MAAOD,MAAMK,OACpFuD,oBACA,MACF,CACA,MAAMgC,QAAU7C,KAAKN,MACrB,GAAImD,UAAY7E,UAAW,OAC3B,MAAM8E,KAAOjG,gCAAgCwC,SAASK,MAAOzC,MAAMC,MAAOD,MAAMK,OAChF,MAAMyD,SAAWjF,2BAA2BmE,cAAcP,MAAOzC,MAAMS,YACvE,GAAIoF,KAAKC,cAAgB,MAAQ9F,MAAMO,WAAWmE,OAAS,QAAS,CAClE,MAAMqB,IAAMF,KAAKC,YAAYvC,MAAQsC,KAAKC,YAAY/B,MACtD,IAAK,IAAIR,MAAQsC,KAAKC,YAAYvC,MAAOA,MAAQwC,IAAKxC,OAAS,EAAG,CAChE,MAAMuB,GAAKe,KAAKnD,OAAOwC,GAAG3B,OAC1B,GAAIuB,KAAO,KAAM7B,gBAAgBS,OAAOoB,GAC1C,CACF,CACA,GAAI7B,gBAAgBN,KAAO,MAAO,CAChC,IAAK,MAAMmC,MAAM7B,gBAAgB+C,OAAQ,CACvC,IAAKH,KAAKnD,OAAOuD,SAASnB,IAAK7B,gBAAgBS,OAAOoB,GACxD,CACF,CACA,GAAIoB,gBACFN,QACAxD,SAASK,MACToD,KACA7F,MAAMC,MACND,MACA8D,SACAb,gBACAV,kBAAkBE,OACjB,CACDL,SAASK,MAAQoD,IACnB,GAEFnH,MACE,IAAM,CACJsB,MAAMC,MACND,MAAMK,MACNL,MAAMO,WACNP,MAAMS,WACNT,MAAMU,OACNsC,cAAcP,OAEhBkD,KACA,CAAEQ,MAAO,SAEXjE,OAAO3C,8BACLwD,KACAH,aACA,IAAMR,SAASK,MAAMC,OAAOC,OAAS,EACjC,QACAH,kBACE,YACA,UAGR,MAAO,IAAkBnE,EAAEgB,gBAAiB,IACvC2C,MACHoE,IAAKrD,KACLsD,aAAcvD,YAAYL,MAC1B6D,SAAUpH,wBACV2B,SAAUb,MAAMa,YACZb,MAAMc,iBAAmBC,UAAY,GAAK,CAAED,eAAgBd,MAAMc,mBAClEG,kBAAoBF,UAAY,GAAK,CAAEE,oBACvCwD,UAAY1D,UAAY,GAAK,CAC/B0D,SAEFvD,GAAIlB,MAAMkB,GACV,sBAAuB,eACvB,aAAckB,SAASK,MAAMC,OAAOC,OAAS,EACzC,QACAH,kBACE,YACA,QACN+D,cAAgB3B,OAAkB3C,KAAK,cAAe2C,OACtD4B,aAAeC,OACbzD,cAAcP,MAAQgE,KAAKC,SAASpE,MACpCL,KAAK,aAAcwE,OAErBE,QAAU/E,OAAkDK,KAAK,QAASL,QACzE,CACDhB,QAAS,EAAGgG,cAA2C,CACrD9E,MAAM,YAAcf,UAChB,KACA1C,EAAEe,kBAAmB,GAAI,CAAEwB,QAAS,IAAMkB,MAAM,gBACpDzD,EAAEiB,mBAAoB,CAAE4B,GAAIlB,MAAMoB,WAAa,CAC7CR,QAAS,IAAM4B,kBACX9C,+BACE,eACA0C,SAASK,MACTzC,MAAMC,MACN+D,KAAKC,IACHpF,2BACEmE,cAAcP,MACdzC,MAAMS,YACNsD,MACF3B,SAASK,MAAMC,OAAOC,MAExB9D,2BACEmE,cAAcP,MACdzC,MAAMS,YACNiF,OACF1F,MAAMqB,OACNrB,MAAMsB,eACN,CAACmB,MAAOqC,GAAIvB,MAAOoB,YAAc7C,MAAM,UAAU,CAC/CW,MACAqC,GACAvB,MACAoB,UACAS,IAAK,EACLyB,OAAQtD,QAEVD,kBAEF3D,qBACE,eACAiH,WACAxE,SAASK,MACTzC,MAAMC,MACND,MAAMqB,OACNrB,MAAMsB,eACNtB,MAAMO,WAAWmE,OAAS,QAAU,OAAS,QAC7C,CAACjC,MAAOqC,GAAIvB,MAAOoB,aACjB,MAAMI,KAAOhC,KAAKN,OAAOmC,MACzB,MAAMI,OAASD,MAAME,QAAQC,GAAGP,UAAUpB,OAC1C,OAAOzB,MAAM,UAAU,CACrBW,MACAqC,GACAvB,MACAoB,UACAS,IAAKJ,QAAQI,KAAO,EACpByB,OAAQ7B,QAAQ6B,QAAU,KAG9B/E,MAAM,YAGdA,MAAM,YAAcf,UAChB,KACA1C,EAAEc,kBAAmB,GAAI,CAAEyB,QAAS,IAAMkB,MAAM,kBAG1D,WAGK,MAAMgF,YAAcjH,mBAG3B,SAASgD,uBACPT,SACAnC,MACAD,MAKA8D,SACAvB,mBAEA,MAAMwE,SAAW/C,KAAKgD,KAAK5E,SAASM,OAAOC,KAAOmB,SAASC,OAC3D,OAAO9E,2BACLgI,yBAAyBF,SAAUjD,SAASC,MAAO9D,MAAOD,MAAOuC,mBACjEvD,yBACE8E,SAASC,MACTpF,yBAAyBmF,SAAS4B,QAClC,CAAE1E,SAAUhB,MAAMgB,WAEpBoB,SAASM,OAAOwE,IAChB,CACExG,OAAQV,MAAMU,OACdyG,UAAWrD,SAASsD,IACpBC,WAAYrH,MAAMgB,UAGxB,CAEA,SAASiG,yBACPF,SACAO,YACArH,MACAD,MAIAuC,mBAEA,MAAMgF,OAASvH,MAAMO,WAAWmE,OAAS,SACpC1E,MAAMO,WAAWmE,OAAS,YAE3B1E,MAAMO,WAAWmE,OAAS,oBAChB1E,MAAMO,WAAWiH,WAAa,SAExC5I,oBACEoB,MAAMO,WACNN,MAAM,GACN,EACAsC,mBAEF,KACJ,OAAOgF,SAAW,KACdxI,kBACE0I,qBACEV,SACAO,YACArH,MACAD,MACAuC,mBAEF,CAAEvB,SAAUhB,MAAMgB,WAEpBhC,yBAAyB+H,SAAUQ,OAAQ,CAAEvG,SAAUhB,MAAMgB,UACnE,CAEA,SAASyG,qBACPV,SACAO,YACArH,MACAD,MAGAuC,kBACAmF,SAAW,GAEX,OAAOlH,OAAO2B,OAAOhC,MAAMwH,KAAK,CAAEC,OAAQb,UAAY,CAACc,QAASC,YAC9D,MAAM1C,IAAMsC,SAAWI,SACvB,GAAI9H,MAAMO,WAAWmE,OAAS,QAAS,CACrC,OAAO/F,yBAAyBqB,MAAMO,WAAWmF,OACnD,CACA,MAAMqC,MAAQ3C,IAAMkC,YACpB,MAAMvB,IAAM/B,KAAKC,IAAIhE,MAAM2H,OAAQG,MAAQT,aAC3C,IAAIpD,QAAU,EACd,IAAK,IAAIX,MAAQwE,MAAOxE,MAAQwC,IAAKxC,OAAS,EAAG,CAC/CW,QAAUF,KAAKO,IACbL,QACA8D,YAAYpJ,oBACVoB,MAAMO,WACNN,MAAMsD,OACNA,MACAhB,oBAGN,CACA,OAAO/B,OAAO2B,OAAO,CAAEuC,KAAM,UAAoBuD,SAAU/D,YAE/D,CAEA,SAASiB,sBACPC,IACAkC,YACAlF,SACAnC,MACAM,WACA2H,SACA3F,mBAEA,MAAMwF,MAAQ3C,IAAMkC,YACpB,MAAMvB,IAAM/B,KAAKC,IAAI7B,SAASM,OAAOC,KAAMoF,MAAQT,aACnD,IAAIpD,QAAU,EACd,IAAK,IAAIX,MAAQwE,MAAOxE,MAAQwC,IAAKxC,OAAS,EAAG,CAC/C,MAAMuB,GAAK1C,SAASM,OAAOwC,GAAG3B,OAC9B,MAAM0E,SAAWD,YAAYpJ,oBAC3B2B,WACAN,MAAMsD,OACNA,MACAhB,oBAEF2B,QAAUF,KAAKO,IAAIL,QAASgE,SAAS/D,IAAIW,KAAOmD,SAClD,CACA,OAAO/D,OACT,CAEA,SAAS8D,YAAYtC,QACnB,OAAOA,OAAOhB,OAAS,UAAYgB,OAAOuC,SAAWvC,OAAOjD,KAC9D,CAEA,SAAS0F,6BACPpB,SACAO,YACAlF,SACAnC,MACAD,MACAkI,SACA3F,kBACAmF,SAAW,GAEX,MAAMU,QAAUX,qBACdV,SACAO,YACArH,MACAD,MACAuC,kBACAmF,UAEF,GAAI1H,MAAMO,WAAWmE,OAAS,QAAS,OAAO0D,QAC9C,OAAO5H,OAAO2B,OAAOiG,QAAQC,IAAI,CAAC3C,OAAQoC,YACxC,MAAM1C,IAAMsC,SAAWI,SACvB,MAAMQ,eAAiBnD,sBACrBC,IACAkC,YACAlF,SACAnC,MACAD,MAAMO,WACN2H,SACA3F,mBAEF,OAAO+F,eAAiBN,YAAYtC,QAChC/G,yBAAyB2J,gBACzB5C,SAER,CAEA,SAASQ,gBACPN,QACA2C,UACAnG,SACAnC,MACAD,MAKA8D,SACAoE,SACA3F,mBAEA,MAAMqC,MAAQgB,QAAQhB,MACtB,MAAMmC,SAAW/C,KAAKgD,KAAK5E,SAASM,OAAOC,KAAOmB,SAASC,OAC3D,MAAMyE,cAAgB5D,MAAMS,QAAQG,SAAS,GAC7C,MAAMiD,kBACJ7D,MAAMS,QAAQ1C,OAASmB,SAASC,OAC7Ba,MAAMlE,SAAWV,MAAMU,QACvBkE,MAAMuC,YAAcrD,SAASsD,KAC7BoB,eAAe9D,OAAS,SACxBlF,YAAYgJ,cAAc/F,MAAOqB,SAAS4B,QAG/C,GAAI+C,mBAAqBrG,SAASsG,SAAW,MAAQtG,SAAS0D,cAAgB,KAAM,CAClF,OAAOlB,MAAMK,QAAQtC,OAASP,SAASM,OAAOC,MAAQiC,MAAMW,KAAK5C,OAASoE,QAC5E,CAEA,GAAI0B,mBAAqBrG,SAASsG,SAAW,MAAQtG,SAAS0D,cAAgB,KAAM,CAClF,GAAI9F,MAAMO,WAAWmE,OAAS,QAAS,OAAO,KAC9C,MAAMgD,SAAW1D,KAAK2E,MAAMvG,SAAS0D,YAAYvC,MAAQO,SAASC,OAClE,MAAM6E,OAAS5E,KAAKC,IAClB8C,SACA/C,KAAKgD,MACF5E,SAAS0D,YAAYvC,MAAQnB,SAAS0D,YAAY/B,OAASD,SAASC,QAGzE,GAAI6E,QAAUlB,SAAU,OAAO,KAC/B,MAAMmB,OAASjD,QAAQkD,OAAOtI,OAAO2B,OAAO,CAC1CjC,KAAM,oBACN6I,SAAUvI,OAAO2B,OAAO,CACtBoB,MAAOmE,SACPsB,YAAaJ,OAASlB,SACtBuB,SAAUd,6BACRS,OAASlB,SACT5D,SAASC,MACT3B,SACAnC,MACAD,MACAkI,SACA3F,kBACAmF,eAIN,OAAOmB,OAAOK,EAChB,CAEA,GAAIT,mBAAqBrG,SAASsG,SAAW,KAAM,CACjD,MAAMK,SAAW/I,MAAMO,WAAWmE,OAAS,QACvCqC,WAAanC,MAAMW,KAAK5C,KACtB5B,UACAgG,SAAWnC,MAAMW,KAAK5C,KACpBnC,OAAO2B,OAAO,CACZoB,MAAOwD,SACPiC,YAAapE,MAAMW,KAAK5C,KAAOoE,SAC/BkC,SAAUzI,OAAO2B,OAAO,MAE1B3B,OAAO2B,OAAO,CACZoB,MAAOqB,MAAMW,KAAK5C,KAClBqG,YAAa,EACbC,SAAUxB,qBACRV,SAAWnC,MAAMW,KAAK5C,KACtBmB,SAASC,MACT9D,MACAD,MACAuC,kBACAqC,MAAMW,KAAK5C,QAGnB,MACE,MAAM+E,SAAW1D,KAAK2E,MAAMvG,SAASsG,OAAQnF,MAAQO,SAASC,OAC9D,OAAOvD,OAAO2B,OAAO,CACnBoB,MAAOmE,SACPsB,YAAahF,KAAKO,IAAI,EAAGK,MAAMW,KAAK5C,KAAO+E,UAC3CuB,SAAUd,6BACRnE,KAAKO,IAAI,EAAGwC,SAAWW,UACvB5D,SAASC,MACT3B,SACAnC,MACAD,MACAkI,SACA3F,kBACAmF,WAGL,EAhBD,GAiBJ,MAAMmB,OAASjD,QAAQkD,OAAOtI,OAAO2B,OAAO,CAC1CjC,KAAM,uBACF6I,WAAahI,UAAY,GAAK,CAAEgI,UACpCI,YAAa3I,OAAO2B,OAAO,CACzBjC,KAAM,SACNqD,MAAOnB,SAASsG,OAAOnF,MACvByF,YAAa5G,SAASsG,OAAOM,YAC7BC,SAAU7G,SAASsG,OAAOO,cAG9B,OAAOJ,OAAOK,EAChB,CAEA,MAAME,WAAajB,6BACjBpB,SACAjD,SAASC,MACT3B,SACAnC,MACAD,MACAkI,SACA3F,mBAEF,MAAMsG,OAASjD,QAAQkD,OAAOtI,OAAO2B,OAAO,CAC1CjC,KAAM,oBACN6I,SAAUvI,OAAO2B,OAAO,CACtBoB,MAAO,EACPyF,YAAapE,MAAMW,KAAK5C,KACxBsG,SAAUG,aAEZC,YAAa7I,OAAO2B,OAAO,CACzBoB,MAAO,EACPyF,YAAapE,MAAMS,QAAQ1C,KAC3BsG,SAAUzI,OAAO2B,OAAOhC,MAAMwH,KAC5B,CAAEC,OAAQ9D,SAASC,OACnB,IAAMpF,yBAAyBmF,SAAS4B,eAGxCtD,SAASsG,SAAW,KACpB,GACA,CACES,YAAa3I,OAAO2B,OAAO,CACzBjC,KAAM,SACNqD,MAAOnB,SAASsG,OAAOnF,MACvByF,YAAa5G,SAASsG,OAAOM,YAC7BC,SAAU7G,SAASsG,OAAOO,eAIpC,OAAOJ,OAAOK,EAChB","ignoreList":[]}
|
package/dist/virtual-list.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { VirtualList, type
|
|
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';
|
package/dist/virtual-list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/virtual-list.ts"],"mappings":"
|
|
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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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<
|
|
15
|
-
readonly onPlanChange?: (plan: VirtualLayoutPlan<
|
|
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
|
|
19
|
-
readonly placement: MasonryPlacement<
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
type: PropType<
|
|
38
|
+
getID: {
|
|
39
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
38
40
|
required: true;
|
|
39
41
|
};
|
|
40
|
-
|
|
41
|
-
type:
|
|
42
|
-
|
|
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
|
-
|
|
61
|
-
type:
|
|
62
|
-
|
|
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<
|
|
87
|
+
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
98
88
|
default: undefined;
|
|
99
89
|
};
|
|
100
90
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
101
|
-
stateChange: (_state: MasonryLayoutState<
|
|
102
|
-
planChange: (_plan: VirtualLayoutPlan<
|
|
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
|
-
|
|
110
|
-
type: PropType<
|
|
99
|
+
getID: {
|
|
100
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
111
101
|
required: true;
|
|
112
102
|
};
|
|
113
|
-
|
|
114
|
-
type:
|
|
115
|
-
|
|
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
|
-
|
|
134
|
-
type:
|
|
135
|
-
|
|
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<
|
|
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<
|
|
176
|
-
onStateChange?: (_state: MasonryLayoutState<
|
|
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:
|
|
165
|
+
itemAttributes: VirtualCollectionItemAttributes<unknown>;
|
|
193
166
|
}, SlotsType<{
|
|
194
|
-
|
|
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 {};
|