@sectile/vue 0.15.1 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +5 -5
  2. package/dist/chart.js +1 -1
  3. package/dist/chart.js.map +1 -1
  4. package/dist/internal/popup.js +1 -1
  5. package/dist/internal/popup.js.map +1 -1
  6. package/dist/internal/presence.d.ts +1 -1
  7. package/dist/internal/presence.js +1 -1
  8. package/dist/internal/presence.js.map +1 -1
  9. package/dist/internal/virtual-collection.d.ts +45 -24
  10. package/dist/internal/virtual-collection.js +1 -1
  11. package/dist/internal/virtual-collection.js.map +1 -1
  12. package/dist/internal/virtual-core.d.ts +109 -34
  13. package/dist/internal/virtual-core.js +1 -1
  14. package/dist/internal/virtual-core.js.map +1 -1
  15. package/dist/internal/virtual-list.d.ts +58 -85
  16. package/dist/internal/virtual-list.js +1 -1
  17. package/dist/internal/virtual-list.js.map +1 -1
  18. package/dist/virtual-core.d.ts +1 -1
  19. package/dist/virtual-core.js +1 -1
  20. package/dist/virtual-core.js.map +1 -1
  21. package/dist/virtual-grid.d.ts +50 -75
  22. package/dist/virtual-grid.js +1 -1
  23. package/dist/virtual-grid.js.map +1 -1
  24. package/dist/virtual-list.d.ts +2 -1
  25. package/dist/virtual-list.js.map +1 -1
  26. package/dist/virtual-masonry.d.ts +51 -76
  27. package/dist/virtual-masonry.js +1 -1
  28. package/dist/virtual-masonry.js.map +1 -1
  29. package/dist/virtual-spatial.d.ts +44 -32
  30. package/dist/virtual-spatial.js +1 -1
  31. package/dist/virtual-spatial.js.map +1 -1
  32. package/package.json +8 -8
  33. package/dist/internal/virtual-collection-model.d.ts +0 -46
  34. package/dist/internal/virtual-collection-model.js +0 -2
  35. package/dist/internal/virtual-collection-model.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{VirtualizerContent,VirtualizerRoot}from'./internal/virtual-core.js';import{assertVirtualListSizeMode,createPreparedVirtualListSequence,exactExtent,estimatedExtent,prepareVirtualList,requireAutomaticEstimate,requiresDOMBootstrap,updatePreparedVirtualList}from'./internal/virtual-collection-model.js';import{createHighLevelVirtualExpose,nearlyEqual,renderCollectionBootstrapItems,renderHighLevelItems,resolveResponsiveLanes}from'./internal/virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getKey:{type:Function,required:true},itemSize:{type:Number,default:undefined},estimateSize:{type:[Number,Function],default:undefined},laneCount:{type:Number,default:undefined},minLaneSize:{type:Number,default:240},maxLaneCount:{type:Number,default:12},laneGap:{type:Number,default:0},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){assertVirtualListSizeMode(props.itemSize,props.estimateSize);const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualList(props.items,props.getKey,props.maxItems));const initialGeometry=resolveResponsiveLanes(initialViewport?.width??0,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const automaticEstimate=shallowRef();const isBootstrapping=()=>requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=requiresDOMBootstrap(props.itemSize,props.estimateSize)?createVirtualGridState(prepareVirtualList([],props.getKey,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(automaticEstimate.value!==undefined||!requiresDOMBootstrap(props.itemSize,props.estimateSize)||prepared.value.domain.size===0)return;const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.itemSize===undefined?({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.estimateSize,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:exactExtent(height)})}:undefined;const sync=()=>{if(requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualList(prepared.value,props.items,props.getKey);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualList(prepared.value,props.items,props.getKey);const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getKey,props.itemSize,props.estimateSize,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createHighLevelVirtualExpose(root,initialState));return()=>h(VirtualizerRoot,{...attrs,key:isBootstrapping()?'bootstrap':'ready',ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{if(plan.viewport.width>0)viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>h(VirtualizerContent,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).count,prepared.value.domain.size),resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).extent,props.itemAs,props.itemAttributes,(value,key,index,placement)=>slots['default']?.({value,key,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.itemSize===undefined?'width':'both',(value,key,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['default']?.({value,key,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])})})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,exactExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:props.laneGap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const estimate=props.estimateSize??automaticEstimate;const shared=props.itemSize!==undefined?exactExtent(props.itemSize):typeof estimate!=='function'?estimatedExtent(requireAutomaticEstimate(estimate),undefined,0):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.itemSize!==undefined)return exactExtent(props.itemSize);const estimate=requireAutomaticEstimate(props.estimateSize??automaticEstimate);let value=typeof estimate==='number'?estimate:0;if(typeof estimate==='function'){const start=row*columnCount;const end=Math.min(items.length,start+columnCount);for(let index=start;index<end;index+=1)value=Math.max(value,estimate(items[index],index))}return Object.freeze({kind:'unknown',fallback:value})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,estimate,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const resolvedEstimate=requireAutomaticEstimate(estimate??automaticEstimate);const fallback=typeof resolvedEstimate==='function'?resolvedEstimate(items[index],index):resolvedEstimate;maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function syncVirtualGrid(exposed,previous,prepared,items,props,geometry,measured,automaticEstimate){let state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const itemEstimatesChanged=props.itemSize===undefined&&typeof props.estimateSize==='function'&&previous.items!==items;const geometryUnchanged=state.regions.size===prepared.domain.size&&state.rows.size===rowCount&&state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===props.laneGap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent)&&!itemEstimatesChanged;if(geometryUnchanged&&prepared.change===null)return true;const structuralGeometryUnchanged=prepared.change!==null&&state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===props.laneGap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent)&&!itemEstimatesChanged;if(structuralGeometryUnchanged){const rowPatch=rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)});const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createGridRowExtents(rowCount,geometry.count,items,props,automaticEstimate).map((extent,row)=>{if(props.itemSize!==undefined)return extent;const measuredHeight=gridMeasuredRowHeight(row,geometry.count,prepared,items,props.estimateSize,measured,automaticEstimate);return measuredHeight>('fallback'in extent?extent.fallback:extent.value)?exactExtent(measuredHeight):extent});const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:Object.freeze(rowExtents)}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>exactExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./internal/virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./internal/virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualGridState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.sizePolicy,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:createExactVirtualExtent(height)})};const sync=()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);if(next.valueChange!==null&&props.sizePolicy.kind!=='fixed'){const end=next.valueChange.index+next.valueChange.count;for(let index=next.valueChange.index;index<end;index+=1){const id=next.domain.at(index);if(id!==null)measuredHeights.delete(id)}}if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getID,props.sizePolicy,props.lanePolicy,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['item']?.({value,id,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,createExactVirtualExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:geometry.gap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.sizePolicy.kind==='fixed'){return createExactVirtualExtent(props.sizePolicy.extent)}const start=row*columnCount;const end=Math.min(items.length,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){maximum=Math.max(maximum,extentValue(createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)))}return Object.freeze({kind:'unknown',fallback:maximum})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,sizePolicy,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const fallback=extentValue(createVirtualExtent(sizePolicy,items[index],index,automaticEstimate));maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function extentValue(extent){return extent.kind==='unknown'?extent.fallback:extent.value}function createResolvedGridRowExtents(rowCount,columnCount,prepared,items,props,measured,automaticEstimate,startRow=0){const extents=createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow);if(props.sizePolicy.kind==='fixed')return extents;return Object.freeze(extents.map((extent,localRow)=>{const row=startRow+localRow;const measuredHeight=gridMeasuredRowHeight(row,columnCount,prepared,items,props.sizePolicy,measured,automaticEstimate);return measuredHeight>extentValue(extent)?createExactVirtualExtent(measuredHeight):extent}))}function syncVirtualGrid(exposed,_previous,prepared,items,props,geometry,measured,automaticEstimate){const state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const geometryUnchanged=state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===geometry.gap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent);if(geometryUnchanged&&prepared.change===null&&prepared.valueChange===null){return state.regions.size===prepared.domain.size&&state.rows.size===rowCount}if(geometryUnchanged&&prepared.change===null&&prepared.valueChange!==null){if(props.sizePolicy.kind==='fixed')return true;const startRow=Math.floor(prepared.valueChange.index/geometry.count);const endRow=Math.min(rowCount,Math.ceil((prepared.valueChange.index+prepared.valueChange.count)/geometry.count));if(endRow<=startRow)return true;const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:startRow,deleteCount:endRow-startRow,inserted:createResolvedGridRowExtents(endRow-startRow,geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})}));return result.ok}if(geometryUnchanged&&prepared.change!==null){const rowPatch=props.sizePolicy.kind==='fixed'?rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)}):(()=>{const startRow=Math.floor(prepared.change.index/geometry.count);return Object.freeze({index:startRow,deleteCount:Math.max(0,state.rows.size-startRow),inserted:createResolvedGridRowExtents(Math.max(0,rowCount-startRow),geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})})();const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createResolvedGridRowExtents(rowCount,geometry.count,prepared,items,props,measured,automaticEstimate);const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:rowExtents}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>createExactVirtualExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
