@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.
Files changed (35) hide show
  1. package/README.md +5 -5
  2. package/dist/chart.js +1 -1
  3. package/dist/chart.js.map +1 -1
  4. package/dist/internal/popup.js +1 -1
  5. package/dist/internal/popup.js.map +1 -1
  6. package/dist/internal/presence.d.ts +1 -1
  7. package/dist/internal/presence.js +1 -1
  8. package/dist/internal/presence.js.map +1 -1
  9. package/dist/internal/virtual-collection.d.ts +45 -24
  10. package/dist/internal/virtual-collection.js +1 -1
  11. package/dist/internal/virtual-collection.js.map +1 -1
  12. package/dist/internal/virtual-core.d.ts +109 -34
  13. package/dist/internal/virtual-core.js +1 -1
  14. package/dist/internal/virtual-core.js.map +1 -1
  15. package/dist/internal/virtual-list.d.ts +58 -85
  16. package/dist/internal/virtual-list.js +1 -1
  17. package/dist/internal/virtual-list.js.map +1 -1
  18. package/dist/virtual-core.d.ts +1 -1
  19. package/dist/virtual-core.js +1 -1
  20. package/dist/virtual-core.js.map +1 -1
  21. package/dist/virtual-grid.d.ts +50 -75
  22. package/dist/virtual-grid.js +1 -1
  23. package/dist/virtual-grid.js.map +1 -1
  24. package/dist/virtual-list.d.ts +2 -1
  25. package/dist/virtual-list.js.map +1 -1
  26. package/dist/virtual-masonry.d.ts +51 -76
  27. package/dist/virtual-masonry.js +1 -1
  28. package/dist/virtual-masonry.js.map +1 -1
  29. package/dist/virtual-spatial.d.ts +44 -32
  30. package/dist/virtual-spatial.js +1 -1
  31. package/dist/virtual-spatial.js.map +1 -1
  32. package/package.json +8 -8
  33. package/dist/internal/virtual-collection-model.d.ts +0 -46
  34. package/dist/internal/virtual-collection-model.js +0 -2
  35. package/dist/internal/virtual-collection-model.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internal/virtual-collection.ts"],"mappings":"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","names":[],"file":"virtual-collection.js"}
