@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 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`, `VirtualizerContent`, and `VirtualizerItem` headless parts.
17
- `VirtualizerItem` supports `asChild`, so existing collection items keep their
18
- semantic element while receiving virtual placement and measurement refs. Install
19
- `@sectile/virtual` separately when using this subpath; the rest of `@sectile/vue`
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 { VirtualInsets, VirtualLayoutPlan, VirtualPlacement, VirtualRect, VirtualScrollAlignment, VirtualizerConnection } from '@sectile/dom/virtual';
3
- import { type VirtualizerItemSize, type VirtualizerRootExpose } from './virtual-core.js';
4
- import type { PreparedVirtualList, VirtualListItemAttributes, VirtualListKeyResolver } from './virtual-collection-model.js';
5
- export interface VirtualCollectionBaseProps<Value> {
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 getKey: VirtualListKeyResolver<Value>;
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?: VirtualListItemAttributes<Value>;
22
+ readonly itemAttributes?: VirtualCollectionItemAttributes<Value>;
15
23
  }
16
- export interface ResponsiveLaneProps {
17
- readonly laneCount?: number;
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 VirtualCollectionExpose<State> {
23
- readonly root: ShallowRef<HTMLElement | null | undefined>;
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<string> | null;
26
- scrollTo(id: string, alignment?: VirtualScrollAlignment): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['scrollTo']> | undefined;
47
+ readonly plan: VirtualLayoutPlan<ID> | null;
48
+ readonly phase: VirtualCollectionPhase;
49
+ scrollToID(id: ID, alignment?: VirtualScrollAlignment): VirtualizerOperationResult<VirtualPoint>;
27
50
  refresh(): void;
28
- flush(): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['flush']> | undefined;
29
- }
30
- export interface ResponsiveLaneGeometry {
31
- readonly count: number;
32
- readonly extent: number;
51
+ flush(): VirtualizerOperationResult<VirtualLayoutPlan<ID>>;
33
52
  }
34
- export declare function resolveResponsiveLanes(crossExtent: number, requestedCount: number | undefined, minLaneSize: number, maxLaneCount: number, laneGap: number): ResponsiveLaneGeometry;
35
- export declare function renderHighLevelItems(scope: string, placements: readonly VirtualPlacement<string>[], prepared: PreparedVirtualList, items: readonly unknown[], itemAs: string, itemAttributes: VirtualListItemAttributes<unknown> | undefined, size: VirtualizerItemSize, render: (value: unknown, key: string, index: number, placement: VirtualPlacement<string>) => VNodeChild, empty: (() => VNodeChild) | undefined): VNodeArrayChildren;
36
- export declare function renderCollectionBootstrapItems(scope: string, prepared: PreparedVirtualList, items: readonly unknown[], count: number, width: number, itemAs: string, itemAttributes: VirtualListItemAttributes<unknown> | undefined, render: (value: unknown, key: string, index: number, placement: VirtualPlacement<string>) => VNodeChild, itemRef: (index: number, value: unknown) => void): VNodeArrayChildren;
37
- export declare function createHighLevelVirtualExpose<State>(root: ShallowRef<VirtualizerRootExpose | undefined>, initialState: State): VirtualCollectionExpose<State>;
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"vue";import{VirtualizerItem}from"./virtual-core.js";function resolveResponsiveLanes(crossExtent,requestedCount,minLaneSize,maxLaneCount,laneGap){if(!Number.isFinite(minLaneSize)||minLaneSize<=0)throw new TypeError("minLaneSize must be a positive finite number.");if(!Number.isSafeInteger(maxLaneCount)||maxLaneCount<1)throw new TypeError("maxLaneCount must be a positive safe integer.");if(!Number.isFinite(laneGap)||laneGap<0)throw new TypeError("laneGap must be a non-negative finite number.");if(requestedCount!==void 0&&(!Number.isSafeInteger(requestedCount)||requestedCount<1))throw new TypeError("laneCount must be a positive safe integer.");const available=Number.isFinite(crossExtent)&&crossExtent>0?crossExtent:minLaneSize;const count=requestedCount??Math.max(1,Math.min(maxLaneCount,Math.floor((available+laneGap)/(minLaneSize+laneGap))));return Object.freeze({count,extent:Math.max(1,(available-laneGap*(count-1))/count)})}function renderHighLevelItems(scope,placements,prepared,items,itemAs,itemAttributes,size,render,empty){if(prepared.domain.size===0){const child=empty?.();return child===void 0||child===null?[]:[child]}return placements.flatMap(placement=>{const index=placement.index;if(index>=items.length||prepared.domain.at(index)!==placement.id)return[];const value=items[index];const attributes=itemAttributes?.(value,index)??{};return[h(VirtualizerItem,{...attributes,key:placement.id,placement,size,as:itemAs,style:attributes["style"],"data-scope":scope,"data-virtual-layout":scope,"data-part":"item"},{default:()=>render(value,placement.id,index,placement)})]})}function renderCollectionBootstrapItems(scope,prepared,items,count,width,itemAs,itemAttributes,render,itemRef){return Array.from({length:Math.min(count,prepared.domain.size)},(_unused,index)=>{const id=prepared.domain.at(index);const value=items[index];const attributes=itemAttributes?.(value,index)??{};const placement=Object.freeze({id,index,rect:Object.freeze({x:index*width,y:0,width,height:0}),visible:true});const rendered=render(value,id,index,placement);const children=rendered===void 0||rendered===null?[]:Array.isArray(rendered)?rendered:[rendered];return h(itemAs,{...attributes,key:id,ref:element=>itemRef(index,element),style:[attributes["style"],{width:`${width}px`}],"data-scope":scope,"data-virtual-layout":scope,"data-part":"item","data-index":index,"data-bootstrap":""},children)})}function createHighLevelVirtualExpose(root,initialState){const emptyRoot=shallowRef(null);return Object.freeze({get root(){return root.value?.root??emptyRoot},get state(){return root.value?.state??initialState},get plan(){return root.value?.plan??null},scrollTo:(id,alignment)=>root.value?.scrollTo(id,alignment),refresh:()=>root.value?.refresh(),flush:()=>root.value?.flush()})}function nearlyEqual(left,right){return Math.abs(left-right)<.01}export{createHighLevelVirtualExpose,nearlyEqual,renderCollectionBootstrapItems,renderHighLevelItems,resolveResponsiveLanes};
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":"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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":"OACEA,SACAC,gBACAC,EACAC,OACAC,WACAC,gBACAC,eACAC,QACAC,gBACAC,WACAC,QACAC,UAQK,aAILC,8BACAC,kBACAC,iBACAC,wBAgBK,8BACEC,cAAmC,kBAqI5C,MAAMC,sBAAwBC,OAAO,0BACrC,MAAMC,6BAA+BD,OAAO,oCAEtC,SAAUE,eACdC,SAEA,MAAMC,WAAaD,QAAQC,YACtBb,WAA2C,MAChD,MAAMc,QAAUF,QAAQE,SACnBd,WAA2C,MAChD,MAAMe,KAAOf,WAAyC,MACtD,MAAMgB,WACJhB,aACF,MAAMiB,OAAS,IAAIC,IACnB,MAAMC,mBAAqB,IAAID,IAC/B,MAAME,MAAQ,IAAIF,IAClB,MAAMG,kBAAoB,IAAIH,IAC9B,IAAII,SAAW,MAEf,MAAMC,OAAUC,QACdZ,QAAQa,UAAUD,QAEpB,MAAME,kBAAoB,KACxB,GAAId,QAAQe,kBAAoBC,UAAW,CACzCb,KAAKc,MAAQ,KACb,MACF,CACA,MAAMC,SAAW7B,QAAQW,QAAQkB,UACjC,MAAMC,OAASnB,QAAQoB,SAASC,SAASrB,QAAQsB,MAAML,MAAO,CAC5DM,SAAUvB,QAAQe,mBACdG,WAAaF,UAAY,GAAK,CAAEE,YAEtC,IAAKC,OAAOK,GAAI,CACdb,OAAOQ,OAAOP,OACd,MACF,CACAT,KAAKc,MAAQE,OAAOF,MACpBjB,QAAQyB,eAAeN,OAAOF,QAEhCH,oBAEA,MAAMY,qBAAuB,KAC3BnB,mBAAmBoB,QACnBlB,kBAAkBkB,QAClBvB,WAAWa,OAAOW,aAClBxB,WAAWa,MAAQD,WAErB,MAAMa,QAAU,KACd,GAAInB,SAAU,OACdgB,uBACA,MAAMI,kBAAoB7B,WAAWgB,MACrC,MAAMc,eAAiB7B,QAAQe,MAC/B,GACEa,oBAAsB,MACnBA,oBAAsBd,WACtBe,iBAAmB,MACnBA,iBAAmBf,UACtB,CACAF,oBACA,MACF,CACA,MAAMI,SAAW7B,QAAQW,QAAQkB,UACjC,MAAMc,eAAiB3C,QAAQW,QAAQgC,gBACvC,MAAMC,KAAOzC,kBAAkB,CAC7BS,WAAY6B,kBACZ5B,QAAS6B,eACTT,MAAOtB,QAAQsB,MAAML,MACrBG,SAAUpB,QAAQoB,YACdF,WAAaF,UAAY,GAAK,CAAEE,aAChCc,iBAAmBhB,UAAY,GAAK,CAAEgB,mBACtChC,QAAQkC,UAAYlB,UAAY,GAAK,CAAEkB,QAASlC,QAAQkC,YACxDlC,QAAQmC,eAAiBnB,UACzB,GACA,CAAEmB,aAAcnC,QAAQmC,iBACxBnC,QAAQoC,cAAgBpB,UACxB,GACA,CAAEoB,YAAapC,QAAQoC,gBACvBpC,QAAQqC,cAAgBrB,UACxB,GACA,CAAEqB,YAAarC,QAAQqC,aAC3BZ,aAAeR,QACbd,KAAKc,MAAQA,MACbjB,QAAQyB,eAAeR,QAEzBqB,cAAgBrB,QACdjB,QAAQsB,MAAML,MAAQA,MACtBjB,QAAQsC,gBAAgBrB,QAE1BJ,QAASF,SAEXP,WAAWa,MAAQgB,KACnB,IAAK,MAAMM,SAASlC,OAAOmC,OAAQ,CACjCjC,mBAAmBkC,IAAIF,MAAON,KAAKS,cAAcH,OACnD,CACA,IAAK,MAAOI,KAAMC,WAAYpC,MAAO,CACnCC,kBAAkBgC,IAAIE,KAAMV,KAAKY,aAAaF,KAAMC,QAAQE,IAC9D,GAGFxD,MAAM,CAACW,WAAYC,SAAU2B,QAAS,CAAEkB,MAAO,OAAQC,UAAW,OAClE1D,MACEU,QAAQsB,MACPL,QACC,GAAIb,WAAWa,QAAUD,UAAWF,yBAC/BV,WAAWa,MAAMgC,SAAShC,QAEjC,CAAE8B,MAAO,SAEXzD,MACE,IAAMD,QAAQW,QAAQkB,UACrBD,QACC,GAAIb,WAAWa,QAAUD,UAAWF,yBAC/BV,WAAWa,MAAMiC,YAAYjC,QAEpC,CAAEkC,KAAM,KAAMJ,MAAO,SAEvBzD,MACE,IAAMD,QAAQW,QAAQgC,gBACrBf,QACCb,WAAWa,OAAOmC,kBAAkBnC,QAEtC,CAAEkC,KAAM,KAAMJ,MAAO,SAEvB9D,eAAe,KACbyB,SAAW,KACXgB,uBACArB,OAAOsB,QACPnB,MAAMmB,UAGR,MAAM0B,kBAAoB,IAKTjD,WAAWa,MAE5B,OAAOqC,OAAOC,OAAO,CACnBtD,WACAC,QACAC,KACAC,WACAsC,cAAgBc,UACd,MAAMC,MAAQH,OAAOC,OAAO,IAC5BhD,mBAAmBmD,IAAIF,QAAvBjD,KACAA,mBAAmBoD,OAAOH,SAC1BnD,OAAOoC,IAAIe,QAASC,OACpB,GAAIrD,WAAWa,QAAUD,UAAW,CAClCT,mBAAmBkC,IACjBe,QACApD,WAAWa,MAAMyB,cAAcc,SAEnC,CACA,MAAO,KACL,GAAInD,OAAOqD,IAAIF,WAAaC,MAAO,OACnClD,mBAAmBmD,IAAIF,QAAvBjD,KACAA,mBAAmBoD,OAAOH,SAC1BnD,OAAOsD,OAAOH,WAGlBX,aAAc,CAACW,QAAsBV,MACnC,MAAMW,MAAQH,OAAOC,OAAO,IAC5B9C,kBAAkBiD,IAAIF,QAAtB/C,KACAA,kBAAkBkD,OAAOH,SACzBhD,MAAMiC,IAAIe,QAASF,OAAOC,OAAO,CAAET,GAAIW,SACvC,GAAIrD,WAAWa,QAAUD,UAAW,CAClCP,kBAAkBgC,IAChBe,QACApD,WAAWa,MAAM4B,aAAaW,QAASV,IAE3C,CACA,MAAO,KACL,GAAItC,MAAMkD,IAAIF,UAAUC,QAAUA,MAAO,OACzChD,kBAAkBiD,IAAIF,QAAtB/C,KACAA,kBAAkBkD,OAAOH,SACzBhD,MAAMmD,OAAOH,WAGjBtB,QACE0B,eAEA,MAAMC,OAASR,oBACf,OAAOQ,SAAW7C,UACd8C,0BACAD,OAAO3B,QAAQ0B,eAErBG,OACEC,WAEA,MAAMH,OAASR,oBACf,OAAOQ,SAAW7C,UACd8C,0BACAD,OAAOE,OAAOC,WAEpBC,SAAU,CACRnB,GACAoB,aAEA,MAAML,OAASR,oBACf,OAAOQ,SAAW7C,UACd8C,0BACAD,OAAOI,SAASnB,GAAIoB,YAE1BC,QAAS,KACP/D,WAAWa,OAAOkD,WAEpBpB,MAAO,KACL,MAAMc,OAASR,oBACf,OAAOQ,SAAW7C,UACd8C,0BACAD,OAAOd,UAGjB,QAEO,MAAMqB,+BAAkCxF,gBAAgB,CAC7DyF,KAAM,yBACNC,aAAc,MACdC,MAAO,CACLC,aAAc,CAAEC,KAAMnB,OAA4BoB,SAAU,MAC5DtD,SAAU,CACRqD,KAAMnB,OAGNoB,SAAU,MAEZxD,SAAU,CACRuD,KAAM,CAACE,OAAQrB,QACfsB,QAAS5D,WAEXgB,eAAgB,CACdyC,KAAM,CAACE,OAAQrB,QACfsB,QAAS5D,WAEXD,gBAAiB,CACf0D,KAAMnB,OACNsB,QAAS5D,WAEXkB,QAAS,CACPuC,KAAMI,SAGND,QAAS5D,WAEX8D,GAAI,CACFL,KAAM,CAACM,OAAQzB,OAAQuB,UACvBD,QAAS,OAEXI,QAAS,CAAEP,KAAMQ,QAASL,QAAS,QAErCM,MAAO,CACLC,YAAcC,QAA4B,KAC1CC,WAAaC,OAAgD,KAC7D1E,MAAQ2E,QAA4D,MAEtEC,MAAOlC,OAGP,KAAAmC,CAAMlB,OAAOmB,MAAOC,KAAMC,OAAQJ,QAChC,MAAMlE,MAAQlC,WAAWmF,MAAMC,cAC/B,MAAMqB,YAAc9F,eAAe,CACjCuB,MACAF,SAAUmD,MAAMnD,SAChBF,SAAU,IAAMqD,MAAMrD,SACtBc,eAAgB,IAAMuC,MAAMvC,kBACxBuC,MAAMxD,kBAAoBC,UAC1B,GACA,CAAED,gBAAiBwD,MAAMxD,oBACzBwD,MAAMrC,UAAYlB,UAAY,GAAK,CAAEkB,QAASqC,MAAMrC,SACxDI,cAAgBrB,QACd0E,KAAK,cAAe1E,QAEtBQ,aAAeR,QACb0E,KAAK,aAAc1E,QAErBJ,QAAUD,QACR+E,KAAK,QAAS/E,UAGlBtB,MACE,IAAMiF,MAAMC,aACXvD,QACC,IAAKqC,OAAOwC,GAAGxE,MAAML,MAAOA,OAAQK,MAAML,MAAQA,OAEpD,CAAE8B,MAAO,SAEX,IAAIgD,yBAA2B,MAC/BzG,MACE,IAAM,CAACiF,MAAMnD,SAAUmD,MAAMrC,QAASqC,MAAMxD,iBAC5C,CAACE,MAAO+E,YACN,GACED,0BACG9E,MAAMgF,MAAM,CAACtD,KAAMuD,QAAU5C,OAAOwC,GAAGnD,KAAMqD,SAASE,SACzD,OACFH,yBAA2B,KAC3BI,QAAQC,KACN,qIAGJ,CAAErD,MAAO,SAEX,MAAMsD,UAAY1H,SAAmC,IACnD2E,OAAOC,OAAO,CACZjC,MAAOA,MAAML,MACbd,KAAM0F,YAAY1F,KAAKc,MACvBqF,WAAYT,YAAY1F,KAAKc,OAAOqF,YAAchD,OAAOC,OAAO,IAChEU,SAAU4B,YAAY5B,SACtB/B,QAAS2D,YAAY3D,QACrB6B,OAAQ8B,YAAY9B,OACpBI,QAAS0B,YAAY1B,QACrBpB,MAAO8C,YAAY9C,SAGvB7D,QAA4BU,sBAAuB,CACjDO,KAAMxB,SAAS,IAAMkH,YAAY1F,KAAKc,OACtCf,QAAS2F,YAAY3F,QACrBwC,cAAemD,YAAYnD,cAC3BG,aAAcgD,YAAYhD,eAE5B+C,OACEzG,gBAAgB,CACd,cAAIc,GACF,OAAO4F,YAAY5F,UACrB,EACA,WAAIC,GACF,OAAO2F,YAAY3F,OACrB,EACA,SAAIoB,GACF,OAAO+E,UAAUpF,MAAMK,KACzB,EACA,QAAInB,GACF,OAAOkG,UAAUpF,MAAMd,IACzB,EACA,cAAImG,GACF,OAAOD,UAAUpF,MAAMqF,UACzB,EACArC,SAAU4B,YAAY5B,SACtB/B,QAAS2D,YAAY3D,QACrB6B,OAAQ8B,YAAY9B,OACpBI,QAAS0B,YAAY1B,QACrBpB,MAAO8C,YAAY9C,SAGvB,MAAO,IACLlE,EACEc,UACAZ,WAAW2G,MAAO,CAChBZ,GAAIP,MAAMO,GACVE,QAAST,MAAMS,QACfuB,WAAa/C,UACXqC,YAAY5F,WAAWgB,MACrBuC,mBAAmBgD,YAAchD,QAAU,MAE/C,aAAc,cACd,YAAa,SAEf,CAAEoB,QAAS,IAAMY,MAAM,aAAaa,UAAUpF,QAEpD,WAGK,MAAMwF,iCAAoC7H,gBAAgB,CAC/DyF,KAAM,2BACNC,aAAc,MACdC,MAAO,CACLO,GAAI,CACFL,KAAM,CAACM,OAAQzB,OAAQuB,UACvBD,QAAS,OAEXI,QAAS,CAAEP,KAAMQ,QAASL,QAAS,QAErCY,MAAOlC,OACP,KAAAmC,CAAMlB,OAAOmB,MAAOF,QAClB,MAAMkB,KAAOC,mBAAmB,qBAChC,IAAInD,QAA8B,KAClC,IAAIoD,WACJ,MAAMC,WAAc5F,QAClB,MAAMgB,KAAOhB,iBAAiBuF,YAAcvF,MAAQ,KACpD,GAAIuC,UAAYvB,KAAM,OACtB2E,eACAA,WAAa5F,UACbwC,QAAUvB,KACV,GAAIA,OAAS,KAAM2E,WAAaF,KAAKhE,cAAcT,OAErDjD,gBAAgB,KACd4H,eACAA,WAAa5F,UACbwC,QAAU,OAEZ,MAAO,IAAkB3E,EACvBc,UACAZ,WAAW2G,MAAO,CAChBZ,GAAIP,MAAMO,GACVE,QAAST,MAAMS,QACfuB,WAAYM,WACZ,aAAc,cACd,YAAa,WAEf,CAAEjC,QAAS,IAAMY,MAAM,gBAE3B,WAGK,MAAMsB,kCAAqClI,gBAAgB,CAChEyF,KAAM,4BACNC,aAAc,MACdC,MAAO,CACLO,GAAI,CACFL,KAAM,CAACM,OAAQzB,OAAQuB,UACvBD,QAAS,OAEXI,QAAS,CAAEP,KAAMQ,QAASL,QAAS,QAErCY,MAAOlC,OAGP,KAAAmC,CAAMlB,OAAOmB,MAAOF,QAClB,MAAMkB,KAAOC,mBAAmB,sBAChCzH,QAAmCY,6BAA8B,CAC/D+C,aAAc6D,KAAK7D,eAErB,IAAIW,QAA8B,KAClC,MAAMuD,MAAQpI,SAAS,IACrB+H,KAAKvG,KAAKc,QAAU,KAChBqC,OAAOC,OAAO,CAAEyD,SAAU,aAC1BtH,oBAAoBgH,KAAKvG,KAAKc,QAEpC,MAAM4F,WAAc5F,QAClB,MAAMgB,KAAOhB,iBAAiBuF,YAAcvF,MAAQ,KACpD,GAAIuC,UAAYvB,KAAM,OACtB,GAAIuB,UAAY,MAAQkD,KAAKxG,QAAQe,QAAUuC,QAAS,CACtDkD,KAAKxG,QAAQe,MAAQ,IACvB,CACAuC,QAAUvB,KACV,GAAIA,OAAS,KAAMyE,KAAKxG,QAAQe,MAAQgB,MAE1CjD,gBAAgB,KACd,GAAIwE,UAAY,MAAQkD,KAAKxG,QAAQe,QAAUuC,QAAS,CACtDkD,KAAKxG,QAAQe,MAAQ,IACvB,CACAuC,QAAU,OAEZ,MAAO,IACL3E,EACEc,UACAZ,WAAW2G,MAAO,CAChBZ,GAAIP,MAAMO,GACVE,QAAST,MAAMS,QACfuB,WAAYM,WACZE,MAAOA,MAAM9F,MACb,aAAc,cACd,YAAa,YAEf,CAAE2D,QAAS,IAAMY,MAAM,aAAakB,KAAKvG,KAAKc,QAEpD,WAGK,MAAMgG,+BAAkCrI,gBAAgB,CAC7DyF,KAAM,yBACNC,aAAc,MACdC,MAAO,CACL2C,UAAW,CACTzC,KAAMnB,OACNoB,SAAU,MAEZyC,KAAM,CAAE1C,KAAMM,OAAyCH,QAAS,QAChEE,GAAI,CACFL,KAAM,CAACM,OAAQzB,OAAQuB,UACvBD,QAAS,OAEXI,QAAS,CAAEP,KAAMQ,QAASL,QAAS,QAErCY,MAAOlC,OAGP,KAAAmC,CAAMlB,OAAOmB,MAAOF,QAClB,MAAMtF,QAAUkH,sBAAsB,mBACtC,IAAI5D,QAA8B,KAClC,IAAIoD,WACJ,MAAMS,OAAS1I,SAAkC,IAC/C2E,OAAOC,OAAO,CACZ+D,MAAO/C,MAAM4C,OAAS,SAAW5C,MAAM4C,OAAS,OAChDI,OAAQhD,MAAM4C,OAAS,UAAY5C,MAAM4C,OAAS,UAGtD,MAAMN,WAAc5F,QAClB,MAAMgB,KAAOhB,iBAAiBuF,YAAcvF,MAAQ,KACpD,GAAIuC,UAAYvB,KAAM,OACtB2E,eACAA,WAAa5F,UACbwC,QAAUvB,KACV,GAAIA,OAAS,KAAM,CACjB2E,WAAa1G,QAAQ2C,aAAaZ,KAAMsC,MAAM2C,UAAUpE,GAC1D,GAEF9D,gBAAgB,KACd4H,eACAA,WAAa5F,UACbwC,QAAU,OAEZ,MAAO,IACL3E,EACEc,UACAZ,WAAW2G,MAAO,CAChBZ,GAAIP,MAAMO,GACVE,QAAST,MAAMS,QACfuB,WAAYM,WACZE,MAAOtH,iBAAiB8E,MAAM2C,UAAWG,OAAOpG,OAChD,aAAc,cACd,YAAa,OACb,aAAcsD,MAAM2C,UAAUhB,MAC9B,eAAgB3B,MAAM2C,UAAUM,QAAU,GAAKxG,YAEjD,CAAE4D,QAAS,IAAMY,MAAM,aAAajB,MAAM2C,YAEhD,WAGK,MAAMO,iCAAoC7I,gBAAgB,CAC/DyF,KAAM,2BACNC,aAAc,MACdC,MAAO,CACLO,GAAI,CACFL,KAAM,CAACM,OAAQzB,OAAQuB,UACvBD,QAAS,OAEXI,QAAS,CAAEP,KAAMQ,QAASL,QAAS,QAErCY,MAAOlC,OACP,KAAAmC,CAAMlB,OAAOmB,MAAOF,QAClB,MAAMkB,KAAOC,mBAAmB,qBAChC,IAAInD,QAA8B,KAClC,IAAIoD,WACJ,MAAMC,WAAc5F,QAClB,MAAMgB,KAAOhB,iBAAiBuF,YAAcvF,MAAQ,KACpD,GAAIuC,UAAYvB,KAAM,OACtB2E,eACAA,WAAa5F,UACbwC,QAAUvB,KACV,GAAIA,OAAS,KAAM2E,WAAaF,KAAKhE,cAAcT,OAErDjD,gBAAgB,KACd4H,eACAA,WAAa5F,UACbwC,QAAU,OAEZ,MAAO,IAAkB3E,EACvBc,UACAZ,WAAW2G,MAAO,CAChBZ,GAAIP,MAAMO,GACVE,QAAST,MAAMS,QACfuB,WAAYM,WACZ,aAAc,cACd,YAAa,WAEf,CAAEjC,QAAS,IAAMY,MAAM,gBAE3B,IAGF,SAASmB,mBAAmBe,MAC1B,MAAMhB,KAAO5H,OAA2Bc,uBACxC,GAAI8G,OAAS1F,UAAW,CACtB,MAAM,IAAI2G,UAAU,GAAGD,4CACzB,CACA,OAAOhB,IACT,CAEA,SAASU,sBAAsBM,MAC7B,MAAMxH,QAAUpB,OAAkCgB,8BAClD,GAAII,UAAYc,UAAW,CACzB,MAAM,IAAI2G,UAAU,GAAGD,+CACzB,CACA,OAAOxH,OACT,QAEM,SAAU0H,kCACdF,MAEA,OAAON,sBAAsBM,KAC/B,QAEM,SAAU5D,0BACd,MAAO,CACLtC,GAAI,MACJZ,MAAO,CACLiH,MAAO,uBACPC,KAAM,4BACNC,QAAS,iEAGf,QAgBExI,8BACAE,iBACAC","ignoreList":[]}