@sectile/vue 0.15.1 → 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/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 +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
package/README.md
CHANGED
|
@@ -13,8 +13,8 @@ Headless Vue components backed by Sectile DOM semantics.
|
|
|
13
13
|
Components expose stable `data-scope`, `data-part`, and `data-state` attributes. Styling, themes, spacing, and animation remain application responsibilities.
|
|
14
14
|
|
|
15
15
|
`@sectile/vue/virtual/core` provides the typed `useVirtualizer` composable and
|
|
16
|
-
`VirtualizerRoot`, `
|
|
17
|
-
`VirtualizerItem` supports `asChild`, so
|
|
18
|
-
semantic element while receiving virtual
|
|
19
|
-
`@sectile/virtual` separately when using
|
|
20
|
-
does not require it.
|
|
16
|
+
`VirtualizerRoot`, `VirtualizerHeader`, `VirtualizerSurface`, `VirtualizerItem`,
|
|
17
|
+
and `VirtualizerFooter` headless parts. `VirtualizerItem` supports `asChild`, so
|
|
18
|
+
existing collection items keep their semantic element while receiving virtual
|
|
19
|
+
placement and measurement refs. Install `@sectile/virtual` separately when using
|
|
20
|
+
this subpath; the rest of `@sectile/vue` does not require it.
|
|
@@ -1,38 +1,59 @@
|
|
|
1
1
|
import { type ShallowRef, type VNodeArrayChildren, type VNodeChild } from 'vue';
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
4
|
-
import type
|
|
5
|
-
|
|
2
|
+
import type { StableID } from '@sectile/core';
|
|
3
|
+
import type { Sequence } from '@sectile/core/sequence';
|
|
4
|
+
import { type VirtualCollectionIDResolver as OwnerVirtualCollectionIDResolver, type VirtualCollectionProjection, type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
5
|
+
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualPlacement, type VirtualPoint, type VirtualRect, type VirtualScrollAlignment } from '@sectile/dom/virtual';
|
|
6
|
+
import { type VirtualizerItemSize, type VirtualizerOperationResult, type VirtualizerRootExpose } from './virtual-core.js';
|
|
7
|
+
export type VirtualCollectionIDResolver<Value, ID extends StableID = StableID> = OwnerVirtualCollectionIDResolver<Value, ID>;
|
|
8
|
+
export type VirtualCollectionItemAttributes<Value> = {
|
|
9
|
+
bivarianceHack(value: Value, index: number): Readonly<Record<string, unknown>>;
|
|
10
|
+
}['bivarianceHack'];
|
|
11
|
+
export type PreparedVirtualCollection<Value = unknown, ID extends StableID = StableID> = VirtualCollectionProjection<Value, ID>;
|
|
12
|
+
export interface VirtualCollectionBaseProps<Value, ID extends StableID = StableID> {
|
|
6
13
|
readonly items: readonly Value[];
|
|
7
|
-
readonly
|
|
14
|
+
readonly getID: VirtualCollectionIDResolver<Value, ID>;
|
|
8
15
|
readonly overscan?: number | Partial<VirtualInsets>;
|
|
16
|
+
readonly viewportInsets?: number | Partial<VirtualInsets>;
|
|
9
17
|
readonly maxItems?: number;
|
|
10
18
|
readonly initialViewport?: VirtualRect;
|
|
11
19
|
readonly as?: string;
|
|
12
20
|
readonly contentAs?: string;
|
|
13
21
|
readonly itemAs?: string;
|
|
14
|
-
readonly itemAttributes?:
|
|
22
|
+
readonly itemAttributes?: VirtualCollectionItemAttributes<Value>;
|
|
15
23
|
}
|
|
16
|
-
export interface
|
|
17
|
-
readonly
|
|
18
|
-
readonly minLaneSize?: number;
|
|
19
|
-
readonly maxLaneCount?: number;
|
|
20
|
-
readonly laneGap?: number;
|
|
24
|
+
export interface VirtualCollectionSizePolicyProps<Value> {
|
|
25
|
+
readonly sizePolicy?: VirtualSizePolicy<Value>;
|
|
21
26
|
}
|
|
22
|
-
export interface
|
|
23
|
-
readonly
|
|
27
|
+
export interface VirtualCollectionLanePolicyProps {
|
|
28
|
+
readonly lanePolicy?: VirtualLanePolicy;
|
|
29
|
+
}
|
|
30
|
+
export type VirtualCollectionPhase = 'bootstrap' | 'ready' | 'empty';
|
|
31
|
+
export interface VirtualCollectionItemSlotProps<Value = unknown, ID extends StableID = StableID> {
|
|
32
|
+
readonly value: Value;
|
|
33
|
+
readonly id: ID;
|
|
34
|
+
readonly index: number;
|
|
35
|
+
readonly placement: VirtualPlacement<ID>;
|
|
36
|
+
}
|
|
37
|
+
export interface VirtualCollectionSlots<Value = unknown, ID extends StableID = StableID> {
|
|
38
|
+
readonly header?: () => VNodeChild;
|
|
39
|
+
readonly item?: (props: VirtualCollectionItemSlotProps<Value, ID>) => VNodeChild;
|
|
40
|
+
readonly empty?: () => VNodeChild;
|
|
41
|
+
readonly footer?: () => VNodeChild;
|
|
42
|
+
}
|
|
43
|
+
export interface VirtualCollectionExpose<State, ID extends StableID = StableID> {
|
|
44
|
+
readonly scrollport: ShallowRef<HTMLElement | null | undefined>;
|
|
45
|
+
readonly surface: ShallowRef<HTMLElement | null | undefined>;
|
|
24
46
|
readonly state: State;
|
|
25
|
-
readonly plan: VirtualLayoutPlan<
|
|
26
|
-
|
|
47
|
+
readonly plan: VirtualLayoutPlan<ID> | null;
|
|
48
|
+
readonly phase: VirtualCollectionPhase;
|
|
49
|
+
scrollToID(id: ID, alignment?: VirtualScrollAlignment): VirtualizerOperationResult<VirtualPoint>;
|
|
27
50
|
refresh(): void;
|
|
28
|
-
flush():
|
|
29
|
-
}
|
|
30
|
-
export interface ResponsiveLaneGeometry {
|
|
31
|
-
readonly count: number;
|
|
32
|
-
readonly extent: number;
|
|
51
|
+
flush(): VirtualizerOperationResult<VirtualLayoutPlan<ID>>;
|
|
33
52
|
}
|
|
34
|
-
export declare function
|
|
35
|
-
export declare function
|
|
36
|
-
export declare function
|
|
37
|
-
export declare function
|
|
53
|
+
export declare function prepareVirtualCollection<Value, ID extends StableID>(items: readonly Value[], getID: VirtualCollectionIDResolver<Value, ID>, maxItems?: number): PreparedVirtualCollection<Value, ID>;
|
|
54
|
+
export declare function updatePreparedVirtualCollection<Value, ID extends StableID>(previous: PreparedVirtualCollection<Value, ID>, items: readonly Value[], getID: VirtualCollectionIDResolver<Value, ID>): PreparedVirtualCollection<Value, ID>;
|
|
55
|
+
export declare function constrainPreparedVirtualCollection<Value, ID extends StableID>(prepared: PreparedVirtualCollection<Value, ID>, maxItems: number): Sequence<ID>;
|
|
56
|
+
export declare function renderHighLevelItems(scope: string, placements: readonly VirtualPlacement<StableID>[], prepared: PreparedVirtualCollection<unknown, StableID>, items: readonly unknown[], itemAs: string, itemAttributes: VirtualCollectionItemAttributes<unknown> | undefined, size: VirtualizerItemSize, render: (value: unknown, id: StableID, index: number, placement: VirtualPlacement<StableID>) => VNodeChild, empty: (() => VNodeChild) | undefined): VNodeArrayChildren;
|
|
57
|
+
export declare function renderCollectionBootstrapItems(scope: string, prepared: PreparedVirtualCollection<unknown, StableID>, items: readonly unknown[], count: number, width: number, itemAs: string, itemAttributes: VirtualCollectionItemAttributes<unknown> | undefined, render: (value: unknown, id: StableID, index: number, placement: VirtualPlacement<StableID>) => VNodeChild, itemRef: (index: number, value: unknown) => void): VNodeArrayChildren;
|
|
58
|
+
export declare function createVirtualCollectionExpose<State>(root: ShallowRef<VirtualizerRootExpose | undefined>, initialState: State, phase: () => VirtualCollectionPhase): VirtualCollectionExpose<State, StableID>;
|
|
38
59
|
export declare function nearlyEqual(left: number, right: number): boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{h,shallowRef}from
|
|
1
|
+
import{defineComponent,h,onBeforeUnmount,shallowReactive,shallowRef}from'vue';import{constrainVirtualCollectionDomain,createVirtualCollection,replaceVirtualCollection}from'@sectile/virtual/collection';import{virtualItemStyle}from'@sectile/dom/virtual';import{useVirtualizerSurfaceRegistration,virtualizerNotConnected}from'./virtual-core.js';export function prepareVirtualCollection(items,getID,maxItems=1_000_000){return createVirtualCollection(items,getID,{maxItems,maxIDCodeUnits:1_024})}export function updatePreparedVirtualCollection(previous,items,getID){return replaceVirtualCollection(previous,items,getID)}export function constrainPreparedVirtualCollection(prepared,maxItems){return constrainVirtualCollectionDomain(prepared,maxItems)}const VirtualCollectionProjectionRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualCollectionProjection',inheritAttrs:false,props:{scope:{type:String,required:true},placements:{type:Array,required:true},prepared:{type:Object,required:true},items:{type:Array,required:true},itemAs:{type:String,required:true},itemAttributes:{type:Function,default:undefined},size:{type:String,required:true}},slots:Object,setup(props,{slots}){const surface=useVirtualizerSurfaceRegistration('VirtualCollectionProjection');const registrations=new Map;const elements=new Map;const refs=new Map;const itemRef=id=>{const existing=refs.get(id);if(existing!==undefined)return existing;const callback=value=>{const element=value instanceof HTMLElement?value:null;if(element!==null&&elements.get(id)===element)return;registrations.get(id)?.();registrations.delete(id);elements.delete(id);if(element===null){if(refs.get(id)===callback)refs.delete(id);return}elements.set(id,element);registrations.set(id,surface.registerItem(element,id))};refs.set(id,callback);return callback};onBeforeUnmount(()=>{for(const unregister of registrations.values())unregister();registrations.clear();elements.clear();refs.clear()});return()=>{const sizing=itemSizing(props.size);const children=[];for(const placement of props.placements){const index=placement.index;if(index>=props.items.length||props.prepared.domain.at(index)!==placement.id)continue;const value=props.items[index];const attributes=props.itemAttributes?.(value,index)??{};const rendered=slots['default']?.({value,id:placement.id,index,placement});children.push(h(props.itemAs,{...attributes,key:placement.id,ref:itemRef(placement.id),style:[attributes['style'],virtualItemStyle(placement,sizing)],'data-scope':props.scope,'data-virtual-layout':props.scope,'data-part':'item','data-index':placement.index,'data-visible':placement.visible?'':undefined},normalizeChildren(rendered)))}return children}}});const VirtualCollectionBootstrapProjectionRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualCollectionBootstrapProjection',inheritAttrs:false,props:{scope:{type:String,required:true},prepared:{type:Object,required:true},items:{type:Array,required:true},count:{type:Number,required:true},width:{type:Number,required:true},itemAs:{type:String,required:true},itemAttributes:{type:Function,default:undefined},itemRef:{type:Function,required:true}},slots:Object,setup(props,{slots}){const refs=new Map;const bootstrapRef=index=>{const existing=refs.get(index);if(existing!==undefined)return existing;const callback=value=>{props.itemRef(index,value);if(value===null&&refs.get(index)===callback)refs.delete(index)};refs.set(index,callback);return callback};onBeforeUnmount(()=>refs.clear());return()=>{const children=[];const count=Math.min(props.count,props.prepared.domain.size);for(let index=0;index<count;index+=1){const id=props.prepared.domain.at(index);const value=props.items[index];const attributes=props.itemAttributes?.(value,index)??{};const placement=Object.freeze({id,index,rect:Object.freeze({x:index*props.width,y:0,width:props.width,height:0}),visible:true});children.push(h(props.itemAs,{...attributes,key:id,ref:bootstrapRef(index),style:[attributes['style'],{width:`${props.width}px`}],'data-scope':props.scope,'data-virtual-layout':props.scope,'data-part':'item','data-index':index,'data-bootstrap':''},normalizeChildren(slots['default']?.({value,id,index,placement}))))}return children}}});export function renderHighLevelItems(scope,placements,prepared,items,itemAs,itemAttributes,size,render,empty){if(prepared.domain.size===0){const child=empty?.();return child===undefined||child===null?[]:[child]}return[h(VirtualCollectionProjectionRuntime,{scope,placements,prepared,items,itemAs,...itemAttributes===undefined?{}:{itemAttributes},size},{default:({value,id,index,placement})=>render(value,id,index,placement)})]}export function renderCollectionBootstrapItems(scope,prepared,items,count,width,itemAs,itemAttributes,render,itemRef){return[h(VirtualCollectionBootstrapProjectionRuntime,{scope,prepared,items,count,width,itemAs,...itemAttributes===undefined?{}:{itemAttributes},itemRef},{default:({value,id,index,placement})=>render(value,id,index,placement)})]}export function createVirtualCollectionExpose(root,initialState,phase){const emptyScrollport=shallowRef(null);const emptySurface=shallowRef(null);return shallowReactive({get scrollport(){return root.value?.scrollport??emptyScrollport},get surface(){return root.value?.surface??emptySurface},get state(){return root.value?.state??initialState},get plan(){return root.value?.plan??null},get phase(){return phase()},scrollToID:(id,alignment)=>root.value?.scrollTo(id,alignment)??virtualizerNotConnected(),refresh:()=>root.value?.refresh(),flush:()=>root.value?.flush()??virtualizerNotConnected()})}export function nearlyEqual(left,right){return Math.abs(left-right)<0.01}function itemSizing(size){return Object.freeze({width:size==='width'||size==='both',height:size==='height'||size==='both'})}function normalizeChildren(rendered){if(rendered===undefined||rendered===null)return[];return Array.isArray(rendered)?rendered:[rendered]}
|
|
2
2
|
//# sourceMappingURL=virtual-collection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/virtual-collection.ts"],"mappings":"
|
|
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
|
|
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
|
|
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
|
|
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[]):
|
|
25
|
-
mutate(mutation: Mutation):
|
|
26
|
-
scrollTo(id: ID, alignment?: VirtualScrollAlignment):
|
|
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():
|
|
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,
|
|
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,
|
|
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<
|
|
43
|
-
readonly placements: readonly VirtualPlacement<
|
|
44
|
-
scrollTo(id:
|
|
45
|
-
measure(measurements: readonly unknown[]):
|
|
46
|
-
mutate(mutation: unknown):
|
|
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():
|
|
56
|
+
flush(): VirtualizerOperationResult<VirtualLayoutPlan<StableID>>;
|
|
49
57
|
}
|
|
50
|
-
export interface
|
|
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<
|
|
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
|
|
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,
|
|
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,
|
|
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<
|
|
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,
|
|
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,
|
|
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<
|
|
128
|
-
onPlanChange?: (_plan: VirtualLayoutPlan<
|
|
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,
|
|
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
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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
|
|
205
|
-
export
|
|
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":[]}
|