1
+ {"version":3,"file":"virtual-collection.js","names":["defineComponent","h","onBeforeUnmount","shallowReactive","shallowRef","constrainVirtualCollectionDomain","createVirtualCollection","replaceVirtualCollection","virtualItemStyle","useVirtualizerSurfaceRegistration","virtualizerNotConnected","prepareVirtualCollection","items","getID","maxItems","maxIDCodeUnits","updatePreparedVirtualCollection","previous","constrainPreparedVirtualCollection","prepared","VirtualCollectionProjectionRuntime","name","inheritAttrs","props","scope","type","String","required","placements","Array","Object","itemAs","itemAttributes","Function","default","undefined","size","slots","setup","surface","registrations","Map","elements","refs","itemRef","id","existing","get","callback","value","element","HTMLElement","delete","set","registerItem","unregister","values","clear","sizing","itemSizing","children","placement","index","length","domain","at","attributes","rendered","push","key","ref","style","visible","normalizeChildren","VirtualCollectionBootstrapProjectionRuntime","count","Number","width","bootstrapRef","Math","min","freeze","rect","x","y","height","renderHighLevelItems","render","empty","child","renderCollectionBootstrapItems","createVirtualCollectionExpose","root","initialState","phase","emptyScrollport","emptySurface","scrollport","state","plan","scrollToID","alignment","scrollTo","refresh","flush","nearlyEqual","left","right","abs","isArray"],"sources":["../../src/internal/virtual-collection.ts"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,17 @@
1
1
  import { type MaybeRefOrGetter, type PropType, type Ref, type ShallowRef, type SlotsType, type VNodeChild } from 'vue';
2
- import type { StableID } from '@sectile/core';
3
- import { createAxisMeasurementResolver, virtualContentStyle, virtualItemStyle, type VirtualInsets, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementResolver, type VirtualPlacement, type VirtualRect, type VirtualScrollAlignment, type VirtualScrollWriter, type VirtualViewportReader, type VirtualizerConnection, type VirtualizerEnvironment, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
2
+ import type { Result, StableID } from '@sectile/core';
3
+ import type { VirtualErrorCode } from '@sectile/virtual';
4
+ import { createAxisMeasurementResolver, virtualItemStyle, virtualSurfaceStyle, type VirtualInsets, type VirtualLayoutMutation, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementResolver, type VirtualPlacement, type VirtualPoint, type VirtualRect, type VirtualScrollAlignment, type VirtualScrollWriter, type VirtualViewportReader, type VirtualizerConnection, type VirtualizerEnvironment, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
4
5
  import { type PrimitiveAs } from '../primitive.js';
6
+ export type VirtualizerHostErrorCode = 'virtualizer-not-connected';
7
+ export type VirtualizerOperationResult<T> = Result<T, VirtualErrorCode | VirtualizerHostErrorCode>;
5
8
  export interface UseVirtualizerOptions<State, ID extends StableID, Measurement, Mutation> {
6
9
  readonly state: Ref<State>;
7
10
  readonly strategy: VirtualLayoutStrategy<State, ID, Measurement, Mutation>;
8
- readonly root?: ShallowRef<HTMLElement | null | undefined>;
11
+ readonly scrollport?: ShallowRef<HTMLElement | null | undefined>;
12
+ readonly surface?: ShallowRef<HTMLElement | null | undefined>;
9
13
  readonly overscan?: MaybeRefOrGetter<number | Partial<VirtualInsets> | undefined>;
14
+ readonly viewportInsets?: MaybeRefOrGetter<number | Partial<VirtualInsets> | undefined>;
10
15
  readonly initialViewport?: VirtualRect;
11
16
  readonly measure?: VirtualMeasurementResolver<State, ID, Measurement>;
12
17
  readonly readViewport?: VirtualViewportReader;
@@ -17,48 +22,59 @@ export interface UseVirtualizerOptions<State, ID extends StableID, Measurement,
17
22
  readonly onError?: VirtualizerErrorHandler;
18
23
  }
19
24
  export interface UseVirtualizerReturn<State, ID extends StableID, Measurement, Mutation> {
20
- readonly root: ShallowRef<HTMLElement | null | undefined>;
25
+ readonly scrollport: ShallowRef<HTMLElement | null | undefined>;
26
+ readonly surface: ShallowRef<HTMLElement | null | undefined>;
21
27
  readonly plan: ShallowRef<VirtualLayoutPlan<ID> | null>;
22
28
  readonly connection: ShallowRef<VirtualizerConnection<State, ID, Measurement, Mutation> | undefined>;
29
+ registerFrame(element: HTMLElement): () => void;
23
30
  registerItem(element: HTMLElement, id: ID): () => void;
24
- measure(measurements: readonly Measurement[]): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['measure']>;
25
- mutate(mutation: Mutation): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['mutate']>;
26
- scrollTo(id: ID, alignment?: VirtualScrollAlignment): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['scrollTo']>;
31
+ measure(measurements: readonly Measurement[]): VirtualizerOperationResult<VirtualLayoutMutation<State>>;
32
+ mutate(mutation: Mutation): VirtualizerOperationResult<VirtualLayoutMutation<State>>;
33
+ scrollTo(id: ID, alignment?: VirtualScrollAlignment): VirtualizerOperationResult<VirtualPoint>;
27
34
  refresh(): void;
28
- flush(): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['flush']>;
35
+ flush(): VirtualizerOperationResult<VirtualLayoutPlan<ID>>;
29
36
  }
30
37
  export type VirtualizerItemSize = 'none' | 'width' | 'height' | 'both';
31
38
  export interface VirtualizerRootProps {
32
39
  readonly defaultState: object;
33
- readonly strategy: VirtualLayoutStrategy<object, string, unknown, unknown>;
40
+ readonly strategy: VirtualLayoutStrategy<object, StableID, unknown, unknown>;
34
41
  readonly overscan?: number | Partial<VirtualInsets>;
42
+ readonly viewportInsets?: number | Partial<VirtualInsets>;
35
43
  readonly initialViewport?: VirtualRect;
36
- readonly measure?: VirtualMeasurementResolver<object, string, unknown>;
44
+ readonly measure?: VirtualMeasurementResolver<object, StableID, unknown>;
37
45
  readonly as?: PrimitiveAs;
38
46
  readonly asChild?: boolean;
39
47
  }
40
48
  export interface VirtualizerRootSlotProps {
41
49
  readonly state: object;
42
- readonly plan: VirtualLayoutPlan<string> | null;
43
- readonly placements: readonly VirtualPlacement<string>[];
44
- scrollTo(id: string, alignment?: VirtualScrollAlignment): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['scrollTo']>;
45
- measure(measurements: readonly unknown[]): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['measure']>;
46
- mutate(mutation: unknown): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['mutate']>;
50
+ readonly plan: VirtualLayoutPlan<StableID> | null;
51
+ readonly placements: readonly VirtualPlacement<StableID>[];
52
+ scrollTo(id: StableID, alignment?: VirtualScrollAlignment): VirtualizerOperationResult<VirtualPoint>;
53
+ measure(measurements: readonly unknown[]): VirtualizerOperationResult<VirtualLayoutMutation<object>>;
54
+ mutate(mutation: unknown): VirtualizerOperationResult<VirtualLayoutMutation<object>>;
47
55
  refresh(): void;
48
- flush(): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['flush']>;
56
+ flush(): VirtualizerOperationResult<VirtualLayoutPlan<StableID>>;
49
57
  }
50
- export interface VirtualizerContentProps {
58
+ export interface VirtualizerFrameProps {
59
+ readonly as?: PrimitiveAs;
60
+ readonly asChild?: boolean;
61
+ }
62
+ export interface VirtualizerSurfaceProps {
51
63
  readonly as?: PrimitiveAs;
52
64
  readonly asChild?: boolean;
53
65
  }
54
66
  export interface VirtualizerItemProps {
55
- readonly placement: VirtualPlacement<string>;
67
+ readonly placement: VirtualPlacement<StableID>;
56
68
  readonly size?: VirtualizerItemSize;
57
69
  readonly as?: PrimitiveAs;
58
70
  readonly asChild?: boolean;
59
71
  }
60
72
  export interface VirtualizerRootExpose extends VirtualizerRootSlotProps {
61
- readonly root: ShallowRef<HTMLElement | null | undefined>;
73
+ readonly scrollport: ShallowRef<HTMLElement | null | undefined>;
74
+ readonly surface: ShallowRef<HTMLElement | null | undefined>;
75
+ }
76
+ export interface VirtualizerSurfaceRegistration {
77
+ registerItem(element: HTMLElement, id: StableID): () => void;
62
78
  }
63
79
  export declare function useVirtualizer<State, ID extends StableID, Measurement, Mutation>(options: UseVirtualizerOptions<State, ID, Measurement, Mutation>): UseVirtualizerReturn<State, ID, Measurement, Mutation>;
64
80
  export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -67,19 +83,23 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
67
83
  required: true;
68
84
  };
69
85
  strategy: {
70
- type: PropType<VirtualLayoutStrategy<object, string, unknown, unknown>>;
86
+ type: PropType<VirtualLayoutStrategy<object, StableID, unknown, unknown>>;
71
87
  required: true;
72
88
  };
73
89
  overscan: {
74
90
  type: PropType<number | Partial<VirtualInsets>>;
75
91
  default: undefined;
76
92
  };
93
+ viewportInsets: {
94
+ type: PropType<number | Partial<VirtualInsets>>;
95
+ default: undefined;
96
+ };
77
97
  initialViewport: {
78
98
  type: PropType<VirtualRect>;
79
99
  default: undefined;
80
100
  };
81
101
  measure: {
82
- type: PropType<VirtualMeasurementResolver<object, string, unknown>>;
102
+ type: PropType<VirtualMeasurementResolver<object, StableID, unknown>>;
83
103
  default: undefined;
84
104
  };
85
105
  as: {
@@ -92,7 +112,7 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
92
112
  };
93
113
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
94
114
  stateChange: (_state: object) => boolean;
95
- planChange: (_plan: VirtualLayoutPlan<string>) => boolean;
115
+ planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
96
116
  error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
97
117
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
98
118
  defaultState: {
@@ -100,19 +120,23 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
100
120
  required: true;
101
121
  };
102
122
  strategy: {
103
- type: PropType<VirtualLayoutStrategy<object, string, unknown, unknown>>;
123
+ type: PropType<VirtualLayoutStrategy<object, StableID, unknown, unknown>>;
104
124
  required: true;
105
125
  };
106
126
  overscan: {
107
127
  type: PropType<number | Partial<VirtualInsets>>;
108
128
  default: undefined;
109
129
  };
130
+ viewportInsets: {
131
+ type: PropType<number | Partial<VirtualInsets>>;
132
+ default: undefined;
133
+ };
110
134
  initialViewport: {
111
135
  type: PropType<VirtualRect>;
112
136
  default: undefined;
113
137
  };
114
138
  measure: {
115
- type: PropType<VirtualMeasurementResolver<object, string, unknown>>;
139
+ type: PropType<VirtualMeasurementResolver<object, StableID, unknown>>;
116
140
  default: undefined;
117
141
  };
118
142
  as: {
@@ -124,19 +148,44 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
124
148
  default: boolean;
125
149
  };
126
150
  }>> & Readonly<{
127
- onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
128
- onPlanChange?: (_plan: VirtualLayoutPlan<string>) => any;
151
+ onError?: (_error: import("@sectile/core").SectileError<VirtualErrorCode>) => any;
152
+ onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
129
153
  onStateChange?: (_state: object) => any;
130
154
  }>, {
131
155
  overscan: number | Partial<import("@sectile/core/geometry").Insets>;
156
+ viewportInsets: number | Partial<import("@sectile/core/geometry").Insets>;
132
157
  initialViewport: import("@sectile/core/geometry").Rect;
133
- measure: VirtualMeasurementResolver<object, string, unknown>;
158
+ measure: VirtualMeasurementResolver<object, StableID, unknown>;
134
159
  as: PrimitiveAs;
135
160
  asChild: boolean;
136
161
  }, SlotsType<{
137
162
  default: (props: VirtualizerRootSlotProps) => VNodeChild;
138
163
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
139
- export declare const VirtualizerContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
164
+ export declare const VirtualizerHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
165
+ as: {
166
+ type: PropType<PrimitiveAs>;
167
+ default: string;
168
+ };
169
+ asChild: {
170
+ type: BooleanConstructor;
171
+ default: boolean;
172
+ };
173
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
174
+ as: {
175
+ type: PropType<PrimitiveAs>;
176
+ default: string;
177
+ };
178
+ asChild: {
179
+ type: BooleanConstructor;
180
+ default: boolean;
181
+ };
182
+ }>> & Readonly<{}>, {
183
+ as: PrimitiveAs;
184
+ asChild: boolean;
185
+ }, SlotsType<{
186
+ default: () => VNodeChild;
187
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
188
+ export declare const VirtualizerSurface: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
140
189
  as: {
141
190
  type: PropType<PrimitiveAs>;
142
191
  default: string;
@@ -158,11 +207,11 @@ export declare const VirtualizerContent: import("vue").DefineComponent<import("v
158
207
  as: PrimitiveAs;
159
208
  asChild: boolean;
160
209
  }, SlotsType<{
161
- default: (plan: VirtualLayoutPlan<string> | null) => VNodeChild;
210
+ default: (plan: VirtualLayoutPlan<StableID> | null) => VNodeChild;
162
211
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
163
212
  export declare const VirtualizerItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
164
213
  placement: {
165
- type: PropType<VirtualPlacement<string>>;
214
+ type: PropType<VirtualPlacement<StableID>>;
166
215
  required: true;
167
216
  };
168
217
  size: {
@@ -179,7 +228,7 @@ export declare const VirtualizerItem: import("vue").DefineComponent<import("vue"
179
228
  };
180
229
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
181
230
  placement: {
182
- type: PropType<VirtualPlacement<string>>;
231
+ type: PropType<VirtualPlacement<StableID>>;
183
232
  required: true;
184
233
  };
185
234
  size: {
@@ -199,7 +248,33 @@ export declare const VirtualizerItem: import("vue").DefineComponent<import("vue"
199
248
  as: PrimitiveAs;
200
249
  asChild: boolean;
201
250
  }, SlotsType<{
202
- default: (placement: VirtualPlacement<string>) => VNodeChild;
251
+ default: (placement: VirtualPlacement<StableID>) => VNodeChild;
252
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
253
+ export declare const VirtualizerFooter: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
254
+ as: {
255
+ type: PropType<PrimitiveAs>;
256
+ default: string;
257
+ };
258
+ asChild: {
259
+ type: BooleanConstructor;
260
+ default: boolean;
261
+ };
262
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
263
+ as: {
264
+ type: PropType<PrimitiveAs>;
265
+ default: string;
266
+ };
267
+ asChild: {
268
+ type: BooleanConstructor;
269
+ default: boolean;
270
+ };
271
+ }>> & Readonly<{}>, {
272
+ as: PrimitiveAs;
273
+ asChild: boolean;
274
+ }, SlotsType<{
275
+ default: () => VNodeChild;
203
276
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
204
- export type { VirtualInsets, VirtualLayoutPlan, VirtualLayoutStrategy, VirtualMeasurementResolver, VirtualPlacement, VirtualRect, VirtualScrollAlignment, VirtualizerConnection, VirtualizerEnvironment, };
205
- export { createAxisMeasurementResolver, virtualContentStyle, virtualItemStyle };
277
+ export declare function useVirtualizerSurfaceRegistration(part: string): VirtualizerSurfaceRegistration;
278
+ export declare function virtualizerNotConnected<T>(): VirtualizerOperationResult<T>;
279
+ export type { VirtualInsets, VirtualLayoutPlan, VirtualLayoutStrategy, VirtualMeasurementResolver, VirtualPlacement, VirtualPoint, VirtualRect, VirtualScrollAlignment, VirtualizerConnection, VirtualizerEnvironment, };
280
+ export { createAxisMeasurementResolver, virtualItemStyle, virtualSurfaceStyle, };
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onScopeDispose,provide,shallowRef,toValue,watch}from'vue';import{createAxisMeasurementResolver,createVirtualizer,virtualContentStyle,virtualItemStyle}from'@sectile/dom/virtual';import{Primitive}from'../primitive.js';const virtualizerContextKey=Symbol('SectileVirtualizerRoot');export function useVirtualizer(options){const root=options.root??shallowRef(null);const plan=shallowRef(null);const connection=shallowRef();const items=new Map;const registrations=new Map;const report=error=>{options.onError?.(error)};const updateInitialPlan=()=>{if(options.initialViewport===undefined){plan.value=null;return}const overscan=toValue(options.overscan);const result=options.strategy.tryQuery(options.state.value,{viewport:options.initialViewport,...overscan===undefined?{}:{overscan}});if(!result.ok){report(result.error);return}plan.value=result.value;options.onPlanChange?.(result.value)};updateInitialPlan();const disconnect=()=>{registrations.clear();connection.value?.disconnect();connection.value=undefined};const connect=element=>{disconnect();if(element===null||element===undefined){updateInitialPlan();return}const overscan=toValue(options.overscan);const next=createVirtualizer({root:element,state:options.state.value,strategy:options.strategy,...overscan===undefined?{}:{overscan},...options.measure===undefined?{}:{measure:options.measure},...options.readViewport===undefined?{}:{readViewport:options.readViewport},...options.writeScroll===undefined?{}:{writeScroll:options.writeScroll},...options.environment===undefined?{}:{environment:options.environment},onPlanChange:value=>{plan.value=value;options.onPlanChange?.(value)},onStateChange:value=>{options.state.value=value;options.onStateChange?.(value)},onError:report});connection.value=next;for(const[item,id]of items)registrations.set(item,next.registerItem(item,id))};watch(root,connect,{flush:'post',immediate:true});watch(options.state,value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setState(value)},{flush:'sync'});watch(()=>toValue(options.overscan),value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setOverscan(value)},{deep:true,flush:'sync'});onScopeDispose(disconnect);const requireConnection=()=>{if(connection.value===undefined)throw new TypeError('Virtualizer must be mounted before this operation.');return connection.value};return Object.freeze({root,plan,connection,registerItem:(element,id)=>{registrations.get(element)?.();items.set(element,id);if(connection.value!==undefined){registrations.set(element,connection.value.registerItem(element,id))}return()=>{if(items.get(element)!==id)return;registrations.get(element)?.();registrations.delete(element);items.delete(element)}},measure:measurements=>requireConnection().measure(measurements),mutate:mutation=>requireConnection().mutate(mutation),scrollTo:(id,alignment)=>requireConnection().scrollTo(id,alignment),refresh:()=>{connection.value?.refresh()},flush:()=>requireConnection().flush()})}export const VirtualizerRoot=/* @__PURE__ */defineComponent({name:'SectileVirtualizerRoot',inheritAttrs:false,props:{defaultState:{type:Object,required:true},strategy:{type:Object,required:true},overscan:{type:[Number,Object],default:undefined},initialViewport:{type:Object,default:undefined},measure:{type:Function,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const state=shallowRef(props.defaultState);const virtualizer=useVirtualizer({state,strategy:props.strategy,overscan:()=>props.overscan,...props.initialViewport===undefined?{}:{initialViewport:props.initialViewport},...props.measure===undefined?{}:{measure:props.measure},onStateChange:value=>{emit('stateChange',value)},onPlanChange:value=>{emit('planChange',value)},onError:error=>{emit('error',error)}});let constructionWarningShown=false;watch(()=>[props.strategy,props.measure,props.initialViewport],(value,previous)=>{if(constructionWarningShown||value.every((item,index)=>Object.is(item,previous[index])))return;constructionWarningShown=true;console.warn('[Sectile] VirtualizerRoot strategy, measure, and initialViewport are construction-time options. Remount the root to change them.')},{flush:'sync'});const slotProps=computed(()=>Object.freeze({state:state.value,plan:virtualizer.plan.value,placements:virtualizer.plan.value?.placements??Object.freeze([]),scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));provide(virtualizerContextKey,{plan:computed(()=>virtualizer.plan.value),registerItem:virtualizer.registerItem});expose(Object.freeze({root:virtualizer.root,get state(){return slotProps.value.state},get plan(){return slotProps.value.plan},get placements(){return slotProps.value.placements},scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{virtualizer.root.value=element instanceof HTMLElement?element:null},'data-scope':'virtualizer','data-part':'root'}),{default:()=>slots['default']?.(slotProps.value)})}});export const VirtualizerContent=/* @__PURE__ */defineComponent({name:'SectileVirtualizerContent',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerContent');const style=computed(()=>root.plan.value===null?Object.freeze({position:'relative'}):virtualContentStyle(root.plan.value));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,style:style.value,'data-scope':'virtualizer','data-part':'content'}),{default:()=>slots['default']?.(root.plan.value)})}});export const VirtualizerItem=/* @__PURE__ */defineComponent({name:'SectileVirtualizerItem',inheritAttrs:false,props:{placement:{type:Object,required:true},size:{type:String,default:'none'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerItem');let unregister;onBeforeUnmount(()=>{unregister?.()});const sizing=computed(()=>Object.freeze({width:props.size==='width'||props.size==='both',height:props.size==='height'||props.size==='both'}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{unregister?.();unregister=element instanceof HTMLElement?root.registerItem(element,props.placement.id):undefined},style:virtualItemStyle(props.placement,sizing.value),'data-scope':'virtualizer','data-part':'item','data-index':props.placement.index,'data-visible':props.placement.visible?'':undefined}),{default:()=>slots['default']?.(props.placement)})}});function useVirtualizerRoot(part){const root=inject(virtualizerContextKey);if(root===undefined)throw new TypeError(`${part} must be used inside VirtualizerRoot.`);return root}export{createAxisMeasurementResolver,virtualContentStyle,virtualItemStyle};
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onScopeDispose,provide,shallowReactive,shallowRef,toValue,watch}from'vue';import{createAxisMeasurementResolver,createVirtualizer,virtualItemStyle,virtualSurfaceStyle}from'@sectile/dom/virtual';import{Primitive}from'../primitive.js';const virtualizerContextKey=Symbol('SectileVirtualizerRoot');const virtualizerSurfaceContextKey=Symbol('SectileVirtualizerSurface');export function useVirtualizer(options){const scrollport=options.scrollport??shallowRef(null);const surface=options.surface??shallowRef(null);const plan=shallowRef(null);const connection=shallowRef();const frames=new Map;const frameRegistrations=new Map;const items=new Map;const itemRegistrations=new Map;let disposed=false;const report=error=>{options.onError?.(error)};const updateInitialPlan=()=>{if(options.initialViewport===undefined){plan.value=null;return}const overscan=toValue(options.overscan);const result=options.strategy.tryQuery(options.state.value,{viewport:options.initialViewport,...overscan===undefined?{}:{overscan}});if(!result.ok){report(result.error);return}plan.value=result.value;options.onPlanChange?.(result.value)};updateInitialPlan();const disconnectConnection=()=>{frameRegistrations.clear();itemRegistrations.clear();connection.value?.disconnect();connection.value=undefined};const connect=()=>{if(disposed)return;disconnectConnection();const currentScrollport=scrollport.value;const currentSurface=surface.value;if(currentScrollport===null||currentScrollport===undefined||currentSurface===null||currentSurface===undefined){updateInitialPlan();return}const overscan=toValue(options.overscan);const viewportInsets=toValue(options.viewportInsets);const next=createVirtualizer({scrollport:currentScrollport,surface:currentSurface,state:options.state.value,strategy:options.strategy,...overscan===undefined?{}:{overscan},...viewportInsets===undefined?{}:{viewportInsets},...options.measure===undefined?{}:{measure:options.measure},...options.readViewport===undefined?{}:{readViewport:options.readViewport},...options.writeScroll===undefined?{}:{writeScroll:options.writeScroll},...options.environment===undefined?{}:{environment:options.environment},onPlanChange:value=>{plan.value=value;options.onPlanChange?.(value)},onStateChange:value=>{options.state.value=value;options.onStateChange?.(value)},onError:report});connection.value=next;for(const frame of frames.keys()){frameRegistrations.set(frame,next.registerFrame(frame))}for(const[item,desired]of items){itemRegistrations.set(item,next.registerItem(item,desired.id))}};watch([scrollport,surface],connect,{flush:'post',immediate:true});watch(options.state,value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setState(value)},{flush:'sync'});watch(()=>toValue(options.overscan),value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setOverscan(value)},{deep:true,flush:'sync'});watch(()=>toValue(options.viewportInsets),value=>{connection.value?.setViewportInsets(value)},{deep:true,flush:'sync'});onScopeDispose(()=>{disposed=true;disconnectConnection();frames.clear();items.clear()});const currentConnection=()=>connection.value;return Object.freeze({scrollport,surface,plan,connection,registerFrame:element=>{const token=Object.freeze({});frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.set(element,token);if(connection.value!==undefined){frameRegistrations.set(element,connection.value.registerFrame(element))}return()=>{if(frames.get(element)!==token)return;frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.delete(element)}},registerItem:(element,id)=>{const token=Object.freeze({});itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.set(element,Object.freeze({id,token}));if(connection.value!==undefined){itemRegistrations.set(element,connection.value.registerItem(element,id))}return()=>{if(items.get(element)?.token!==token)return;itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.delete(element)}},measure:measurements=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.measure(measurements)},mutate:mutation=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.mutate(mutation)},scrollTo:(id,alignment)=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.scrollTo(id,alignment)},refresh:()=>{connection.value?.refresh()},flush:()=>{const active=currentConnection();return active===undefined?virtualizerNotConnected():active.flush()}})}export const VirtualizerRoot=/* @__PURE__ */defineComponent({name:'SectileVirtualizerRoot',inheritAttrs:false,props:{defaultState:{type:Object,required:true},strategy:{type:Object,required:true},overscan:{type:[Number,Object],default:undefined},viewportInsets:{type:[Number,Object],default:undefined},initialViewport:{type:Object,default:undefined},measure:{type:Function,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const state=shallowRef(props.defaultState);const virtualizer=useVirtualizer({state,strategy:props.strategy,overscan:()=>props.overscan,viewportInsets:()=>props.viewportInsets,...props.initialViewport===undefined?{}:{initialViewport:props.initialViewport},...props.measure===undefined?{}:{measure:props.measure},onStateChange:value=>{emit('stateChange',value)},onPlanChange:value=>{emit('planChange',value)},onError:error=>{emit('error',error)}});watch(()=>props.defaultState,value=>{if(!Object.is(state.value,value))state.value=value},{flush:'sync'});let constructionWarningShown=false;watch(()=>[props.strategy,props.measure,props.initialViewport],(value,previous)=>{if(constructionWarningShown||value.every((item,index)=>Object.is(item,previous[index])))return;constructionWarningShown=true;console.warn('[Sectile] VirtualizerRoot strategy, measure, and initialViewport are construction-time options. Remount the root to change them.')},{flush:'sync'});const slotProps=computed(()=>Object.freeze({state:state.value,plan:virtualizer.plan.value,placements:virtualizer.plan.value?.placements??Object.freeze([]),scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));provide(virtualizerContextKey,{plan:computed(()=>virtualizer.plan.value),surface:virtualizer.surface,registerFrame:virtualizer.registerFrame,registerItem:virtualizer.registerItem});expose(shallowReactive({get scrollport(){return virtualizer.scrollport},get surface(){return virtualizer.surface},get state(){return slotProps.value.state},get plan(){return slotProps.value.plan},get placements(){return slotProps.value.placements},scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{virtualizer.scrollport.value=element instanceof HTMLElement?element:null},'data-scope':'virtualizer','data-part':'root'}),{default:()=>slots['default']?.(slotProps.value)})}});export const VirtualizerHeader=/* @__PURE__ */defineComponent({name:'SectileVirtualizerHeader',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerHeader');let element=null;let unregister;const setElement=value=>{const next=value instanceof HTMLElement?value:null;if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'header'}),{default:()=>slots['default']?.()})}});export const VirtualizerSurface=/* @__PURE__ */defineComponent({name:'SectileVirtualizerSurface',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerSurface');provide(virtualizerSurfaceContextKey,{registerItem:root.registerItem});let element=null;const style=computed(()=>root.plan.value===null?Object.freeze({position:'relative'}):virtualSurfaceStyle(root.plan.value));const setElement=value=>{const next=value instanceof HTMLElement?value:null;if(element===next)return;if(element!==null&&root.surface.value===element){root.surface.value=null}element=next;if(next!==null)root.surface.value=next};onBeforeUnmount(()=>{if(element!==null&&root.surface.value===element){root.surface.value=null}element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:style.value,'data-scope':'virtualizer','data-part':'surface'}),{default:()=>slots['default']?.(root.plan.value)})}});export const VirtualizerItem=/* @__PURE__ */defineComponent({name:'SectileVirtualizerItem',inheritAttrs:false,props:{placement:{type:Object,required:true},size:{type:String,default:'none'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const surface=useVirtualizerSurface('VirtualizerItem');let element=null;let unregister;const sizing=computed(()=>Object.freeze({width:props.size==='width'||props.size==='both',height:props.size==='height'||props.size==='both'}));const setElement=value=>{const next=value instanceof HTMLElement?value:null;if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null){unregister=surface.registerItem(next,props.placement.id)}};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:virtualItemStyle(props.placement,sizing.value),'data-scope':'virtualizer','data-part':'item','data-index':props.placement.index,'data-visible':props.placement.visible?'':undefined}),{default:()=>slots['default']?.(props.placement)})}});export const VirtualizerFooter=/* @__PURE__ */defineComponent({name:'SectileVirtualizerFooter',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerFooter');let element=null;let unregister;const setElement=value=>{const next=value instanceof HTMLElement?value:null;if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'footer'}),{default:()=>slots['default']?.()})}});function useVirtualizerRoot(part){const root=inject(virtualizerContextKey);if(root===undefined){throw new TypeError(`${part} must be used inside VirtualizerRoot.`)}return root}function useVirtualizerSurface(part){const surface=inject(virtualizerSurfaceContextKey);if(surface===undefined){throw new TypeError(`${part} must be used inside VirtualizerSurface.`)}return surface}export function useVirtualizerSurfaceRegistration(part){return useVirtualizerSurface(part)}export function virtualizerNotConnected(){return{ok:false,error:{class:'transition-rejection',code:'virtualizer-not-connected',message:'Virtualizer requires mounted scrollport and surface elements.'}}}export{createAxisMeasurementResolver,virtualItemStyle,virtualSurfaceStyle};
2
2
  //# sourceMappingURL=virtual-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-core.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onScopeDispose","provide","shallowRef","toValue","watch","createAxisMeasurementResolver","createVirtualizer","virtualContentStyle","virtualItemStyle","Primitive","virtualizerContextKey","Symbol","useVirtualizer","options","root","plan","connection","items","Map","registrations","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnect","clear","connect","element","next","measure","readViewport","writeScroll","environment","onStateChange","item","id","set","registerItem","flush","immediate","setState","setOverscan","deep","requireConnection","TypeError","Object","freeze","get","delete","measurements","mutate","mutation","scrollTo","alignment","refresh","VirtualizerRoot","name","inheritAttrs","props","defaultState","type","required","Number","default","Function","as","String","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","virtualizer","constructionWarningShown","previous","every","index","is","console","warn","slotProps","placements","elementRef","HTMLElement","VirtualizerContent","useVirtualizerRoot","style","position","VirtualizerItem","placement","size","unregister","sizing","width","height","visible","part"],"sources":["../../src/internal/virtual-core.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"virtual-core.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onScopeDispose","provide","shallowReactive","shallowRef","toValue","watch","createAxisMeasurementResolver","createVirtualizer","virtualItemStyle","virtualSurfaceStyle","Primitive","virtualizerContextKey","Symbol","virtualizerSurfaceContextKey","useVirtualizer","options","scrollport","surface","plan","connection","frames","Map","frameRegistrations","items","itemRegistrations","disposed","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnectConnection","clear","disconnect","connect","currentScrollport","currentSurface","viewportInsets","next","measure","readViewport","writeScroll","environment","onStateChange","frame","keys","set","registerFrame","item","desired","registerItem","id","flush","immediate","setState","setOverscan","deep","setViewportInsets","currentConnection","Object","freeze","element","token","get","delete","measurements","active","virtualizerNotConnected","mutate","mutation","scrollTo","alignment","refresh","VirtualizerRoot","name","inheritAttrs","props","defaultState","type","required","Number","default","Function","as","String","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","virtualizer","is","constructionWarningShown","previous","every","index","console","warn","slotProps","placements","elementRef","HTMLElement","VirtualizerHeader","root","useVirtualizerRoot","unregister","setElement","VirtualizerSurface","style","position","VirtualizerItem","placement","size","useVirtualizerSurface","sizing","width","height","visible","VirtualizerFooter","part","TypeError","useVirtualizerSurfaceRegistration","class","code","message"],"sources":["../../src/internal/virtual-core.ts"],"mappings":"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","ignoreList":[]}