2
2
  //# sourceMappingURL=virtual-grid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","createAxisMeasurementResolver","VirtualizerContent","VirtualizerRoot","assertVirtualListSizeMode","createPreparedVirtualListSequence","exactExtent","estimatedExtent","prepareVirtualList","requireAutomaticEstimate","requiresDOMBootstrap","updatePreparedVirtualList","createHighLevelVirtualExpose","nearlyEqual","renderCollectionBootstrapItems","renderHighLevelItems","resolveResponsiveLanes","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getKey","Function","itemSize","Number","default","undefined","estimateSize","laneCount","minLaneSize","maxLaneCount","laneGap","rowGap","overscan","Object","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","kind","axis","extent","sync","exposed","next","keys","contains","syncVirtualGrid","flush","key","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","maxRegions","columnCount","estimate","shared","createGridRowExtents","startRow","from","length","_unused","localRow","start","end","fallback","measured","resolvedEstimate","previous","currentColumn","itemEstimatesChanged","geometryUnchanged","change","structuralGeometryUnchanged","rowPatch","deleteCount","inserted","result","mutate","regionPatch","ok","rowExtents","map","measuredHeight","columnPatch"],"sources":["../src/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","rowGap","Number","default","overscan","viewportInsets","undefined","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","kind","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","axis","extent","sync","exposed","next","valueChange","end","keys","contains","syncVirtualGrid","flush","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","gap","maxRegions","columnCount","shared","estimate","createGridRowExtents","startRow","from","length","_unused","localRow","start","extentValue","fallback","measured","createResolvedGridRowExtents","extents","map","measuredHeight","_previous","currentColumn","geometryUnchanged","change","floor","endRow","result","mutate","rowPatch","deleteCount","inserted","ok","regionPatch","rowExtents","columnPatch"],"sources":["../src/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1,2 @@
