@sectile/vue 0.18.2 → 0.19.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 +53 -14
- package/dist/accordion.js +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/carousel.d.ts +20 -0
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox-tree.d.ts +102 -0
- package/dist/checkbox-tree.js +2 -0
- package/dist/checkbox-tree.js.map +1 -0
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +24 -0
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +47 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/component-handle.d.ts +8 -0
- package/dist/component-handle.js +2 -0
- package/dist/component-handle.js.map +1 -0
- package/dist/context-menu.d.ts +1 -0
- package/dist/context-menu.js +2 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/drag-drop.d.ts +23 -0
- package/dist/drag-drop.js +2 -0
- package/dist/drag-drop.js.map +1 -0
- package/dist/editable.d.ts +3 -0
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/form/context.d.ts +3 -0
- package/dist/form/context.js +1 -1
- package/dist/form/context.js.map +1 -1
- package/dist/form/contracts.d.ts +1 -0
- package/dist/form/control-inventory.d.ts +20 -0
- package/dist/form/control-inventory.js +1 -1
- package/dist/form/control-inventory.js.map +1 -1
- package/dist/form/control.d.ts +44 -1
- package/dist/form/control.js +1 -1
- package/dist/form/control.js.map +1 -1
- package/dist/form/field.d.ts +10 -0
- package/dist/form/field.js +1 -1
- package/dist/form/field.js.map +1 -1
- package/dist/form/file-input.d.ts +229 -0
- package/dist/form/file-input.js +2 -0
- package/dist/form/file-input.js.map +1 -0
- package/dist/form/file-upload/group.d.ts +28 -0
- package/dist/form/file-upload/group.js +2 -0
- package/dist/form/file-upload/group.js.map +1 -0
- package/dist/form/file-upload.d.ts +26 -0
- package/dist/form/file-upload.js +2 -0
- package/dist/form/file-upload.js.map +1 -0
- package/dist/form/root.js +1 -1
- package/dist/form/root.js.map +1 -1
- package/dist/form-boundary.d.ts +2 -0
- package/dist/form-boundary.js +2 -0
- package/dist/form-boundary.js.map +1 -0
- package/dist/fullscreen.d.ts +16 -0
- package/dist/fullscreen.js +2 -0
- package/dist/fullscreen.js.map +1 -0
- package/dist/host-provider.d.ts +99 -1
- package/dist/host-provider.js +1 -1
- package/dist/host-provider.js.map +1 -1
- package/dist/image.d.ts +24 -0
- package/dist/image.js +2 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/native-field.d.ts +25 -6
- package/dist/input/native-field.js +1 -1
- package/dist/input/native-field.js.map +1 -1
- package/dist/input/native-range-field.d.ts +95 -0
- package/dist/input/native-range-field.js +2 -0
- package/dist/input/native-range-field.js.map +1 -0
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/connection-lifetime.d.ts +10 -0
- package/dist/internal/connection-lifetime.js +2 -0
- package/dist/internal/connection-lifetime.js.map +1 -0
- package/dist/internal/controlled-state.js +1 -1
- package/dist/internal/controlled-state.js.map +1 -1
- package/dist/internal/popup-presentation.d.ts +32 -0
- package/dist/internal/popup-presentation.js +2 -0
- package/dist/internal/popup-presentation.js.map +1 -0
- package/dist/internal/portal-move.d.ts +11 -0
- package/dist/internal/portal-move.js +2 -0
- package/dist/internal/portal-move.js.map +1 -0
- package/dist/internal/scheduled-task.js +1 -1
- package/dist/internal/scheduled-task.js.map +1 -1
- package/dist/internal/tabs-context.d.ts +11 -0
- package/dist/internal/tabs-context.js +1 -1
- package/dist/internal/tabs-context.js.map +1 -1
- package/dist/internal/tree-parts.d.ts +142 -0
- package/dist/internal/tree-parts.js +2 -0
- package/dist/internal/tree-parts.js.map +1 -0
- package/dist/listbox.d.ts +11 -0
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/media-gesture.d.ts +20 -0
- package/dist/media-gesture.js +2 -0
- package/dist/media-gesture.js.map +1 -0
- package/dist/menu.d.ts +239 -0
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/meter-group.js +1 -1
- package/dist/meter-group.js.map +1 -1
- package/dist/multi-thumb-slider.js +1 -1
- package/dist/multi-thumb-slider.js.map +1 -1
- package/dist/overlay/dialog.d.ts +1 -0
- package/dist/overlay/dialog.js.map +1 -1
- package/dist/overlay/drawer.d.ts +33 -4
- package/dist/overlay/drawer.js +1 -1
- package/dist/overlay/drawer.js.map +1 -1
- package/dist/overlay/popover.d.ts +2 -1
- package/dist/overlay/popover.js.map +1 -1
- package/dist/overlay/popup.d.ts +46 -2
- package/dist/overlay/popup.js +1 -1
- package/dist/overlay/popup.js.map +1 -1
- package/dist/overlay/tooltip.d.ts +37 -3
- package/dist/overlay/tooltip.js +1 -1
- package/dist/overlay/tooltip.js.map +1 -1
- package/dist/pagination.js +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/presence/presence.d.ts +1 -1
- package/dist/presence/presence.js +1 -1
- package/dist/presence/presence.js.map +1 -1
- package/dist/primitive.d.ts +37 -3
- package/dist/primitive.js +1 -1
- package/dist/primitive.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/rating.js +1 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +156 -77
- package/dist/reorder.js +1 -1
- package/dist/reorder.js.map +1 -1
- package/dist/select.d.ts +21 -0
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.d.ts +19 -0
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tabular/components.d.ts +5 -0
- package/dist/tabular/components.js.map +1 -1
- package/dist/tabular/controller.d.ts +1 -0
- package/dist/tabular/controller.js +1 -1
- package/dist/tabular/controller.js.map +1 -1
- package/dist/tabular/data-grid.d.ts +4 -4
- package/dist/tabular/data-grid.js +1 -1
- package/dist/tabular/data-grid.js.map +1 -1
- package/dist/tabular/data-table.d.ts +4 -4
- package/dist/tabular/data-table.js +1 -1
- package/dist/tabular/data-table.js.map +1 -1
- package/dist/tabular/data-tree-grid.d.ts +4 -4
- package/dist/tabular/data-tree-grid.js +1 -1
- package/dist/tabular/data-tree-grid.js.map +1 -1
- package/dist/tabular/parts.d.ts +11 -1
- package/dist/tabular/parts.js +1 -1
- package/dist/tabular/parts.js.map +1 -1
- package/dist/tabular/source.js +1 -1
- package/dist/tabular/source.js.map +1 -1
- package/dist/tags-input.d.ts +12 -1
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/temporal/calendar.d.ts +27 -123
- package/dist/temporal/calendar.js +1 -1
- package/dist/temporal/calendar.js.map +1 -1
- package/dist/temporal/capabilities/date-picker.js +1 -1
- package/dist/temporal/capabilities/date-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -1
- package/dist/temporal/capability.d.ts +13 -1
- package/dist/temporal/capability.js.map +1 -1
- package/dist/temporal/date-field.d.ts +1 -1
- package/dist/temporal/date-field.js +1 -1
- package/dist/temporal/date-field.js.map +1 -1
- package/dist/temporal/date-picker.d.ts +16 -14
- package/dist/temporal/date-picker.js +1 -1
- package/dist/temporal/date-picker.js.map +1 -1
- package/dist/temporal/date-range-field.d.ts +21 -1
- package/dist/temporal/date-range-field.js +1 -1
- package/dist/temporal/date-range-field.js.map +1 -1
- package/dist/temporal/date-range-picker.d.ts +16 -14
- package/dist/temporal/date-range-picker.js +1 -1
- package/dist/temporal/date-range-picker.js.map +1 -1
- package/dist/temporal/date-time-field.d.ts +4 -1
- package/dist/temporal/date-time-field.js +1 -1
- package/dist/temporal/date-time-field.js.map +1 -1
- package/dist/temporal/date-time-picker.d.ts +16 -14
- package/dist/temporal/date-time-picker.js +1 -1
- package/dist/temporal/date-time-picker.js.map +1 -1
- package/dist/temporal/date-time-range-field.d.ts +158 -0
- package/dist/temporal/date-time-range-field.js +2 -0
- package/dist/temporal/date-time-range-field.js.map +1 -0
- package/dist/temporal/date-time-range-picker.d.ts +16 -14
- package/dist/temporal/date-time-range-picker.js +1 -1
- package/dist/temporal/date-time-range-picker.js.map +1 -1
- package/dist/temporal/internal/time-presentation.d.ts +15 -0
- package/dist/temporal/internal/time-presentation.js +2 -0
- package/dist/temporal/internal/time-presentation.js.map +1 -0
- package/dist/temporal/month-picker.d.ts +9 -7
- package/dist/temporal/month-picker.js +1 -1
- package/dist/temporal/month-picker.js.map +1 -1
- package/dist/temporal/month-range-picker.d.ts +9 -7
- package/dist/temporal/month-range-picker.js +1 -1
- package/dist/temporal/month-range-picker.js.map +1 -1
- package/dist/temporal/picker.d.ts +24 -3
- package/dist/temporal/picker.js +1 -1
- package/dist/temporal/picker.js.map +1 -1
- package/dist/temporal/range-calendar.d.ts +125 -8
- package/dist/temporal/range-calendar.js +1 -1
- package/dist/temporal/range-calendar.js.map +1 -1
- package/dist/temporal/temporal-provider.d.ts +23 -0
- package/dist/temporal/temporal-provider.js +1 -1
- package/dist/temporal/temporal-provider.js.map +1 -1
- package/dist/temporal/time-field.d.ts +4 -1
- package/dist/temporal/time-field.js +1 -1
- package/dist/temporal/time-field.js.map +1 -1
- package/dist/temporal/time-picker.d.ts +112 -0
- package/dist/temporal/time-picker.js +2 -0
- package/dist/temporal/time-picker.js.map +1 -0
- package/dist/temporal/time-range-field.d.ts +33 -2
- package/dist/temporal/time-range-field.js +1 -1
- package/dist/temporal/time-range-field.js.map +1 -1
- package/dist/temporal/year-picker.d.ts +9 -7
- package/dist/temporal/year-picker.js +1 -1
- package/dist/temporal/year-picker.js.map +1 -1
- package/dist/temporal/year-range-picker.d.ts +9 -7
- package/dist/temporal/year-range-picker.js +1 -1
- package/dist/temporal/year-range-picker.js.map +1 -1
- package/dist/text.d.ts +43 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/timer.d.ts +16 -5
- package/dist/timer.js +1 -1
- package/dist/timer.js.map +1 -1
- package/dist/toast.js +1 -1
- package/dist/toast.js.map +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/toolbar.js +1 -1
- package/dist/toolbar.js.map +1 -1
- package/dist/transfer.d.ts +191 -0
- package/dist/transfer.js +2 -0
- package/dist/transfer.js.map +1 -0
- package/dist/tree-grid.d.ts +122 -0
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-select.d.ts +186 -0
- package/dist/tree-select.js +2 -0
- package/dist/tree-select.js.map +1 -0
- package/dist/tree-view.js +1 -1
- package/dist/tree-view.js.map +1 -1
- package/dist/virtual/virtual-collection.d.ts +3 -0
- package/dist/virtual/virtual-collection.js +1 -1
- package/dist/virtual/virtual-collection.js.map +1 -1
- package/dist/virtual/virtual-core.d.ts +1 -0
- package/dist/virtual/virtual-core.js +1 -1
- package/dist/virtual/virtual-core.js.map +1 -1
- package/dist/virtual/virtual-grid.d.ts +12 -2
- package/dist/virtual/virtual-grid.js +1 -1
- package/dist/virtual/virtual-grid.js.map +1 -1
- package/dist/virtual/virtual-list.d.ts +12 -3
- package/dist/virtual/virtual-list.js +1 -1
- package/dist/virtual/virtual-list.js.map +1 -1
- package/dist/virtual/virtual-masonry.d.ts +12 -2
- package/dist/virtual/virtual-masonry.js +1 -1
- package/dist/virtual/virtual-masonry.js.map +1 -1
- package/dist/virtual/virtual-spatial.d.ts +12 -2
- package/dist/virtual/virtual-spatial.js +1 -1
- package/dist/virtual/virtual-spatial.js.map +1 -1
- package/dist/window-splitter.js +1 -1
- package/dist/window-splitter.js.map +1 -1
- package/package.json +86 -16
|
@@ -1,2 +1,2 @@
|
|
|
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 connectedScrollport;let connectedSurface;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();const current=connection.value;connection.value=undefined;connectedScrollport=undefined;connectedSurface=undefined;current?.disconnect()};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});connectedScrollport=currentScrollport;connectedSurface=currentSurface;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))}};const retireObsoleteConnection=()=>{if(connection.value===undefined)return;if(scrollport.value===connectedScrollport&&surface.value===connectedSurface)return;disconnectConnection()};watch([scrollport,surface],retireObsoleteConnection,{flush:'sync'});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},scrollport:{type:[String,Object],default:'root'},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);let rootElement=null;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)}});const resolveScrollport=target=>{virtualizer.scrollport.value=target==='root'?rootElement:target==='document'?rootElement?.ownerDocument??null:target};watch(()=>props.scrollport,resolveScrollport,{flush:'sync'});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=>{rootElement=asHTMLElement(element);resolveScrollport(props.scrollport)},'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=asHTMLElement(value);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=asHTMLElement(value);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=asHTMLElement(value);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=asHTMLElement(value);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)}function asHTMLElement(value){return typeof value==='object'&&value!==null&&'offsetHeight'in value?value:null}export function virtualizerNotConnected(){return{ok:false,error:{class:'transition-rejection',code:'virtualizer-not-connected',message:'not connected'}}}export{createAxisMeasurementResolver,virtualItemStyle,virtualSurfaceStyle};
|
|
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 connectedScrollport;let connectedSurface;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();const current=connection.value;connection.value=undefined;connectedScrollport=undefined;connectedSurface=undefined;current?.disconnect()};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});connectedScrollport=currentScrollport;connectedSurface=currentSurface;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))}};const retireObsoleteConnection=()=>{if(connection.value===undefined)return;if(scrollport.value===connectedScrollport&&surface.value===connectedSurface)return;disconnectConnection()};watch([scrollport,surface],retireObsoleteConnection,{flush:'sync'});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()});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=>connection.value?.measure(measurements)??virtualizerNotConnected(),mutate:mutation=>connection.value?.mutate(mutation)??virtualizerNotConnected(),scrollTo:(id,alignment)=>connection.value?.scrollTo(id,alignment)??virtualizerNotConnected(),refresh:()=>{connection.value?.refresh()},flush:()=>connection.value?.flush()??virtualizerNotConnected()})}export const VirtualizerRoot=/* @__PURE__ */defineComponent({name:'SectileVirtualizerRoot',inheritAttrs:false,props:{defaultState:{type:Object,required:true},strategy:{type:Object,required:true},scrollport:{type:[String,Object],default:'root'},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);let rootElement=null;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)}});const resolveScrollport=target=>{virtualizer.scrollport.value=target==='root'?rootElement:target==='document'?rootElement?.ownerDocument??null:target};const setRootElement=element=>{rootElement=asHTMLElement(element);resolveScrollport(props.scrollport)};watch(()=>props.scrollport,resolveScrollport,{flush:'sync'});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[0]===previous[0]&&value[1]===previous[1]&&value[2]===previous[2])return;constructionWarningShown=true;console.warn('[Sectile] Remount to change strategy/measure/initialViewport.')},{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:virtualizer.plan,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:setRootElement,'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=asHTMLElement(value);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=asHTMLElement(value);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=asHTMLElement(value);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=asHTMLElement(value);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 asHTMLElement(value){return typeof value==='object'&&value!==null&&'offsetHeight'in value?value:null}export function virtualizerNotConnected(){return{ok:false,error:{class:'transition-rejection',code:'virtualizer-not-connected',message:'not connected'}}}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","shallowReactive","shallowRef","toValue","watch","createAxisMeasurementResolver","createVirtualizer","virtualItemStyle","virtualSurfaceStyle","Primitive","virtualizerContextKey","Symbol","virtualizerSurfaceContextKey","useVirtualizer","options","scrollport","surface","plan","connection","frames","Map","frameRegistrations","items","itemRegistrations","connectedScrollport","connectedSurface","disposed","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnectConnection","clear","current","disconnect","connect","currentScrollport","currentSurface","viewportInsets","next","measure","readViewport","writeScroll","environment","onStateChange","frame","keys","set","registerFrame","item","desired","registerItem","id","retireObsoleteConnection","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","String","default","Number","Function","as","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","rootElement","virtualizer","resolveScrollport","target","ownerDocument","is","constructionWarningShown","previous","every","index","console","warn","slotProps","placements","elementRef","asHTMLElement","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/virtual/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","connectedScrollport","connectedSurface","disposed","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnectConnection","clear","current","disconnect","connect","currentScrollport","currentSurface","viewportInsets","next","measure","readViewport","writeScroll","environment","onStateChange","frame","keys","set","registerFrame","item","desired","registerItem","id","retireObsoleteConnection","flush","immediate","setState","setOverscan","deep","setViewportInsets","Object","freeze","element","token","get","delete","measurements","virtualizerNotConnected","mutate","mutation","scrollTo","alignment","refresh","VirtualizerRoot","name","inheritAttrs","props","defaultState","type","required","String","default","Number","Function","as","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","rootElement","virtualizer","resolveScrollport","target","ownerDocument","setRootElement","asHTMLElement","is","constructionWarningShown","previous","console","warn","slotProps","placements","elementRef","VirtualizerHeader","root","useVirtualizerRoot","unregister","setElement","VirtualizerSurface","style","position","VirtualizerItem","placement","size","useVirtualizerSurface","sizing","width","height","index","visible","VirtualizerFooter","part","TypeError","useVirtualizerSurfaceRegistration","class","code","message"],"sources":["../../src/virtual/virtual-core.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
1
|
+
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type ShallowUnwrapRef, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
2
2
|
import type { StableID } from '@sectile/core';
|
|
3
|
+
import type { VirtualCollectionPartAttributes } from './virtual-collection.js';
|
|
3
4
|
import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
4
5
|
import { type TrackGridLayoutState } from '@sectile/virtual/track-grid-layout';
|
|
5
6
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
@@ -27,7 +28,7 @@ export interface VirtualGridComponent {
|
|
|
27
28
|
empty?: () => VNodeChild;
|
|
28
29
|
footer?: () => VNodeChild;
|
|
29
30
|
};
|
|
30
|
-
}
|
|
31
|
+
} & ShallowUnwrapRef<import('./virtual-collection.js').VirtualCollectionExpose<TrackGridLayoutState<ID>, ID>>;
|
|
31
32
|
}
|
|
32
33
|
declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
33
34
|
items: {
|
|
@@ -82,6 +83,10 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
82
83
|
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
83
84
|
default: undefined;
|
|
84
85
|
};
|
|
86
|
+
partAttributes: {
|
|
87
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
88
|
+
default: undefined;
|
|
89
|
+
};
|
|
85
90
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
86
91
|
stateChange: (_state: TrackGridLayoutState<StableID>) => boolean;
|
|
87
92
|
planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
|
|
@@ -139,6 +144,10 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
139
144
|
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
140
145
|
default: undefined;
|
|
141
146
|
};
|
|
147
|
+
partAttributes: {
|
|
148
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
149
|
+
default: undefined;
|
|
150
|
+
};
|
|
142
151
|
}>> & Readonly<{
|
|
143
152
|
onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
|
|
144
153
|
onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
|
|
@@ -153,6 +162,7 @@ declare const VirtualGridRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
153
162
|
contentAs: string;
|
|
154
163
|
itemAs: string;
|
|
155
164
|
itemAttributes: VirtualCollectionItemAttributes<unknown>;
|
|
165
|
+
partAttributes: Readonly<Partial<Record<"footer" | "header" | "surface", Readonly<Record<string, unknown>>>>>;
|
|
156
166
|
}, SlotsType<{
|
|
157
167
|
header: () => VNodeChild;
|
|
158
168
|
item: (props: VirtualGridSlotProps<unknown>) => VNodeChild;
|
|
@@ -1,2 +1,2 @@
|
|
|
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'./virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./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&¤tColumn?.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}
|
|
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{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./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},partAttributes:{type:Object,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=asHTMLElement(value);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,style:virtualCollectionRootStyle(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,props.partAttributes?.header??{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{...props.partAttributes?.surface,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,props.partAttributes?.footer??{},{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&¤tColumn?.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","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/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","asHTMLElement","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","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","partAttributes","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","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","style","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","header","surface","column","footer","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/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeArrayChildren, type VNodeChild, type VNodeProps } from 'vue';
|
|
1
|
+
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type ShallowUnwrapRef, type SlotsType, type VNodeArrayChildren, type VNodeChild, type VNodeProps } from 'vue';
|
|
2
2
|
import type { StableID } from '@sectile/core';
|
|
3
3
|
import { type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
4
4
|
import { type LinearAxis, type LinearLayoutState, type LinearMeasurement } from '@sectile/virtual/linear-layout';
|
|
5
5
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualMeasurementResolver, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
6
|
-
import { type PreparedVirtualCollection, type VirtualCollectionBaseProps, type VirtualCollectionExpose, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
|
|
6
|
+
import { type PreparedVirtualCollection, type VirtualCollectionPartAttributes, type VirtualCollectionBaseProps, type VirtualCollectionExpose, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
|
|
7
7
|
export type VirtualListItemAttributes<Value> = VirtualCollectionItemAttributes<Value>;
|
|
8
8
|
export type VirtualListIDResolver<Value, ID extends StableID = StableID> = VirtualCollectionIDResolver<Value, ID>;
|
|
9
9
|
export interface VirtualListProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
|
|
@@ -28,7 +28,7 @@ export interface VirtualListComponent {
|
|
|
28
28
|
empty?: () => VNodeChild;
|
|
29
29
|
footer?: () => VNodeChild;
|
|
30
30
|
};
|
|
31
|
-
}
|
|
31
|
+
} & ShallowUnwrapRef<VirtualListExpose<ID>>;
|
|
32
32
|
}
|
|
33
33
|
declare const VirtualListRuntime: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
34
34
|
items: {
|
|
@@ -83,6 +83,10 @@ declare const VirtualListRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
83
83
|
type: PropType<VirtualListItemAttributes<unknown>>;
|
|
84
84
|
default: undefined;
|
|
85
85
|
};
|
|
86
|
+
partAttributes: {
|
|
87
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
88
|
+
default: undefined;
|
|
89
|
+
};
|
|
86
90
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
87
91
|
stateChange: (_state: LinearLayoutState<StableID>) => boolean;
|
|
88
92
|
planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
|
|
@@ -140,6 +144,10 @@ declare const VirtualListRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
140
144
|
type: PropType<VirtualListItemAttributes<unknown>>;
|
|
141
145
|
default: undefined;
|
|
142
146
|
};
|
|
147
|
+
partAttributes: {
|
|
148
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
149
|
+
default: undefined;
|
|
150
|
+
};
|
|
143
151
|
}>> & Readonly<{
|
|
144
152
|
onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
|
|
145
153
|
onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
|
|
@@ -155,6 +163,7 @@ declare const VirtualListRuntime: import("vue").DefineComponent<import("vue").Ex
|
|
|
155
163
|
contentAs: string;
|
|
156
164
|
itemAs: string;
|
|
157
165
|
itemAttributes: VirtualListItemAttributes<unknown>;
|
|
166
|
+
partAttributes: Readonly<Partial<Record<"footer" | "header" | "surface", Readonly<Record<string, unknown>>>>>;
|
|
158
167
|
}, SlotsType<{
|
|
159
168
|
header: () => VNodeChild;
|
|
160
169
|
item: (props: VirtualListSlotProps<unknown>) => VNodeChild;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createSequence}from'@sectile/core/sequence';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createLinearLayout,linearLayoutStrategyFor,setLinearCrossExtent,tryApplyLinearMeasurements,tryApplyLinearPatch}from'@sectile/virtual/linear-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection}from'./virtual-collection.js';const VirtualListRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualList',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},axis:{type:String,default:'vertical'},gap:{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 axis=props.axis;const gap=props.gap;const maxItems=props.maxItems;const sizePolicy=props.sizePolicy;const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,maxItems));const automaticEstimate=shallowRef();const bootstrapCount=shallowRef(virtualSizePolicyRequiresMeasurement(sizePolicy)&&prepared.value.domain.size>0?1:0);const bootstrapElements=new Map;const bootstrapRefs=new Map;let bootstrapScheduled=false;let disposed=false;const initialCrossExtent=crossExtentForViewport(axis,initialViewport);const initialState=virtualSizePolicyRequiresMeasurement(sizePolicy)?createEmptyVirtualListState({axis,gap,maxItems,crossExtent:initialCrossExtent}):createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:initialCrossExtent});const activeState=shallowRef(initialState);const root=shallowRef();const measure=sizePolicy.kind==='fixed'?undefined:createVirtualListMeasurementResolver(axis);const isBootstrapping=()=>automaticEstimate.value===undefined&&bootstrapCount.value>0&&prepared.value.domain.size>0;const phase=()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready';const currentState=()=>root.value?.state??activeState.value;const bootstrapItemRef=index=>{const existing=bootstrapRefs.get(index);if(existing!==undefined)return existing;const callback=value=>{const element=value instanceof HTMLElement?value:null;if(element===null){bootstrapElements.delete(index);if(bootstrapRefs.get(index)===callback)bootstrapRefs.delete(index);return}bootstrapElements.set(index,element);scheduleBootstrap()};bootstrapRefs.set(index,callback);return callback};const completeBootstrap=()=>{if(!isBootstrapping())return;const count=Math.min(bootstrapCount.value,prepared.value.domain.size);const extents=[];for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const bounds=element.getBoundingClientRect();const extent=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(extent)||extent<=0)return;extents.push(extent)}const total=extents.reduce((sum,extent)=>sum+extent,0)+gap*Math.max(0,extents.length-1);const viewport=root.value?.plan?.viewport;const viewportExtent=axis==='vertical'?viewport?.height??initialViewport?.height??0:viewport?.width??initialViewport?.width??0;const target=viewportExtent+bootstrapTrailingOverscanExtent(props.overscan,axis);const average=extents.reduce((sum,extent)=>sum+extent,0)/extents.length;if(target>total&&count<prepared.value.domain.size){bootstrapCount.value=Math.min(prepared.value.domain.size,Math.max(count+1,Math.ceil((target+gap)/(average+gap))));return}automaticEstimate.value=average;bootstrapCount.value=0;bootstrapElements.clear();bootstrapRefs.clear();activeState.value=createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:currentState().crossExtent},average)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||bootstrapCount.value===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);watch(()=>[props.items,props.getID],()=>{const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);if(virtualSizePolicyRequiresMeasurement(sizePolicy)&&automaticEstimate.value===undefined){prepared.value=next;bootstrapCount.value=next.domain.size>0?1:0;scheduleBootstrap();return}let nextState=currentState();const exposed=root.value;const patch=reconcileVirtualCollectionExtents(nextState,next,sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed===undefined?tryApplyLinearPatch(nextState,patch):exposed.mutate(patch);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}const valueUpdates=reconcileVirtualCollectionValueExtents(nextState,next,sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed===undefined?tryApplyLinearMeasurements(nextState,{generation:nextState.generation,measurements:valueUpdates}):exposed.measure(valueUpdates);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}prepared.value=next},{flush:'sync'});const syncCrossExtent=plan=>{const crossExtent=axis==='vertical'?plan.viewport.width:plan.viewport.height;const state=currentState();const next=setLinearCrossExtent(state,crossExtent);if(Object.is(next,state))return false;activeState.value=next;return true};let constructionWarningShown=false;watch(()=>[props.axis,props.gap,props.maxItems,props.sizePolicy,props.initialViewport?.x,props.initialViewport?.y,props.initialViewport?.width,props.initialViewport?.height],()=>{if(constructionWarningShown||props.axis===axis&&props.gap===gap&&props.maxItems===maxItems&&sameVirtualSizePolicy(props.sizePolicy,sizePolicy)&&sameVirtualRect(props.initialViewport,initialViewport))return;constructionWarningShown=true;console.warn('[Sectile] VirtualList axis, gap, maxItems, sizePolicy, and initialViewport are construction-time options. Remount the list to change them.')},{flush:'sync'});onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear();bootstrapRefs.clear()});expose(createVirtualCollectionExpose(root,initialState,phase));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:linearLayoutStrategyFor(),overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,style:attrs['scrollport']===undefined||attrs['scrollport']==='root'?[{overflow:'auto'},attrs['style']]:attrs['style'],'data-virtual-layout':'virtual-list','data-phase':phase(),onStateChange:value=>{const state=value;activeState.value=state;emit('stateChange',state)},onPlanChange:plan=>{if(syncCrossExtent(plan))return;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs,...isBootstrapping()&&axis==='horizontal'?{style:{display:'flex'}}:{}},{default:()=>isBootstrapping()?renderVirtualListBootstrapItems(prepared.value,props.items,bootstrapCount.value,{axis,gap,crossExtent:currentState().crossExtent,itemAs:props.itemAs,itemAttributes:props.itemAttributes},slots['item'],bootstrapItemRef):renderHighLevelItems('virtual-list',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,linearItemSize(axis,sizePolicy),(value,id,index,placement)=>slots['item']?.({value,id,index,placement}),slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualList=VirtualListRuntime;export function createVirtualListMeasurementResolver(axis){return({element,placement,state})=>measureVirtualListElement(axis,placement.id,element,state)}function measureVirtualListElement(axis,id,element,state){const index=state.domain.indexOf(id);if(index===null)return null;const bounds=element.getBoundingClientRect();const value=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(value)||value<=0)return null;const current=state.extents.extentAt(index);if(current?.kind==='exact'&&Math.abs(current.value-value)<0.01)return null;return Object.freeze({index,extent:Object.freeze({kind:'exact',value})})}export function createVirtualListState(prepared,items,props,automaticEstimate){return createLinearLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createVirtualListExtentIndex(prepared,items,props.sizePolicy,props.maxItems,automaticEstimate),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function createEmptyVirtualListState(props){return createLinearLayout(createSequence([],{maxItems:props.maxItems,maxIDCodeUnits:1_024}),createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems}),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function bootstrapTrailingOverscanExtent(overscan,axis){if(typeof overscan==='number')return overscan;return axis==='vertical'?overscan.bottom??0:overscan.right??0}export function renderVirtualListBootstrapItems(prepared,items,count,props,render,itemRef){return Array.from({length:Math.min(count,prepared.domain.size)},(_unused,index)=>{const value=items[index];const id=prepared.domain.at(index);const attributes=props.itemAttributes?.(value,index)??{};const placement=Object.freeze({id,index,rect:Object.freeze(props.axis==='vertical'?{x:0,y:0,width:props.crossExtent,height:0}:{x:0,y:0,width:0,height:props.crossExtent}),visible:true});const rendered=render?.({value,id,index,placement});const children=rendered===undefined||rendered===null?[]:Array.isArray(rendered)?rendered:[rendered];return h(props.itemAs,{...attributes,key:id,ref:itemRef(index),style:[attributes['style'],props.crossExtent>0?props.axis==='vertical'?{width:`${props.crossExtent}px`}:{height:`${props.crossExtent}px`}:undefined,props.gap>0&&index>0?props.axis==='vertical'?{marginTop:`${props.gap}px`}:{marginLeft:`${props.gap}px`}:undefined],'data-scope':'virtual-list','data-part':'item','data-index':index,'data-visible':'','data-bootstrap':''},children)})}function createVirtualListExtentIndex(prepared,items,sizePolicy,maxItems,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems})}const shared=sizePolicy.kind==='fixed'||sizePolicy.kind==='measured'||sizePolicy.kind==='estimated'&&typeof sizePolicy.estimate==='number'?createVirtualExtent(sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(sizePolicy,items[index],index,automaticEstimate)),{maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems})}function linearItemSize(axis,sizePolicy){if(sizePolicy.kind==='fixed')return'both';return axis==='vertical'?'width':'height'}function crossExtentForViewport(axis,viewport){if(viewport===undefined)return 0;return axis==='vertical'?viewport.width:viewport.height}function sameVirtualSizePolicy(left,right){if(left.kind!==right.kind)return false;if(left.kind==='measured'&&right.kind==='measured')return true;if(left.kind==='fixed'&&right.kind==='fixed'){return left.extent===right.extent}return left.kind==='estimated'&&right.kind==='estimated'&&Object.is(left.estimate,right.estimate)}function sameVirtualRect(left,right){if(left===undefined||right===undefined)return left===right;return left.x===right.x&&left.y===right.y&&left.width===right.width&&left.height===right.height}
|
|
1
|
+
import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createSequence}from'@sectile/core/sequence';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createLinearLayout,linearLayoutStrategyFor,setLinearCrossExtent,tryApplyLinearMeasurements,tryApplyLinearPatch}from'@sectile/virtual/linear-layout';import{}from'@sectile/dom/virtual';import{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./virtual-collection.js';const VirtualListRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualList',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},axis:{type:String,default:'vertical'},gap:{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},partAttributes:{type:Object,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const axis=props.axis;const gap=props.gap;const maxItems=props.maxItems;const sizePolicy=props.sizePolicy;const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,maxItems));const automaticEstimate=shallowRef();const bootstrapCount=shallowRef(virtualSizePolicyRequiresMeasurement(sizePolicy)&&prepared.value.domain.size>0?1:0);const bootstrapElements=new Map;const bootstrapRefs=new Map;let bootstrapScheduled=false;let disposed=false;const initialCrossExtent=crossExtentForViewport(axis,initialViewport);const initialState=virtualSizePolicyRequiresMeasurement(sizePolicy)?createEmptyVirtualListState({axis,gap,maxItems,crossExtent:initialCrossExtent}):createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:initialCrossExtent});const activeState=shallowRef(initialState);const root=shallowRef();const measure=sizePolicy.kind==='fixed'?undefined:createVirtualListMeasurementResolver(axis);const isBootstrapping=()=>automaticEstimate.value===undefined&&bootstrapCount.value>0&&prepared.value.domain.size>0;const phase=()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready';const currentState=()=>activeState.value;const bootstrapItemRef=index=>{const existing=bootstrapRefs.get(index);if(existing!==undefined)return existing;const callback=value=>{const element=asHTMLElement(value);if(element===null){bootstrapElements.delete(index);if(bootstrapRefs.get(index)===callback)bootstrapRefs.delete(index);return}bootstrapElements.set(index,element);scheduleBootstrap()};bootstrapRefs.set(index,callback);return callback};const completeBootstrap=()=>{if(!isBootstrapping())return;const count=Math.min(bootstrapCount.value,prepared.value.domain.size);const extents=[];for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const bounds=element.getBoundingClientRect();const extent=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(extent)||extent<=0)return;extents.push(extent)}const total=extents.reduce((sum,extent)=>sum+extent,0)+gap*Math.max(0,extents.length-1);const viewport=root.value?.plan?.viewport;const viewportExtent=axis==='vertical'?viewport?.height??initialViewport?.height??0:viewport?.width??initialViewport?.width??0;const target=viewportExtent+bootstrapTrailingOverscanExtent(props.overscan,axis);const average=extents.reduce((sum,extent)=>sum+extent,0)/extents.length;if(target>total&&count<prepared.value.domain.size){bootstrapCount.value=Math.min(prepared.value.domain.size,Math.max(count+1,Math.ceil((target+gap)/(average+gap))));return}automaticEstimate.value=average;bootstrapCount.value=0;bootstrapElements.clear();bootstrapRefs.clear();activeState.value=createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:currentState().crossExtent},average)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||bootstrapCount.value===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);watch(()=>[props.items,props.getID],()=>{const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);if(virtualSizePolicyRequiresMeasurement(sizePolicy)&&automaticEstimate.value===undefined){prepared.value=next;bootstrapCount.value=next.domain.size>0?1:0;scheduleBootstrap();return}let nextState=currentState();const exposed=root.value?.state===nextState?root.value:undefined;const patch=reconcileVirtualCollectionExtents(nextState,next,sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed===undefined?tryApplyLinearPatch(nextState,patch):exposed.mutate(patch);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}const valueUpdates=reconcileVirtualCollectionValueExtents(nextState,next,sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed===undefined?tryApplyLinearMeasurements(nextState,{generation:nextState.generation,measurements:valueUpdates}):exposed.measure(valueUpdates);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}prepared.value=next},{flush:'sync'});const syncCrossExtent=plan=>{const crossExtent=axis==='vertical'?plan.viewport.width:plan.viewport.height;const state=currentState();const next=setLinearCrossExtent(state,crossExtent);if(Object.is(next,state))return false;activeState.value=next;return true};let constructionWarningShown=false;watch(()=>[props.axis,props.gap,props.maxItems,props.sizePolicy,props.initialViewport?.x,props.initialViewport?.y,props.initialViewport?.width,props.initialViewport?.height],()=>{if(constructionWarningShown||props.axis===axis&&props.gap===gap&&props.maxItems===maxItems&&sameVirtualSizePolicy(props.sizePolicy,sizePolicy)&&sameVirtualRect(props.initialViewport,initialViewport))return;constructionWarningShown=true;console.warn('[Sectile] VirtualList axis, gap, maxItems, sizePolicy, and initialViewport are construction-time options. Remount the list to change them.')},{flush:'sync'});onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear();bootstrapRefs.clear()});expose(createVirtualCollectionExpose(root,initialState,phase));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:linearLayoutStrategyFor(),overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,style:virtualCollectionRootStyle(attrs),'data-virtual-layout':'virtual-list','data-phase':phase(),onStateChange:value=>{const state=value;activeState.value=state;emit('stateChange',state)},onPlanChange:plan=>{if(syncCrossExtent(plan))return;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,props.partAttributes?.header??{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{...props.partAttributes?.surface,as:props.contentAs,...isBootstrapping()&&axis==='horizontal'?{style:{display:'flex'}}:{}},{default:()=>isBootstrapping()?renderVirtualListBootstrapItems(prepared.value,props.items,bootstrapCount.value,{axis,gap,crossExtent:currentState().crossExtent,itemAs:props.itemAs,itemAttributes:props.itemAttributes},slots['item'],bootstrapItemRef):renderHighLevelItems('virtual-list',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,linearItemSize(axis,sizePolicy),(value,id,index,placement)=>slots['item']?.({value,id,index,placement}),slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,props.partAttributes?.footer??{},{default:()=>slots['footer']?.()})]})}});export const VirtualList=VirtualListRuntime;export function createVirtualListMeasurementResolver(axis){return({element,placement,state})=>measureVirtualListElement(axis,placement.id,element,state)}function measureVirtualListElement(axis,id,element,state){const index=state.domain.indexOf(id);if(index===null)return null;const bounds=element.getBoundingClientRect();const value=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(value)||value<=0)return null;const current=state.extents.extentAt(index);if(current?.kind==='exact'&&Math.abs(current.value-value)<0.01)return null;return Object.freeze({index,extent:Object.freeze({kind:'exact',value})})}export function createVirtualListState(prepared,items,props,automaticEstimate){return createLinearLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createVirtualListExtentIndex(prepared,items,props.sizePolicy,props.maxItems,automaticEstimate),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function createEmptyVirtualListState(props){return createLinearLayout(createSequence([],{maxItems:props.maxItems,maxIDCodeUnits:1_024}),createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems}),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function bootstrapTrailingOverscanExtent(overscan,axis){if(typeof overscan==='number')return overscan;return axis==='vertical'?overscan.bottom??0:overscan.right??0}export function renderVirtualListBootstrapItems(prepared,items,count,props,render,itemRef){return Array.from({length:Math.min(count,prepared.domain.size)},(_unused,index)=>{const value=items[index];const id=prepared.domain.at(index);const attributes=props.itemAttributes?.(value,index)??{};const placement=Object.freeze({id,index,rect:Object.freeze(props.axis==='vertical'?{x:0,y:0,width:props.crossExtent,height:0}:{x:0,y:0,width:0,height:props.crossExtent}),visible:true});const rendered=render?.({value,id,index,placement});const children=rendered===undefined||rendered===null?[]:Array.isArray(rendered)?rendered:[rendered];return h(props.itemAs,{...attributes,key:id,ref:itemRef(index),style:[attributes['style'],props.crossExtent>0?props.axis==='vertical'?{width:`${props.crossExtent}px`}:{height:`${props.crossExtent}px`}:undefined,props.gap>0&&index>0?props.axis==='vertical'?{marginTop:`${props.gap}px`}:{marginLeft:`${props.gap}px`}:undefined],'data-scope':'virtual-list','data-part':'item','data-index':index,'data-visible':'','data-bootstrap':''},children)})}function createVirtualListExtentIndex(prepared,items,sizePolicy,maxItems,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems})}const shared=sizePolicy.kind==='fixed'||sizePolicy.kind==='measured'||sizePolicy.kind==='estimated'&&typeof sizePolicy.estimate==='number'?createVirtualExtent(sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(sizePolicy,items[index],index,automaticEstimate)),{maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems})}function linearItemSize(axis,sizePolicy){if(sizePolicy.kind==='fixed')return'both';return axis==='vertical'?'width':'height'}function crossExtentForViewport(axis,viewport){if(viewport===undefined)return 0;return axis==='vertical'?viewport.width:viewport.height}function sameVirtualSizePolicy(left,right){if(left.kind!==right.kind)return false;if(left.kind==='measured'&&right.kind==='measured')return true;if(left.kind==='fixed'&&right.kind==='fixed'){return left.extent===right.extent}return left.kind==='estimated'&&right.kind==='estimated'&&Object.is(left.estimate,right.estimate)}function sameVirtualRect(left,right){if(left===undefined||right===undefined)return left===right;return left.x===right.x&&left.y===right.y&&left.width===right.width&&left.height===right.height}
|
|
2
2
|
//# sourceMappingURL=virtual-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-list.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createSequence","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createLinearLayout","linearLayoutStrategyFor","setLinearCrossExtent","tryApplyLinearMeasurements","tryApplyLinearPatch","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","VirtualListRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","axis","String","default","gap","Number","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","automaticEstimate","bootstrapCount","value","domain","size","bootstrapElements","Map","bootstrapRefs","bootstrapScheduled","disposed","initialCrossExtent","crossExtentForViewport","initialState","createEmptyVirtualListState","crossExtent","createVirtualListState","activeState","root","measure","kind","createVirtualListMeasurementResolver","isBootstrapping","phase","currentState","state","bootstrapItemRef","index","existing","get","callback","element","HTMLElement","delete","set","scheduleBootstrap","completeBootstrap","count","Math","min","extents","bounds","getBoundingClientRect","extent","height","width","isFinite","push","total","reduce","sum","max","length","viewport","plan","viewportExtent","target","bootstrapTrailingOverscanExtent","average","ceil","clear","next","nextState","exposed","patch","result","mutate","ok","valueUpdates","generation","measurements","flush","syncCrossExtent","is","constructionWarningShown","x","y","sameVirtualSizePolicy","sameVirtualRect","console","warn","ref","defaultState","strategy","style","overflow","onStateChange","onPlanChange","onError","placements","display","renderVirtualListBootstrapItems","linearItemSize","id","placement","VirtualList","measureVirtualListElement","indexOf","current","extentAt","abs","createVirtualListExtentIndex","maxIDCodeUnits","bottom","right","render","itemRef","from","_unused","at","attributes","rect","visible","rendered","children","isArray","key","marginTop","marginLeft","shared","estimate","left"],"sources":["../../src/virtual/virtual-list.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"virtual-list.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createSequence","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createLinearLayout","linearLayoutStrategyFor","setLinearCrossExtent","tryApplyLinearMeasurements","tryApplyLinearPatch","asHTMLElement","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","VirtualListRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","axis","String","default","gap","Number","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","partAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","automaticEstimate","bootstrapCount","value","domain","size","bootstrapElements","Map","bootstrapRefs","bootstrapScheduled","disposed","initialCrossExtent","crossExtentForViewport","initialState","createEmptyVirtualListState","crossExtent","createVirtualListState","activeState","root","measure","kind","createVirtualListMeasurementResolver","isBootstrapping","phase","currentState","bootstrapItemRef","index","existing","get","callback","element","delete","set","scheduleBootstrap","completeBootstrap","count","Math","min","extents","bounds","getBoundingClientRect","extent","height","width","isFinite","push","total","reduce","sum","max","length","viewport","plan","viewportExtent","target","bootstrapTrailingOverscanExtent","average","ceil","clear","next","nextState","exposed","state","patch","result","mutate","ok","valueUpdates","generation","measurements","flush","syncCrossExtent","is","constructionWarningShown","x","y","sameVirtualSizePolicy","sameVirtualRect","console","warn","ref","defaultState","strategy","style","onStateChange","onPlanChange","onError","placements","header","surface","display","renderVirtualListBootstrapItems","linearItemSize","id","placement","footer","VirtualList","measureVirtualListElement","indexOf","current","extentAt","abs","createVirtualListExtentIndex","maxIDCodeUnits","bottom","right","render","itemRef","from","_unused","at","attributes","rect","visible","rendered","children","isArray","key","marginTop","marginLeft","shared","estimate","left"],"sources":["../../src/virtual/virtual-list.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
1
|
+
import { type AllowedComponentProps, type ComponentCustomProps, type PropType, type ShallowUnwrapRef, type SlotsType, type VNodeChild, type VNodeProps } from 'vue';
|
|
2
2
|
import type { StableID } from '@sectile/core';
|
|
3
|
+
import type { VirtualCollectionPartAttributes } from './virtual-collection.js';
|
|
3
4
|
import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
|
|
4
5
|
import { type MasonryLayoutState, type MasonryPlacement, type MasonryPlacementPolicy } from '@sectile/virtual/masonry-layout';
|
|
5
6
|
import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
|
|
@@ -28,7 +29,7 @@ export interface VirtualMasonryComponent {
|
|
|
28
29
|
empty?: () => VNodeChild;
|
|
29
30
|
footer?: () => VNodeChild;
|
|
30
31
|
};
|
|
31
|
-
}
|
|
32
|
+
} & ShallowUnwrapRef<import('./virtual-collection.js').VirtualCollectionExpose<MasonryLayoutState<ID>, ID>>;
|
|
32
33
|
}
|
|
33
34
|
declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
34
35
|
items: {
|
|
@@ -87,6 +88,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
|
|
|
87
88
|
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
88
89
|
default: undefined;
|
|
89
90
|
};
|
|
91
|
+
partAttributes: {
|
|
92
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
93
|
+
default: undefined;
|
|
94
|
+
};
|
|
90
95
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
91
96
|
stateChange: (_state: MasonryLayoutState<StableID>) => boolean;
|
|
92
97
|
planChange: (_plan: VirtualLayoutPlan<StableID>) => boolean;
|
|
@@ -148,6 +153,10 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
|
|
|
148
153
|
type: PropType<VirtualCollectionItemAttributes<unknown>>;
|
|
149
154
|
default: undefined;
|
|
150
155
|
};
|
|
156
|
+
partAttributes: {
|
|
157
|
+
type: PropType<VirtualCollectionPartAttributes>;
|
|
158
|
+
default: undefined;
|
|
159
|
+
};
|
|
151
160
|
}>> & Readonly<{
|
|
152
161
|
onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
|
|
153
162
|
onPlanChange?: (_plan: VirtualLayoutPlan<StableID>) => any;
|
|
@@ -163,6 +172,7 @@ declare const VirtualMasonryRuntime: import("vue").DefineComponent<import("vue")
|
|
|
163
172
|
contentAs: string;
|
|
164
173
|
itemAs: string;
|
|
165
174
|
itemAttributes: VirtualCollectionItemAttributes<unknown>;
|
|
175
|
+
partAttributes: Readonly<Partial<Record<"footer" | "header" | "surface", Readonly<Record<string, unknown>>>>>;
|
|
166
176
|
}, SlotsType<{
|
|
167
177
|
header: () => VNodeChild;
|
|
168
178
|
item: (props: VirtualMasonrySlotProps<unknown>) => VNodeChild;
|
|
@@ -1,2 +1,2 @@
|
|
|
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'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection}from'./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
|
|
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{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./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},partAttributes:{type:Object,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=asHTMLElement(value);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,style:virtualCollectionRootStyle(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,props.partAttributes?.header??{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{...props.partAttributes?.surface,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,props.partAttributes?.footer??{},{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
|