@sectile/vue 0.15.1 → 0.16.1
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/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/internal/popup.js +1 -1
- package/dist/internal/popup.js.map +1 -1
- package/dist/internal/presence.d.ts +1 -1
- package/dist/internal/presence.js +1 -1
- package/dist/internal/presence.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/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/package.json +8 -8
- 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,35 +1,37 @@
|
|
|
1
1
|
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
2
|
+
import type { StableID } from '@sectile/core';
|
|
2
3
|
import { type SpatialLayoutState, type SpatialPlacement } from '@sectile/virtual/spatial-layout';
|
|
3
4
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
4
|
-
import { type
|
|
5
|
-
import type { VirtualListSlotProps } from './internal/virtual-list.js';
|
|
6
|
-
import { type VirtualCollectionBaseProps } from './internal/virtual-collection.js';
|
|
5
|
+
import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
|
|
7
6
|
export type VirtualSpatialRectResolver<Value> = {
|
|
8
7
|
bivarianceHack(value: Value, index: number): VirtualRect;
|
|
9
8
|
}['bivarianceHack'];
|
|
10
9
|
export type VirtualSpatialZIndexResolver<Value> = number | {
|
|
11
10
|
bivarianceHack(value: Value, index: number): number;
|
|
12
11
|
}['bivarianceHack'];
|
|
13
|
-
export
|
|
12
|
+
export type VirtualSpatialSizeOwnership = 'declared' | 'mounted';
|
|
13
|
+
export interface VirtualSpatialProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
|
|
14
14
|
readonly getRect: VirtualSpatialRectResolver<Value>;
|
|
15
15
|
readonly getZIndex?: VirtualSpatialZIndexResolver<Value>;
|
|
16
|
-
readonly
|
|
16
|
+
readonly sizeOwnership: VirtualSpatialSizeOwnership;
|
|
17
17
|
}
|
|
18
|
-
export type VirtualSpatialPublicProps<Value = unknown> = VirtualSpatialProps<Value> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
|
|
19
|
-
readonly onStateChange?: (state: SpatialLayoutState<
|
|
20
|
-
readonly onPlanChange?: (plan: VirtualLayoutPlan<
|
|
18
|
+
export type VirtualSpatialPublicProps<Value = unknown, ID extends StableID = StableID> = VirtualSpatialProps<Value, ID> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
|
|
19
|
+
readonly onStateChange?: (state: SpatialLayoutState<ID>) => unknown;
|
|
20
|
+
readonly onPlanChange?: (plan: VirtualLayoutPlan<ID>) => unknown;
|
|
21
21
|
readonly onError?: VirtualizerErrorHandler;
|
|
22
22
|
};
|
|
23
|
-
export interface VirtualSpatialSlotProps<Value = unknown> extends
|
|
24
|
-
readonly placement: SpatialPlacement<
|
|
23
|
+
export interface VirtualSpatialSlotProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionItemSlotProps<Value, ID> {
|
|
24
|
+
readonly placement: SpatialPlacement<ID>;
|
|
25
25
|
readonly zIndex: number;
|
|
26
26
|
}
|
|
27
27
|
export interface VirtualSpatialComponent {
|
|
28
|
-
new <Value = unknown>(props: VirtualSpatialPublicProps<Value>): {
|
|
29
|
-
$props: VirtualSpatialPublicProps<Value>;
|
|
28
|
+
new <Value = unknown, ID extends StableID = StableID>(props: VirtualSpatialPublicProps<Value, ID>): {
|
|
29
|
+
$props: VirtualSpatialPublicProps<Value, ID>;
|
|
30
30
|
$slots: {
|
|
31
|
-
|
|
31
|
+
header?: () => VNodeChild;
|
|
32
|
+
item?: (props: VirtualSpatialSlotProps<Value, ID>) => VNodeChild;
|
|
32
33
|
empty?: () => VNodeChild;
|
|
34
|
+
footer?: () => VNodeChild;
|
|
33
35
|
};
|
|
34
36
|
};
|
|
35
37
|
}
|
|
@@ -38,8 +40,8 @@ declare const VirtualSpatialRuntime: import("vue").DefineComponent<import("vue")
|
|
|
38
40
|
type: PropType<readonly unknown[]>;
|
|
39
41
|
required: true;
|
|
40
42
|
};
|
|
41
|
-
|
|
42
|
-
type: PropType<
|
|
43
|
+
getID: {
|
|
44
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
43
45
|
required: true;
|
|
44
46
|
};
|
|
45
47
|
getRect: {
|
|
@@ -50,14 +52,18 @@ declare const VirtualSpatialRuntime: import("vue").DefineComponent<import("vue")
|
|
|
50
52
|
type: PropType<VirtualSpatialZIndexResolver<unknown>>;
|
|
51
53
|
default: number;
|
|
52
54
|
};
|
|
53
|
-
|
|
54
|
-
type:
|
|
55
|
-
|
|
55
|
+
sizeOwnership: {
|
|
56
|
+
type: PropType<VirtualSpatialSizeOwnership>;
|
|
57
|
+
required: true;
|
|
56
58
|
};
|
|
57
59
|
overscan: {
|
|
58
60
|
type: PropType<number | Partial<VirtualInsets>>;
|
|
59
61
|
default: number;
|
|
60
62
|
};
|
|
63
|
+
viewportInsets: {
|
|
64
|
+
type: PropType<number | Partial<VirtualInsets>>;
|
|
65
|
+
default: undefined;
|
|
66
|
+
};
|
|
61
67
|
maxItems: {
|
|
62
68
|
type: NumberConstructor;
|
|
63
69
|
default: number;
|
|
@@ -79,20 +85,20 @@ declare const VirtualSpatialRuntime: import("vue").DefineComponent<import("vue")
|
|
|
79
85
|
default: string;
|
|
80
86
|
};
|
|
81
87
|
itemAttributes: {
|
|
82
|
-
type: PropType<
|
|
88
|
+
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
83
89
|
default: undefined;
|
|
84
90
|
};
|
|
85
91
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
86
|
-
stateChange: (_state: SpatialLayoutState<
|
|
87
|
-
planChange: (_plan: VirtualLayoutPlan<
|
|
92
|
+
stateChange: (_state: SpatialLayoutState<StableID>) => boolean;
|
|
93
|
+
planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
|
|
88
94
|
error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
|
|
89
95
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
90
96
|
items: {
|
|
91
97
|
type: PropType<readonly unknown[]>;
|
|
92
98
|
required: true;
|
|
93
99
|
};
|
|
94
|
-
|
|
95
|
-
type: PropType<
|
|
100
|
+
getID: {
|
|
101
|
+
type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
|
|
96
102
|
required: true;
|
|
97
103
|
};
|
|
98
104
|
getRect: {
|
|
@@ -103,14 +109,18 @@ declare const VirtualSpatialRuntime: import("vue").DefineComponent<import("vue")
|
|
|
103
109
|
type: PropType<VirtualSpatialZIndexResolver<unknown>>;
|
|
104
110
|
default: number;
|
|
105
111
|
};
|
|
106
|
-
|
|
107
|
-
type:
|
|
108
|
-
|
|
112
|
+
sizeOwnership: {
|
|
113
|
+
type: PropType<VirtualSpatialSizeOwnership>;
|
|
114
|
+
required: true;
|
|
109
115
|
};
|
|
110
116
|
overscan: {
|
|
111
117
|
type: PropType<number | Partial<VirtualInsets>>;
|
|
112
118
|
default: number;
|
|
113
119
|
};
|
|
120
|
+
viewportInsets: {
|
|
121
|
+
type: PropType<number | Partial<VirtualInsets>>;
|
|
122
|
+
default: undefined;
|
|
123
|
+
};
|
|
114
124
|
maxItems: {
|
|
115
125
|
type: NumberConstructor;
|
|
116
126
|
default: number;
|
|
@@ -132,26 +142,28 @@ declare const VirtualSpatialRuntime: import("vue").DefineComponent<import("vue")
|
|
|
132
142
|
default: string;
|
|
133
143
|
};
|
|
134
144
|
itemAttributes: {
|
|
135
|
-
type: PropType<
|
|
145
|
+
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
136
146
|
default: undefined;
|
|
137
147
|
};
|
|
138
148
|
}>> & Readonly<{
|
|
139
149
|
onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
|
|
140
|
-
onPlanChange?: (_plan: VirtualLayoutPlan<
|
|
141
|
-
onStateChange?: (_state: SpatialLayoutState<
|
|
150
|
+
onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
|
|
151
|
+
onStateChange?: (_state: SpatialLayoutState<StableID>) => any;
|
|
142
152
|
}>, {
|
|
143
153
|
getZIndex: VirtualSpatialZIndexResolver<unknown>;
|
|
144
|
-
measureSize: boolean;
|
|
145
154
|
overscan: number | Partial<import("@sectile/core/geometry").Insets>;
|
|
155
|
+
viewportInsets: number | Partial<import("@sectile/core/geometry").Insets>;
|
|
146
156
|
maxItems: number;
|
|
147
157
|
initialViewport: import("@sectile/core/geometry").Rect;
|
|
148
158
|
as: string;
|
|
149
159
|
contentAs: string;
|
|
150
160
|
itemAs: string;
|
|
151
|
-
itemAttributes:
|
|
161
|
+
itemAttributes: VirtualCollectionItemAttributes<unknown>;
|
|
152
162
|
}, SlotsType<{
|
|
153
|
-
|
|
163
|
+
header: () => VNodeChild;
|
|
164
|
+
item: (props: VirtualSpatialSlotProps<unknown>) => VNodeChild;
|
|
154
165
|
empty: () => VNodeChild;
|
|
166
|
+
footer: () => VNodeChild;
|
|
155
167
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
156
168
|
export declare const VirtualSpatial: typeof VirtualSpatialRuntime & VirtualSpatialComponent;
|
|
157
169
|
export {};
|
package/dist/virtual-spatial.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent,h,shallowRef,watch}from'vue';import{createSpatialLayout,spatialLayoutStrategy}from'@sectile/virtual/spatial-layout';import{}from'@sectile/dom/virtual';import{
|
|
1
|
+
import{defineComponent,h,shallowRef,watch}from'vue';import{createSpatialLayout,spatialLayoutStrategy}from'@sectile/virtual/spatial-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./internal/virtual-core.js';import{createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection}from'./internal/virtual-collection.js';const VirtualSpatialRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualSpatial',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},getRect:{type:Function,required:true},getZIndex:{type:[Number,Function],default:0},sizeOwnership:{type:String,required:true},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 sizeOwnership=props.sizeOwnership;const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialState=createVirtualSpatialState(prepared.value,props.items,props);const root=shallowRef();const measure=sizeOwnership==='mounted'?({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.width<=0||bounds.height<=0)return null;const current=state.items.at(placement.index);if(current===undefined)return null;if(current.rect.width===bounds.width&¤t.rect.height===bounds.height)return null;return Object.freeze({id:placement.id,rect:Object.freeze({x:current.rect.x,y:current.rect.y,width:bounds.width,height:bounds.height})})}:undefined;watch(()=>[props.items,props.getID,props.getRect,props.getZIndex],(current,previous)=>{const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const state=exposed.state;const resolverChanged=current[2]!==previous[2]||current[3]!==previous[3];const valuePatch=next.valueChange===null?null:Object.freeze({index:next.valueChange.index,deleteCount:next.valueChange.count,inserted:Object.freeze(next.domain.ids.slice(next.valueChange.index,next.valueChange.index+next.valueChange.count))});const collectionPatch=next.change??valuePatch;const result=resolverChanged||collectionPatch===null?resolverChanged?exposed.mutate(Object.freeze({type:'replace',items:preserveMountedSpatialSizes(createSpatialItems(next,props.items,props),state,sizeOwnership)})):null:exposed.mutate(Object.freeze({type:'patch',patch:Object.freeze({type:'splice',index:collectionPatch.index,deleteCount:collectionPatch.deleteCount,inserted:collectionPatch.inserted}),inserted:preserveMountedSpatialSizes(createSpatialItemsRange(next,props.items,props,collectionPatch.index,collectionPatch.inserted.length),state,sizeOwnership)}));if(result===null){prepared.value=next;return}if(result.ok)prepared.value=next},{flush:'post'});let sizeOwnershipWarningShown=false;watch(()=>props.sizeOwnership,value=>{if(sizeOwnershipWarningShown||value===sizeOwnership)return;sizeOwnershipWarningShown=true;console.warn('[Sectile] VirtualSpatial sizeOwnership is a construction-time option. Remount the spatial collection to change it.')},{flush:'sync'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:initialState,strategy:spatialLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-spatial','data-phase':prepared.value.domain.size===0?'empty':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>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:()=>renderHighLevelItems('virtual-spatial',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,sizeOwnership==='mounted'?'none':'both',(value,id,index,placement)=>{const spatialPlacement=placement;return slots['item']?.({value,id,index,placement:spatialPlacement,zIndex:spatialPlacement.zIndex})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualSpatial=VirtualSpatialRuntime;function createVirtualSpatialState(prepared,items,props){return createSpatialLayout(createSpatialItems(prepared,items,props),{maxItems:props.maxItems,domain:prepared.domain})}function createSpatialItems(prepared,items,props){return createSpatialItemsRange(prepared,items,props,0,prepared.domain.size)}function createSpatialItemsRange(prepared,items,props,start,count){const spatialItems=Array(count);for(let localIndex=0;localIndex<count;localIndex+=1){const index=start+localIndex;spatialItems[localIndex]={id:prepared.domain.at(index),rect:props.getRect(items[index],index),zIndex:typeof props.getZIndex==='number'?props.getZIndex:props.getZIndex(items[index],index)}}return spatialItems}function preserveMountedSpatialSizes(items,state,sizeOwnership){if(sizeOwnership!=='mounted')return items;return items.map(item=>{const previousIndex=state.domain.indexOf(item.id);const previous=previousIndex===null?undefined:state.items.at(previousIndex);return previous===undefined?item:{...item,rect:{...item.rect,width:previous.rect.width,height:previous.rect.height}}})}
|
|
2
2
|
//# sourceMappingURL=virtual-spatial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-spatial.js","names":["defineComponent","h","shallowRef","watch","createSpatialLayout","spatialLayoutStrategy","
|
|
1
|
+
{"version":3,"file":"virtual-spatial.js","names":["defineComponent","h","shallowRef","watch","createSpatialLayout","spatialLayoutStrategy","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","VirtualSpatialRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","getRect","getZIndex","Number","default","sizeOwnership","String","overscan","Object","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialState","createVirtualSpatialState","value","root","measure","element","placement","state","bounds","getBoundingClientRect","width","height","current","at","index","rect","id","x","y","previous","exposed","next","resolverChanged","valuePatch","valueChange","deleteCount","count","inserted","domain","ids","slice","collectionPatch","change","result","mutate","preserveMountedSpatialSizes","createSpatialItems","patch","createSpatialItemsRange","length","ok","flush","sizeOwnershipWarningShown","console","warn","size","ref","defaultState","strategy","onStateChange","onPlanChange","plan","onError","placements","spatialPlacement","zIndex","VirtualSpatial","start","spatialItems","localIndex","map","item","previousIndex","indexOf"],"sources":["../src/virtual-spatial.ts"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sectile/vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "Headless Vue components for Sectile DOM interaction semantics.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -415,13 +415,13 @@
|
|
|
415
415
|
},
|
|
416
416
|
"dependencies": {
|
|
417
417
|
"@sectile/core": "^0.14.2",
|
|
418
|
-
"@sectile/dom": "^0.
|
|
418
|
+
"@sectile/dom": "^0.16.1"
|
|
419
419
|
},
|
|
420
420
|
"peerDependencies": {
|
|
421
|
-
"@sectile/chart": "^0.15.
|
|
421
|
+
"@sectile/chart": "^0.15.1",
|
|
422
422
|
"@sectile/form": "^0.14.2",
|
|
423
|
-
"@sectile/tabular": "^0.
|
|
424
|
-
"@sectile/virtual": "^0.
|
|
423
|
+
"@sectile/tabular": "^0.15.0",
|
|
424
|
+
"@sectile/virtual": "^0.15.0",
|
|
425
425
|
"vue": "^3.5.0",
|
|
426
426
|
"@sectile/temporal": "^0.14.2"
|
|
427
427
|
},
|
|
@@ -443,10 +443,10 @@
|
|
|
443
443
|
}
|
|
444
444
|
},
|
|
445
445
|
"devDependencies": {
|
|
446
|
-
"@sectile/chart": "0.15.
|
|
446
|
+
"@sectile/chart": "0.15.1",
|
|
447
447
|
"@sectile/form": "0.14.2",
|
|
448
|
-
"@sectile/tabular": "0.
|
|
449
|
-
"@sectile/virtual": "0.
|
|
448
|
+
"@sectile/tabular": "0.15.0",
|
|
449
|
+
"@sectile/virtual": "0.15.0",
|
|
450
450
|
"@vue/server-renderer": "^3.5.0",
|
|
451
451
|
"happy-dom": "^20.11.6",
|
|
452
452
|
"typescript": "7.0.2",
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { type Sequence } from '@sectile/core/sequence';
|
|
2
|
-
import type { Extent } from '@sectile/virtual/extent-index';
|
|
3
|
-
import type { LinearLayoutState, LinearPatch } from '@sectile/virtual/linear-layout';
|
|
4
|
-
export type VirtualListKeyResolver<Value> = {
|
|
5
|
-
bivarianceHack(value: Value, index: number): string;
|
|
6
|
-
}['bivarianceHack'];
|
|
7
|
-
export type VirtualListEstimate<Value> = number | {
|
|
8
|
-
bivarianceHack(value: Value, index: number): number;
|
|
9
|
-
}['bivarianceHack'];
|
|
10
|
-
export type VirtualListItemAttributes<Value> = {
|
|
11
|
-
bivarianceHack(value: Value, index: number): Readonly<Record<string, unknown>>;
|
|
12
|
-
}['bivarianceHack'];
|
|
13
|
-
export interface PreparedVirtualList {
|
|
14
|
-
readonly items: readonly unknown[];
|
|
15
|
-
readonly domain: Sequence<string>;
|
|
16
|
-
readonly getKey: VirtualListKeyResolver<unknown>;
|
|
17
|
-
readonly change: PreparedVirtualListChange | null;
|
|
18
|
-
readonly valueChange: PreparedVirtualListValueChange | null;
|
|
19
|
-
}
|
|
20
|
-
export interface PreparedVirtualListChange {
|
|
21
|
-
readonly index: number;
|
|
22
|
-
readonly deleteCount: number;
|
|
23
|
-
readonly inserted: readonly string[];
|
|
24
|
-
}
|
|
25
|
-
export interface PreparedVirtualListValueChange {
|
|
26
|
-
readonly index: number;
|
|
27
|
-
readonly count: number;
|
|
28
|
-
}
|
|
29
|
-
export declare function prepareVirtualList(items: readonly unknown[], getKey: VirtualListKeyResolver<unknown>, maxItems?: number): PreparedVirtualList;
|
|
30
|
-
export declare function updatePreparedVirtualList(previous: PreparedVirtualList, items: readonly unknown[], getKey: VirtualListKeyResolver<unknown>): PreparedVirtualList;
|
|
31
|
-
export declare function validateVirtualListKey(id: string): string;
|
|
32
|
-
export declare function createPreparedVirtualListSequence(prepared: PreparedVirtualList, maxItems: number): Sequence<string>;
|
|
33
|
-
export declare function isWellFormedVirtualListKey(value: string): boolean;
|
|
34
|
-
export declare function reconcileVirtualList(state: Pick<LinearLayoutState<string>, 'domain' | 'extents'>, next: PreparedVirtualList, items: readonly unknown[], props: Readonly<{
|
|
35
|
-
itemSize: number | undefined;
|
|
36
|
-
estimateSize: VirtualListEstimate<unknown> | undefined;
|
|
37
|
-
}>, automaticEstimate?: number): LinearPatch<string> | null;
|
|
38
|
-
export declare function assertVirtualListSizeMode(itemSize: number | undefined, estimateSize: VirtualListEstimate<unknown> | undefined): void;
|
|
39
|
-
export declare function initialExtent(props: Readonly<{
|
|
40
|
-
itemSize: number | undefined;
|
|
41
|
-
estimateSize: VirtualListEstimate<unknown> | undefined;
|
|
42
|
-
}>, value: unknown, index: number, automaticEstimate?: number): Extent;
|
|
43
|
-
export declare function requireAutomaticEstimate(estimate: VirtualListEstimate<unknown> | undefined): VirtualListEstimate<unknown>;
|
|
44
|
-
export declare function requiresDOMBootstrap(itemSize: number | undefined, estimateSize: VirtualListEstimate<unknown> | undefined): boolean;
|
|
45
|
-
export declare function exactExtent(value: number): Extent;
|
|
46
|
-
export declare function estimatedExtent(estimate: VirtualListEstimate<unknown>, value: unknown, index: number): Extent;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{applySequencePatch,createSequence}from"@sectile/core/sequence";function prepareVirtualList(items,getKey,maxItems=1e6){validateVirtualListMaxItems(maxItems);if(items.length>maxItems){throw new RangeError(`VirtualList received ${items.length} items, exceeding maxItems ${maxItems}.`)}const ids=[];const indexByID=new Map;for(let index=0;index<items.length;index+=1){const value=items[index];const id=getKey(value,index);if(typeof id!=="string"||id.length===0){throw new TypeError("VirtualList getKey must return a non-empty string.")}if(id.length>1024){throw new TypeError("VirtualList keys must contain at most 1,024 UTF-16 code units.")}if(!isWellFormedVirtualListKey(id)){throw new TypeError("VirtualList keys must be well-formed UTF-16 strings.")}if(indexByID.has(id)){throw new TypeError(`VirtualList getKey returned the duplicate key ${JSON.stringify(id)}.`)}ids.push(id);indexByID.set(id,index)}const frozenIDs=Object.freeze(ids);return Object.freeze({items,domain:createIndexedVirtualListSequence(frozenIDs,indexByID,maxItems),getKey,change:null,valueChange:null})}function updatePreparedVirtualList(previous,items,getKey){if(previous.items===items&&previous.getKey===getKey)return previous;if(previous.getKey!==getKey){const prepared=prepareVirtualList(items,getKey,previous.domain.maxItems);let prefix2=0;while(prefix2<previous.domain.size&&prefix2<prepared.domain.size&&previous.domain.at(prefix2)===prepared.domain.at(prefix2))prefix2+=1;let suffix2=0;while(suffix2<previous.domain.size-prefix2&&suffix2<prepared.domain.size-prefix2&&previous.domain.at(previous.domain.size-suffix2-1)===prepared.domain.at(prepared.domain.size-suffix2-1))suffix2+=1;if(prefix2===previous.domain.size&&prefix2===prepared.domain.size){const valueChange=changedVirtualListValues(previous.items,items);return Object.freeze({items,domain:previous.domain,getKey,change:null,valueChange})}const inserted2=Object.freeze(prepared.domain.ids.slice(prefix2,prepared.domain.size-suffix2));return Object.freeze({...prepared,change:Object.freeze({index:prefix2,deleteCount:previous.domain.size-prefix2-suffix2,inserted:inserted2}),valueChange:null})}let prefix=0;while(prefix<previous.items.length&&prefix<items.length&&Object.is(previous.items[prefix],items[prefix]))prefix+=1;let suffix=0;while(suffix<previous.items.length-prefix&&suffix<items.length-prefix&&Object.is(previous.items[previous.items.length-suffix-1],items[items.length-suffix-1]))suffix+=1;if(prefix===previous.items.length&&prefix===items.length){return Object.freeze({items,domain:previous.domain,getKey,change:null,valueChange:null})}const changedEnd=items.length-suffix;if(previous.items.length===items.length){let sameDomain=true;for(let index=prefix;index<changedEnd;index+=1){if(validateVirtualListKey(getKey(items[index],index))!==previous.domain.at(index)){sameDomain=false;break}}if(sameDomain){return Object.freeze({items,domain:previous.domain,getKey,change:null,valueChange:Object.freeze({index:prefix,count:changedEnd-prefix})})}}const inserted=[];const insertedIDs=new Set;for(let index=prefix;index<changedEnd;index+=1){const id=validateVirtualListKey(getKey(items[index],index));if(insertedIDs.has(id)){throw new TypeError(`VirtualList getKey returned the duplicate key ${JSON.stringify(id)}.`)}inserted.push(id);insertedIDs.add(id)}const frozenInserted=Object.freeze(inserted);const change=Object.freeze({index:prefix,deleteCount:previous.domain.size-prefix-suffix,inserted:frozenInserted});return Object.freeze({items,domain:applySequencePatch(previous.domain,Object.freeze({type:"splice",...change})),getKey,change,valueChange:null})}function changedVirtualListValues(previous,next){let prefix=0;while(prefix<previous.length&&Object.is(previous[prefix],next[prefix]))prefix+=1;if(prefix===previous.length)return null;let suffix=0;while(suffix<previous.length-prefix&&Object.is(previous[previous.length-suffix-1],next[next.length-suffix-1]))suffix+=1;return Object.freeze({index:prefix,count:next.length-prefix-suffix})}function validateVirtualListKey(id){if(typeof id!=="string"||id.length===0){throw new TypeError("VirtualList getKey must return a non-empty string.")}if(id.length>1024){throw new TypeError("VirtualList keys must contain at most 1,024 UTF-16 code units.")}if(!isWellFormedVirtualListKey(id)){throw new TypeError("VirtualList keys must be well-formed UTF-16 strings.")}return id}function createPreparedVirtualListSequence(prepared,maxItems){validateVirtualListMaxItems(maxItems);if(prepared.domain.size>maxItems){throw new RangeError(`VirtualList received ${prepared.domain.size} items, exceeding maxItems ${maxItems}.`)}if(prepared.domain.maxItems===maxItems)return prepared.domain;return createSequence(prepared.domain.ids,{maxItems,maxIDCodeUnits:1024})}function createIndexedVirtualListSequence(ids,index,maxItems){let materialized;const complete=()=>{materialized??=createSequence(ids,{maxItems,maxIDCodeUnits:1024});return materialized};return Object.freeze({size:ids.length,ids,maxItems,maxIDCodeUnits:1024,at:position=>Number.isSafeInteger(position)&&position>=0&&position<ids.length?ids[position]??null:null,indexOf:id=>index.get(id)??null,contains:id=>index.has(id),compare:(left,right)=>{const leftIndex=index.get(left);const rightIndex=index.get(right);if(leftIndex===void 0||rightIndex===void 0)return null;return leftIndex===rightIndex?0:leftIndex<rightIndex?-1:1},project:predicate=>complete().project(predicate),move:(current,direction,boundary,options)=>complete().move(current,direction,boundary,options)})}function validateVirtualListMaxItems(maxItems){if(!Number.isSafeInteger(maxItems)||maxItems<0){throw new TypeError("VirtualList maxItems must be a non-negative safe integer.")}}function isWellFormedVirtualListKey(value){for(let index=0;index<value.length;index+=1){const code=value.charCodeAt(index);if(code>=55296&&code<=56319){const next=value.charCodeAt(index+1);if(next<56320||next>57343)return false;index+=1}else if(code>=56320&&code<=57343)return false}return true}function reconcileVirtualList(state,next,items,props,automaticEstimate){const change=next.change;if(change===null)return null;const inserted=change.inserted;return Object.freeze({patch:Object.freeze({type:"splice",index:change.index,deleteCount:change.deleteCount,inserted}),insertedExtents:Object.freeze(inserted.map((id,localIndex)=>{const nextIndex=change.index+localIndex;const previousIndex=state.domain.indexOf(id);return(previousIndex===null?null:state.extents.extentAt(previousIndex))??initialExtent(props,items[nextIndex],nextIndex,automaticEstimate)}))})}function assertVirtualListSizeMode(itemSize,estimateSize){if(itemSize!==void 0&&estimateSize!==void 0){throw new TypeError("VirtualList itemSize and estimateSize are mutually exclusive.")}}function initialExtent(props,value,index,automaticEstimate){return props.itemSize===void 0?estimatedExtent(requireAutomaticEstimate(props.estimateSize??automaticEstimate),value,index):exactExtent(props.itemSize)}function requireAutomaticEstimate(estimate){if(estimate===void 0){throw new TypeError("Automatic virtual size must be measured before layout initialization.")}return estimate}function requiresDOMBootstrap(itemSize,estimateSize){return itemSize===void 0&&estimateSize===void 0}function exactExtent(value){return Object.freeze({kind:"exact",value})}function estimatedExtent(estimate,value,index){return Object.freeze({kind:"unknown",fallback:typeof estimate==="number"?estimate:estimate(value,index)})}export{assertVirtualListSizeMode,createPreparedVirtualListSequence,estimatedExtent,exactExtent,initialExtent,isWellFormedVirtualListKey,prepareVirtualList,reconcileVirtualList,requireAutomaticEstimate,requiresDOMBootstrap,updatePreparedVirtualList,validateVirtualListKey};
|
|
2
|
-
//# sourceMappingURL=virtual-collection-model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/virtual-collection-model.ts"],"mappings":"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","names":["prefix","suffix","inserted"],"file":"virtual-collection-model.js"}
|