1
- export { VirtualList, type VirtualCollectionExpose, type VirtualListComponent, type VirtualListEstimate, type VirtualListExpose, type VirtualListItemAttributes, type VirtualListKeyResolver, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './internal/virtual-list.js';
1
+ export { VirtualList, type VirtualListComponent, type VirtualListExpose, type VirtualListIDResolver, type VirtualListItemAttributes, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './internal/virtual-list.js';
2
+ export type { VirtualCollectionExpose, VirtualCollectionItemSlotProps, VirtualCollectionLanePolicyProps, VirtualCollectionPhase, VirtualCollectionSizePolicyProps, VirtualCollectionSlots } from './internal/virtual-collection.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/virtual-list.ts"],"mappings":"AAEA,OAAS,gBAA0Q","names":[],"file":"virtual-list.js"}
1
+ {"version":3,"sources":["../src/virtual-list.ts"],"mappings":"AAAA,OAAS,gBAAiN","names":[],"file":"virtual-list.js"}
@@ -1,30 +1,32 @@
1
1
  import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
2
+ import type { StableID } from '@sectile/core';
3
+ import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
2
4
  import { type MasonryLayoutState, type MasonryPlacement, type MasonryPlacementPolicy } from '@sectile/virtual/masonry-layout';
3
5
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
4
- import { type VirtualListEstimate, type VirtualListItemAttributes, type VirtualListKeyResolver } from './internal/virtual-collection-model.js';
5
- import type { VirtualListSlotProps } from './internal/virtual-list.js';
6
- import { type ResponsiveLaneProps, type VirtualCollectionBaseProps } from './internal/virtual-collection.js';
7
- export interface VirtualMasonryProps<Value = unknown> extends VirtualCollectionBaseProps<Value>, ResponsiveLaneProps {
8
- readonly itemSize?: number;
9
- readonly estimateSize?: VirtualListEstimate<Value>;
6
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
7
+ export interface VirtualMasonryProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
8
+ readonly sizePolicy: VirtualSizePolicy<Value>;
9
+ readonly lanePolicy: VirtualLanePolicy;
10
10
  readonly itemGap?: number;
11
11
  readonly placementPolicy?: MasonryPlacementPolicy;
12
12
  }
13
- export type VirtualMasonryPublicProps<Value = unknown> = VirtualMasonryProps<Value> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
14
- readonly onStateChange?: (state: MasonryLayoutState<string>) => unknown;
15
- readonly onPlanChange?: (plan: VirtualLayoutPlan<string>) => unknown;
13
+ export type VirtualMasonryPublicProps<Value = unknown, ID extends StableID = StableID> = VirtualMasonryProps<Value, ID> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
14
+ readonly onStateChange?: (state: MasonryLayoutState<ID>) => unknown;
15
+ readonly onPlanChange?: (plan: VirtualLayoutPlan<ID>) => unknown;
16
16
  readonly onError?: VirtualizerErrorHandler;
17
17
  };
18
- export interface VirtualMasonrySlotProps<Value = unknown> extends VirtualListSlotProps<Value> {
19
- readonly placement: MasonryPlacement<string>;
18
+ export interface VirtualMasonrySlotProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionItemSlotProps<Value, ID> {
19
+ readonly placement: MasonryPlacement<ID>;
20
20
  readonly lane: number;
21
21
  }
22
22
  export interface VirtualMasonryComponent {
23
- new <Value = unknown>(props: VirtualMasonryPublicProps<Value>): {
24
- $props: VirtualMasonryPublicProps<Value>;
23
+ new <Value = unknown, ID extends StableID = StableID>(props: VirtualMasonryPublicProps<Value, ID>): {
24
+ $props: VirtualMasonryPublicProps<Value, ID>;
25
25
  $slots: {
26
- default?: (props: VirtualMasonrySlotProps<Value>) => VNodeChild;
26
+ header?: () => VNodeChild;
27
+ item?: (props: VirtualMasonrySlotProps<Value, ID>) => VNodeChild;
27
28
  empty?: () => VNodeChild;
29
+ footer?: () => VNodeChild;
28
30
  };
29
31
  };
30
32
  }
@@ -33,33 +35,17 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
33
35
  type: PropType<readonly unknown[]>;
34
36
  required: true;
35
37
  };
36
- getKey: {
37
- type: PropType<VirtualListKeyResolver<unknown>>;
38
+ getID: {
39
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
38
40
  required: true;
39
41
  };
40
- itemSize: {
41
- type: NumberConstructor;
42
- default: undefined;
43
- };
44
- estimateSize: {
45
- type: PropType<VirtualListEstimate<unknown>>;
46
- default: undefined;
47
- };
48
- laneCount: {
49
- type: NumberConstructor;
50
- default: undefined;
51
- };
52
- minLaneSize: {
53
- type: NumberConstructor;
54
- default: number;
55
- };
56
- maxLaneCount: {
57
- type: NumberConstructor;
58
- default: number;
42
+ sizePolicy: {
43
+ type: PropType<VirtualSizePolicy<unknown>>;
44
+ required: true;
59
45
  };
60
- laneGap: {
61
- type: NumberConstructor;
62
- default: number;
46
+ lanePolicy: {
47
+ type: PropType<VirtualLanePolicy>;
48
+ required: true;
63
49
  };
64
50
  itemGap: {
65
51
  type: NumberConstructor;
@@ -73,6 +59,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
73
59
  type: PropType<number | Partial<VirtualInsets>>;
74
60
  default: number;
75
61
  };
62
+ viewportInsets: {
63
+ type: PropType<number | Partial<VirtualInsets>>;
64
+ default: undefined;
65
+ };
76
66
  maxItems: {
77
67
  type: NumberConstructor;
78
68
  default: number;
@@ -94,45 +84,29 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
94
84
  default: string;
95
85
  };
96
86
  itemAttributes: {
97
- type: PropType<VirtualListItemAttributes<unknown>>;
87
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
98
88
  default: undefined;
99
89
  };
100
90
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
101
- stateChange: (_state: MasonryLayoutState<string>) => boolean;
102
- planChange: (_plan: VirtualLayoutPlan<string>) => boolean;
91
+ stateChange: (_state: MasonryLayoutState<StableID>) => boolean;
92
+ planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
103
93
  error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
104
94
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
105
95
  items: {
106
96
  type: PropType<readonly unknown[]>;
107
97
  required: true;
108
98
  };
109
- getKey: {
110
- type: PropType<VirtualListKeyResolver<unknown>>;
99
+ getID: {
100
+ type: PropType<VirtualCollectionIDResolver<unknown, StableID>>;
111
101
  required: true;
112
102
  };
113
- itemSize: {
114
- type: NumberConstructor;
115
- default: undefined;
116
- };
117
- estimateSize: {
118
- type: PropType<VirtualListEstimate<unknown>>;
119
- default: undefined;
120
- };
121
- laneCount: {
122
- type: NumberConstructor;
123
- default: undefined;
124
- };
125
- minLaneSize: {
126
- type: NumberConstructor;
127
- default: number;
128
- };
129
- maxLaneCount: {
130
- type: NumberConstructor;
131
- default: number;
103
+ sizePolicy: {
104
+ type: PropType<VirtualSizePolicy<unknown>>;
105
+ required: true;
132
106
  };
133
- laneGap: {
134
- type: NumberConstructor;
135
- default: number;
107
+ lanePolicy: {
108
+ type: PropType<VirtualLanePolicy>;
109
+ required: true;
136
110
  };
137
111
  itemGap: {
138
112
  type: NumberConstructor;
@@ -146,6 +120,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
146
120
  type: PropType<number | Partial<VirtualInsets>>;
147
121
  default: number;
148
122
  };
123
+ viewportInsets: {
124
+ type: PropType<number | Partial<VirtualInsets>>;
125
+ default: undefined;
126
+ };
149
127
  maxItems: {
150
128
  type: NumberConstructor;
151
129
  default: number;
@@ -167,32 +145,29 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
167
145
  default: string;
168
146
  };
169
147
  itemAttributes: {
170
- type: PropType<VirtualListItemAttributes<unknown>>;
148
+ type: PropType<VirtualCollectionItemAttributes<unknown>>;
171
149
  default: undefined;
172
150
  };
173
151
  }>> & Readonly<{
174
152
  onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
175
- onPlanChange?: (_plan: VirtualLayoutPlan<string>) => any;
176
- onStateChange?: (_state: MasonryLayoutState<string>) => any;
153
+ onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
154
+ onStateChange?: (_state: MasonryLayoutState<StableID>) => any;
177
155
  }>, {
178
- itemSize: number;
179
- estimateSize: VirtualListEstimate<unknown>;
180
- laneCount: number;
181
- minLaneSize: number;
182
- maxLaneCount: number;
183
- laneGap: number;
184
156
  itemGap: number;
185
157
  placementPolicy: MasonryPlacementPolicy;
186
158
  overscan: number | Partial<import("@sectile/core/geometry").Insets>;
159
+ viewportInsets: number | Partial<import("@sectile/core/geometry").Insets>;
187
160
  maxItems: number;
188
161
  initialViewport: import("@sectile/core/geometry").Rect;
189
162
  as: string;
190
163
  contentAs: string;
191
164
  itemAs: string;
192
- itemAttributes: VirtualListItemAttributes<unknown>;
165
+ itemAttributes: VirtualCollectionItemAttributes<unknown>;
193
166
  }, SlotsType<{
194
- default: (props: VirtualMasonrySlotProps<unknown>) => VNodeChild;
167
+ header: () => VNodeChild;
168
+ item: (props: VirtualMasonrySlotProps<unknown>) => VNodeChild;
195
169
  empty: () => VNodeChild;
170
+ footer: () => VNodeChild;
196
171
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
197
172
  export declare const VirtualMasonry: typeof VirtualMasonryRuntime & VirtualMasonryComponent;
198
173
  export {};
@@ -1,2 +1,2 @@
1
- import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createMasonryLayout,masonryLayoutStrategy}from'@sectile/virtual/masonry-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{VirtualizerContent,VirtualizerRoot}from'./internal/virtual-core.js';import{assertVirtualListSizeMode,createPreparedVirtualListSequence,estimatedExtent,exactExtent,prepareVirtualList,reconcileVirtualList,requireAutomaticEstimate,requiresDOMBootstrap,updatePreparedVirtualList}from'./internal/virtual-collection-model.js';import{createHighLevelVirtualExpose,nearlyEqual,renderCollectionBootstrapItems,renderHighLevelItems,resolveResponsiveLanes}from'./internal/virtual-collection.js';const VirtualMasonryRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualMasonry',inheritAttrs:false,props:{items:{type:Array,required:true},getKey:{type:Function,required:true},itemSize:{type:Number,default:undefined},estimateSize:{type:[Number,Function],default:undefined},laneCount:{type:Number,default:undefined},minLaneSize:{type:Number,default:240},maxLaneCount:{type:Number,default:12},laneGap:{type:Number,default:0},itemGap:{type:Number,default:0},placementPolicy:{type:String,default:'shortest'},overscan:{type:[Number,Object],default:240},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){assertVirtualListSizeMode(props.itemSize,props.estimateSize);const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualList(props.items,props.getKey,props.maxItems));const initialGeometry=resolveResponsiveLanes(initialViewport?.width??0,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const automaticEstimate=shallowRef();const initialState=requiresDOMBootstrap(props.itemSize,props.estimateSize)?createVirtualMasonryState(prepareVirtualList([],props.getKey,props.maxItems),[],props,initialGeometry,0):createVirtualMasonryState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const isBootstrapping=()=>requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const count=Math.min(geometry.count,prepared.value.domain.size);let total=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;total+=height}const estimate=total/count;automaticEstimate.value=estimate;bootstrapElements.clear();activeState.value=createVirtualMasonryState(prepared.value,props.items,props,geometry,estimate)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.itemSize===undefined?createAxisMeasurementResolver('vertical'):undefined;watch(()=>[props.items,props.getKey],()=>{if(requiresDOMBootstrap(props.itemSize,props.estimateSize)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualList(prepared.value,props.items,props.getKey);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualList(prepared.value,props.items,props.getKey);const patch=reconcileVirtualList(exposed.state,next,props.items,props,automaticEstimate.value);if(patch===null){prepared.value=next;return}const result=exposed.mutate(Object.freeze({type:'items',...patch}));if(result.ok)prepared.value=next},{flush:'post'});watch(()=>[props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap,props.itemGap,props.placementPolicy,viewportWidth.value],()=>{const exposed=root.value;if(exposed===undefined)return;const geometry=resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap);const state=exposed.state;if(state.laneCount===geometry.count&&nearlyEqual(state.laneExtent,geometry.extent)&&state.laneGap===props.laneGap&&state.itemGap===props.itemGap&&state.placementPolicy===props.placementPolicy)return;exposed.mutate(Object.freeze({type:'geometry',laneCount:geometry.count,laneExtent:geometry.extent,laneGap:props.laneGap,itemGap:props.itemGap,placementPolicy:props.placementPolicy}))},{flush:'post'});expose(createHighLevelVirtualExpose(root,initialState));return()=>h(VirtualizerRoot,{...attrs,key:isBootstrapping()?'bootstrap':'ready',ref:root,defaultState:activeState.value,strategy:masonryLayoutStrategy,overscan:props.overscan,...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-masonry',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{if(plan.viewport.width>0)viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>h(VirtualizerContent,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-masonry',prepared.value,props.items,Math.min(resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).count,prepared.value.domain.size),resolveResponsiveLanes(viewportWidth.value,props.laneCount,props.minLaneSize,props.maxLaneCount,props.laneGap).extent,props.itemAs,props.itemAttributes,(value,key,index,placement)=>slots['default']?.({value,key,index,placement:Object.freeze({...placement,lane:index}),lane:index}),bootstrapItemRef):renderHighLevelItems('virtual-masonry',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.itemSize===undefined?'width':'both',(value,key,index,placement)=>{const masonryPlacement=placement;return slots['default']?.({value,key,index,placement:masonryPlacement,lane:masonryPlacement.lane})},slots['empty'])})})}});export const VirtualMasonry=VirtualMasonryRuntime;function createVirtualMasonryState(prepared,items,props,geometry,automaticEstimate){return createMasonryLayout(createPreparedVirtualListSequence(prepared,props.maxItems),createCollectionExtents(prepared,items,props,automaticEstimate),{laneCount:geometry.count,laneExtent:geometry.extent,laneGap:props.laneGap,itemGap:props.itemGap,placementPolicy:props.placementPolicy,maxLanes:Math.max(geometry.count,1_024)})}function createCollectionExtents(prepared,items,props,automaticEstimate){const estimate=props.estimateSize??automaticEstimate;const shared=props.itemSize!==undefined?exactExtent(props.itemSize):typeof estimate!=='function'?estimatedExtent(requireAutomaticEstimate(estimate),undefined,0):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>estimatedExtent(estimate,items[index],index)),{maxItems:props.maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems:props.maxItems})}
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createMasonryLayout,masonryLayoutStrategy}from'@sectile/virtual/masonry-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./internal/virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./internal/virtual-collection.js';const VirtualMasonryRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualMasonry',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},itemGap:{type:Number,default:0},placementPolicy:{type:String,default:'shortest'},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualMasonryState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualMasonryState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const bootstrapItemRef=(index,value)=>{const element=value instanceof HTMLElement?value:null;if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let total=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;total+=height}const estimate=total/count;automaticEstimate.value=estimate;bootstrapElements.clear();activeState.value=createVirtualMasonryState(prepared.value,props.items,props,geometry,estimate)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:createAxisMeasurementResolver('vertical');watch(()=>[props.items,props.getID],()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);let state=exposed.state;const patch=reconcileVirtualCollectionExtents(state,next,props.sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed.mutate(Object.freeze({type:'items',...patch}));if(!result.ok)return;state=result.value.state}const valueUpdates=reconcileVirtualCollectionValueExtents(state,next,props.sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed.measure(valueUpdates);if(!result.ok)return}prepared.value=next},{flush:'post'});watch(()=>[props.lanePolicy,props.itemGap,props.placementPolicy,viewportWidth.value],()=>{const exposed=root.value;if(exposed===undefined)return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const state=exposed.state;if(state.laneCount===geometry.count&&nearlyEqual(state.laneExtent,geometry.extent)&&state.laneGap===geometry.gap&&state.itemGap===props.itemGap&&state.placementPolicy===props.placementPolicy)return;exposed.mutate(Object.freeze({type:'geometry',laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy}))},{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:masonryLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-masonry','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-masonry',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement:Object.freeze({...placement,lane:index}),lane:index}),bootstrapItemRef):renderHighLevelItems('virtual-masonry',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const masonryPlacement=placement;return slots['item']?.({value,id,index,placement:masonryPlacement,lane:masonryPlacement.lane})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualMasonry=VirtualMasonryRuntime;function createVirtualMasonryState(prepared,items,props,geometry,automaticEstimate){return createMasonryLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createCollectionExtents(prepared,items,props,automaticEstimate),{laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy,maxLanes:Math.max(geometry.count,1_024)})}function createCollectionExtents(prepared,items,props,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems})}const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)),{maxItems:props.maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems:props.maxItems})}
2
2
  //# sourceMappingURL=virtual-masonry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-masonry.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExtentIndex","createUniformExtentIndex","createMasonryLayout","masonryLayoutStrategy","createAxisMeasurementResolver","VirtualizerContent","VirtualizerRoot","assertVirtualListSizeMode","createPreparedVirtualListSequence","estimatedExtent","exactExtent","prepareVirtualList","reconcileVirtualList","requireAutomaticEstimate","requiresDOMBootstrap","updatePreparedVirtualList","createHighLevelVirtualExpose","nearlyEqual","renderCollectionBootstrapItems","renderHighLevelItems","resolveResponsiveLanes","VirtualMasonryRuntime","name","inheritAttrs","props","items","type","Array","required","getKey","Function","itemSize","Number","default","undefined","estimateSize","laneCount","minLaneSize","maxLaneCount","laneGap","itemGap","placementPolicy","String","overscan","Object","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","initialState","createVirtualMasonryState","value","activeState","root","viewportWidth","bootstrapElements","Map","bootstrapScheduled","disposed","isBootstrapping","domain","size","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","total","get","height","getBoundingClientRect","isFinite","estimate","clear","measure","exposed","next","patch","state","result","mutate","ok","flush","laneExtent","extent","key","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","placement","lane","masonryPlacement","VirtualMasonry","createCollectionExtents","maxLanes","max","shared","from","length","_unused"],"sources":["../src/virtual-masonry.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"virtual-masonry.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createMasonryLayout","masonryLayoutStrategy","createAxisMeasurementResolver","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","VirtualMasonryRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","itemGap","Number","default","placementPolicy","String","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","initialState","createVirtualMasonryState","value","activeState","root","viewportWidth","bootstrapElements","Map","bootstrapScheduled","disposed","isBootstrapping","domain","size","bootstrapItemRef","index","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","total","get","height","getBoundingClientRect","isFinite","estimate","clear","measure","kind","exposed","next","state","patch","result","mutate","ok","valueUpdates","length","flush","laneCount","laneExtent","extent","laneGap","gap","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","id","placement","lane","masonryPlacement","VirtualMasonry","createCollectionExtents","maxLanes","max","shared","from","_unused"],"sources":["../src/virtual-masonry.ts"],"mappings":"OAASA,gBAAiBC,EAAGC,SAAUC,gBAAiBC,UAAWC,WAAYC,UAAqI,aAGlNC,yBACAC,oBACAC,kCACAC,uCACAC,2BACAC,yCAIK,qCACEC,kBAAmBC,6BAAgC,uCACnDC,oBAAqBC,0BAAyJ,yCAC9KC,kCAA8L,8BAC9LC,kBAAmBC,kBAAmBC,gBAAiBC,uBAAqF,oCAC5IC,mCAAoCC,8BAA+BC,YAAaC,yBAA0BC,+BAAgCC,qBAAsBC,oCAAqN,mCAwC9X,MAAMC,qCAAwC7B,gBAAgB,CAC5D8B,KAAM,wBACNC,aAAc,MACdC,MAAO,CACLC,MAAO,CAAEC,KAAMC,MAAkDC,SAAU,MAC3EC,MAAO,CAAEH,KAAMI,SAAsEF,SAAU,MAC/FG,WAAY,CAAEL,KAAMM,OAAgDJ,SAAU,MAC9EK,WAAY,CAAEP,KAAMM,OAAuCJ,SAAU,MACrEM,QAAS,CAAER,KAAMS,OAAQC,QAAS,GAClCC,gBAAiB,CAAEX,KAAMY,OAA4CF,QAAS,YAC9EG,SAAU,CAAEb,KAAM,CAACS,OAAQH,QAAsDI,QAAS,KAC1FI,eAAgB,CAAEd,KAAM,CAACS,OAAQH,QAAsDI,QAASK,WAChGC,SAAU,CAAEhB,KAAMS,OAAQC,QAAS,WACnCO,gBAAiB,CAAEjB,KAAMM,OAAiCI,QAASK,WACnEG,GAAI,CAAElB,KAAMY,OAAQF,QAAS,OAC7BS,UAAW,CAAEnB,KAAMY,OAAQF,QAAS,OACpCU,OAAQ,CAAEpB,KAAMY,OAAQF,QAAS,OACjCW,eAAgB,CAAErB,KAAMI,SAAgEM,QAASK,YAEnGO,MAAO,CACLC,YAAcC,QAAkD,KAChEC,WAAaC,OAAgD,KAC7DC,MAAQC,QAA4D,MAEtEC,MAAOvB,OAMP,KAAAwB,CAAMhC,OAAOiC,MAAOC,KAAMC,OAAQJ,QAChC,MAAMZ,gBAAkBnB,MAAMmB,kBAAoBF,UAC9CA,UACAT,OAAO4B,OAAO,IAAKpC,MAAMmB,kBAC7B,MAAMkB,SAAWhE,WAAWoB,yBAAyBO,MAAMC,MAAOD,MAAMK,MAAOL,MAAMkB,WACrF,MAAMoB,gBAAkB3D,2BACtBwC,iBAAiBoB,OAAS,EAC1BvC,MAAMS,YAER,MAAM+B,kBAAoBnE,aAC1B,MAAMoE,aAAe7D,qCAAqCoB,MAAMO,YAC5DmC,0BACEjD,yBAAyB,GAAIO,MAAMK,MAAOL,MAAMkB,UAChD,GACAlB,MACAsC,gBACA,GAEFI,0BAA0BL,SAASM,MAAO3C,MAAMC,MAAOD,MAAOsC,iBAClE,MAAMM,YAAcvE,WAAWoE,cAC/B,MAAMI,KAAOxE,aACb,MAAMyE,cAAgBzE,WAAW8C,iBAAiBoB,OAAS,GAC3D,MAAMQ,kBAAoB,IAAIC,IAC9B,IAAIC,mBAAqB,MACzB,IAAIC,SAAW,MACf,MAAMC,gBAAkB,IAAevE,qCAAqCoB,MAAMO,aAC7EiC,kBAAkBG,QAAU1B,WAC5BoB,SAASM,MAAMS,OAAOC,KAAO,EAClC,MAAMC,iBAAmB,CAACC,MAAeZ,SACvC,MAAMa,QAAUb,iBAAiBc,YAAcd,MAAQ,KACvD,GAAIa,UAAY,KAAMT,kBAAkBW,OAAOH,WAC1C,CACHR,kBAAkBY,IAAIJ,MAAOC,SAC7BI,mBACF,GAEF,MAAMC,kBAAoB,KACxB,IAAKV,kBAAmB,OACxB,MAAMW,SAAWnF,2BACfmE,cAAcH,MACd3C,MAAMS,YAER,MAAMsD,MAAQC,KAAKC,IAAIH,SAASC,MAAO1B,SAASM,MAAMS,OAAOC,MAC7D,IAAIa,MAAQ,EACZ,IAAK,IAAIX,MAAQ,EAAGA,MAAQQ,MAAOR,OAAS,EAAG,CAC7C,MAAMC,QAAUT,kBAAkBoB,IAAIZ,OACtC,GAAIC,UAAYvC,UAAW,OAC3B,MAAMmD,OAASZ,QAAQa,wBAAwBD,OAC/C,IAAKzD,OAAO2D,SAASF,SAAWA,QAAU,EAAG,OAC7CF,OAASE,MACX,CACA,MAAMG,SAAWL,MAAQH,MACzBvB,kBAAkBG,MAAQ4B,SAC1BxB,kBAAkByB,QAClB5B,YAAYD,MAAQD,0BAClBL,SAASM,MACT3C,MAAMC,MACND,MACA8D,SACAS,WAGJ,SAASX,oBACP,GACEV,UACGD,oBACAT,kBAAkBG,QAAU1B,WAC5BoB,SAASM,MAAMS,OAAOC,OAAS,EAClC,OACFJ,mBAAqB,UAChB/E,SAAS,KACZ+E,mBAAqB,MACrB,IAAKC,SAAUW,qBAEnB,CACAzF,UAAUwF,mBACVzF,gBAAgB,KACd+E,SAAW,KACXH,kBAAkByB,UAEpB,MAAMC,QAAUzE,MAAMO,WAAWmE,OAAS,QACtCzD,UACAhC,8BAAsE,YAE1EX,MACE,IAAM,CAAC0B,MAAMC,MAAOD,MAAMK,OAC1B,KACE,GACEzB,qCAAqCoB,MAAMO,aACxCiC,kBAAkBG,QAAU1B,UAC/B,CACAoB,SAASM,MAAQ/C,gCACfyC,SAASM,MACT3C,MAAMC,MACND,MAAMK,OAERuD,oBACA,MACF,CACA,MAAMe,QAAU9B,KAAKF,MACrB,GAAIgC,UAAY1D,UAAW,OAC3B,MAAM2D,KAAOhF,gCACXyC,SAASM,MACT3C,MAAMC,MACND,MAAMK,OAER,IAAIwE,MAAQF,QAAQE,MACpB,MAAMC,MAAQrG,kCACZoG,MACAD,KACA5E,MAAMO,WACNiC,kBAAkBG,OAEpB,GAAImC,QAAU,KAAM,CAClB,MAAMC,OAASJ,QAAQK,OAAOxE,OAAO4B,OAAO,CAC1ClC,KAAM,WACH4E,SAEL,IAAKC,OAAOE,GAAI,OAChBJ,MAAQE,OAAOpC,MAAMkC,KACvB,CACA,MAAMK,aAAexG,uCACnBmG,MACAD,KACA5E,MAAMO,WACNiC,kBAAkBG,OAEpB,GAAIuC,aAAaC,OAAS,EAAG,CAC3B,MAAMJ,OAASJ,QAAQF,QAAQS,cAC/B,IAAKH,OAAOE,GAAI,MAClB,CACA5C,SAASM,MAAQiC,MAEnB,CAAEQ,MAAO,SAEX9G,MACE,IAAM,CACJ0B,MAAMS,WACNT,MAAMU,QACNV,MAAMa,gBACNiC,cAAcH,OAEhB,KACE,MAAMgC,QAAU9B,KAAKF,MACrB,GAAIgC,UAAY1D,UAAW,OAC3B,MAAM6C,SAAWnF,2BACfmE,cAAcH,MACd3C,MAAMS,YAER,MAAMoE,MAAQF,QAAQE,MACtB,GACEA,MAAMQ,YAAcvB,SAASC,OAC1BvE,YAAYqF,MAAMS,WAAYxB,SAASyB,SACvCV,MAAMW,UAAY1B,SAAS2B,KAC3BZ,MAAMnE,UAAYV,MAAMU,SACxBmE,MAAMhE,kBAAoBb,MAAMa,gBACnC,OACF8D,QAAQK,OAAOxE,OAAO4B,OAAO,CAC3BlC,KAAM,WACNmF,UAAWvB,SAASC,MACpBuB,WAAYxB,SAASyB,OACrBC,QAAS1B,SAAS2B,IAClB/E,QAASV,MAAMU,QACfG,gBAAiBb,MAAMa,oBAG3B,CAAEuE,MAAO,SAEXjD,OAAO5C,8BACLsD,KACAJ,aACA,IAAMJ,SAASM,MAAMS,OAAOC,OAAS,EACjC,QACAF,kBACE,YACA,UAGR,MAAO,IAAkBlF,EAAEmB,gBAAiB,IACvC6C,MACHyD,IAAK7C,KACL8C,aAAc/C,YAAYD,MAC1BiD,SAAU5G,sBACV+B,SAAUf,MAAMe,YACZf,MAAMgB,iBAAmBC,UAAY,GAAK,CAAED,eAAgBhB,MAAMgB,mBAClEG,kBAAoBF,UAAY,GAAK,CAAEE,oBACvCsD,UAAYxD,UAAY,GAAK,CAC/BwD,SAEFrD,GAAIpB,MAAMoB,GACV,sBAAuB,kBACvB,aAAciB,SAASM,MAAMS,OAAOC,OAAS,EACzC,QACAF,kBACE,YACA,QACN0C,cAAgBhB,OAAkB3C,KAAK,cAAe2C,OACtDiB,aAAeC,OACbjD,cAAcH,MAAQoD,KAAKC,SAASzD,MACpCL,KAAK,aAAc6D,OAErBE,QAAUpE,OAAkDK,KAAK,QAASL,QACzE,CACDjB,QAAS,EAAGsF,cAA2C,CACrDnE,MAAM,YAAcd,UAChB,KACAhD,EAAEkB,kBAAmB,GAAI,CAAEyB,QAAS,IAAMmB,MAAM,gBACpD9D,EAAEoB,mBAAoB,CAAE+B,GAAIpB,MAAMqB,WAAa,CAC7CT,QAAS,IAAMuC,kBACXzD,+BACE,kBACA2C,SAASM,MACT3C,MAAMC,MACN+D,KAAKC,IACHtF,2BACEmE,cAAcH,MACd3C,MAAMS,YACNsD,MACF1B,SAASM,MAAMS,OAAOC,MAExB1E,2BACEmE,cAAcH,MACd3C,MAAMS,YACN8E,OACFvF,MAAMsB,OACNtB,MAAMuB,eACN,CAACoB,MAAOwD,GAAI5C,MAAO6C,YAAcrE,MAAM,UAAU,CAC/CY,MACAwD,GACA5C,MACA6C,UAAW5F,OAAO4B,OAAO,IAAKgE,UAAWC,KAAM9C,QAC/C8C,KAAM9C,QAERD,kBAEF3D,qBACE,kBACAuG,WACA7D,SAASM,MACT3C,MAAMC,MACND,MAAMsB,OACNtB,MAAMuB,eACNvB,MAAMO,WAAWmE,OAAS,QAAU,OAAS,QAC7C,CAAC/B,MAAOwD,GAAI5C,MAAO6C,aACjB,MAAME,iBAAmBF,UACzB,OAAOrE,MAAM,UAAU,CACrBY,MACAwD,GACA5C,MACA6C,UAAWE,iBACXD,KAAMC,iBAAiBD,QAG3BtE,MAAM,YAGdA,MAAM,YAAcd,UAChB,KACAhD,EAAEiB,kBAAmB,GAAI,CAAE0B,QAAS,IAAMmB,MAAM,kBAG1D,WAGK,MAAMwE,eAAiB1G,sBAG9B,SAAS6C,0BACPL,SACApC,MACAD,MAMA8D,SACAtB,mBAEA,OAAOzD,oBACLO,mCAAmC+C,SAAUrC,MAAMkB,UACnDsF,wBAAwBnE,SAAUpC,MAAOD,MAAOwC,mBAChD,CACE6C,UAAWvB,SAASC,MACpBuB,WAAYxB,SAASyB,OACrBC,QAAS1B,SAAS2B,IAClB/E,QAASV,MAAMU,QACfG,gBAAiBb,MAAMa,gBACvB4F,SAAUzC,KAAK0C,IAAI5C,SAASC,MAAO,QAGzC,CAEA,SAASyC,wBACPnE,SACApC,MACAD,MAIAwC,mBAEA,GAAIH,SAASe,OAAOC,OAAS,EAAG,CAC9B,OAAOvE,yBAAyB,EAAGP,yBAAyB,GAAI,CAC9D2C,SAAUlB,MAAMkB,UAEpB,CACA,MAAMyF,OAAS3G,MAAMO,WAAWmE,OAAS,SACpC1E,MAAMO,WAAWmE,OAAS,YAE3B1E,MAAMO,WAAWmE,OAAS,oBAChB1E,MAAMO,WAAWgE,WAAa,SAExC/F,oBACEwB,MAAMO,WACNN,MAAM,GACN,EACAuC,mBAEF,KACJ,OAAOmE,SAAW,KACd9H,kBACEsB,MAAMyG,KACJ,CAAEzB,OAAQ9C,SAASe,OAAOC,MAC1B,CAACwD,QAAStD,QAAU/E,oBAClBwB,MAAMO,WACNN,MAAMsD,OACNA,MACAf,oBAGJ,CAAEtB,SAAUlB,MAAMkB,WAEpBpC,yBAAyBuD,SAASe,OAAOC,KAAMsD,OAAQ,CACrDzF,SAAUlB,MAAMkB,UAExB","ignoreList":[]}