@sectile/vue 0.18.3 → 0.20.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 +127 -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 +33 -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 +16 -7
- package/dist/input/native-range-field.js +1 -1
- package/dist/input/native-range-field.js.map +1 -1
- 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/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/number-field.d.ts +18 -1
- package/dist/number-field.js +1 -1
- package/dist/number-field.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 +50 -2
- package/dist/overlay/popup.js +1 -1
- package/dist/overlay/popup.js.map +1 -1
- package/dist/overlay/tooltip.d.ts +38 -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 +169 -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/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 +15 -111
- 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 +3 -1
- package/dist/temporal/date-picker.js.map +1 -1
- package/dist/temporal/date-range-field.d.ts +20 -0
- 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 +3 -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 +3 -1
- 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 +3 -1
- 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 +3 -1
- package/dist/temporal/month-picker.js.map +1 -1
- package/dist/temporal/month-range-picker.d.ts +3 -1
- package/dist/temporal/month-range-picker.js.map +1 -1
- package/dist/temporal/picker.d.ts +23 -1
- package/dist/temporal/picker.js +1 -1
- package/dist/temporal/picker.js.map +1 -1
- package/dist/temporal/range-calendar.d.ts +119 -2
- 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 +32 -1
- 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 +3 -1
- package/dist/temporal/year-picker.js.map +1 -1
- package/dist/temporal/year-range-picker.d.ts +3 -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 +2 -0
- package/dist/virtual/virtual-collection.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 +88 -17
package/dist/tree-view.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeView}from"@sectile/dom/tree-view";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileTreeViewRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeViewRoot=defineComponent({name:"SectileTreeViewRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:"single"},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:void 0},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValues":_value=>true,"update:highlightedValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==void 0?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant("TreeViewRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeViewRoot","expandedValues",()=>props.expandedValues),highlighted:useControlledStateInvariant("TreeViewRoot","highlightedValue",()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValues:props.expandedValues!==void 0?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-tree-view-item]").forEach(node=>{const id=node.dataset["sectileTreeViewItem"];if(id!==void 0)connection.value?.setItemAttributes(node,{id,disabled:node.dataset["disabled"]!==void 0})});element.value.querySelectorAll("[data-sectile-tree-view-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeViewDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit("update:modelValue",reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValues",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit("update:modelValue",value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit("update:expandedValues",value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit("update:highlightedValue",value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provide(key,{state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-view","data-part":"root"}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewGroup=defineComponent({name:"SectileTreeViewGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewGroup");const expanded=computed(()=>root.expandedItems.value.has(props.for));const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(expanded,forcePresent);return()=>{const inactivePresent=!expanded.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:"group",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"tree-view","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const TreeViewItem=defineComponent({name:"SectileTreeViewItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewItem");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.value,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.value),expanded:root.expandedItems.value.has(props.value),highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,props.disabled)},"data-sectile-tree-view-item":props.value,"data-scope":"tree-view","data-part":"item","data-selected":state.value.selected?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewDisclosure=defineComponent({name:"SectileTreeViewDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewDisclosure");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.for,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.for),expanded:root.expandedItems.value.has(props.for),highlighted:root.state.value.highlightedValue===props.for,disabled:root.state.value.disabled||root.disabledItems.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-view-disclosure":props.for,"data-scope":"tree-view","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeViewRoot.`);return root}function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}export{TreeViewDisclosure,TreeViewGroup,TreeViewItem,TreeViewRoot};
|
|
1
|
+
import{computed,defineComponent,h,mergeProps,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createTreeView}from'@sectile/dom/tree-view';import{Primitive}from'./primitive.js';import{collectionBranchIDs,reconcileCollectionState,sameIDs}from'./internal/collection.js';import{createTreeGroup,createTreeItem,createTreeDisclosure,provideTreeParts}from'./internal/tree-parts.js';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{}from'./presence/conditional-presence.js';export const TreeViewRoot=defineComponent({name:'SectileTreeViewRoot',inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:'single'},modelValue:{type:Array,default:undefined},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:undefined},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:undefined},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:undefined},policies:{type:Object,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true,'update:expandedValues':_value=>true,'update:highlightedValue':_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==undefined?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==undefined?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==undefined?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant('TreeViewRoot','modelValue',()=>props.modelValue),expanded:useControlledStateInvariant('TreeViewRoot','expandedValues',()=>props.expandedValues),highlighted:useControlledStateInvariant('TreeViewRoot','highlightedValue',()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==undefined?props.modelValue:localValue.value,expandedValues:props.expandedValues!==undefined?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==undefined?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===undefined||connection.value===undefined)return;element.value.querySelectorAll('[data-sectile-tree-view-item]').forEach(node=>{const id=node.dataset['sectileTreeViewItem'];if(id!==undefined)connection.value?.setItemAttributes(node,{id,disabled:node.dataset['disabled']!==undefined})});element.value.querySelectorAll('[data-sectile-tree-view-disclosure]').forEach(node=>{const id=node.dataset['sectileTreeViewDisclosure'];if(id!==undefined)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===undefined)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==undefined&&connectionOwner!==undefined&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===undefined)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],'multiple',{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit('update:modelValue',reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit('update:expandedValues',expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit('update:highlightedValue',reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===undefined?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit('update:modelValue',value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit('update:expandedValues',value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit('update:highlightedValue',value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provideTreeParts({scope:'tree-view',state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),unregisterItem:(node,id)=>connection.value?.releaseItem?.(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===undefined)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:undefined},'data-scope':'tree-view','data-part':'root'}),{default:()=>slots['default']?.(state.value)})}});export const TreeViewGroup=/* @__PURE__ */createTreeGroup('SectileTreeViewGroup','tree-view');export const TreeViewItem=/* @__PURE__ */createTreeItem('SectileTreeViewItem','tree-view');export const TreeViewDisclosure=/* @__PURE__ */createTreeDisclosure('SectileTreeViewDisclosure','tree-view');function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}
|
|
2
2
|
//# sourceMappingURL=tree-view.js.map
|
package/dist/tree-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"tree-view.js","names":["computed","defineComponent","h","mergeProps","onBeforeUnmount","onMounted","shallowRef","watch","createTreeView","Primitive","collectionBranchIDs","reconcileCollectionState","sameIDs","createTreeGroup","createTreeItem","createTreeDisclosure","provideTreeParts","useControlledStateInvariant","TreeViewRoot","name","inheritAttrs","props","nodes","type","Array","required","selectionMode","String","default","modelValue","undefined","defaultValue","expandedValues","defaultExpandedValues","highlightedValue","defaultHighlightedValue","disabledItems","disabled","Boolean","readonly","label","policies","Object","as","Function","asChild","emits","_value","slots","setup","attrs","emit","element","connection","connectionOwner","localValue","localExpanded","localHighlight","controlled","value","expanded","highlighted","state","freeze","refreshParts","querySelectorAll","forEach","node","id","dataset","setItemAttributes","setDisclosureAttributes","refresh","snapshot","getSnapshot","selection","selected","expansion","ids","cursor","current","connect","nextOwner","snapshotTreeViewConnectionOwner","sameTreeViewConnectionOwner","disconnect","items","map","branches","requestedValue","requestedExpanded","requestedHighlight","reconciled","preserveNullCurrent","root","readOnly","onValueChange","onExpandedValuesChange","onHighlightedValueChange","onUpdate","setTreeAttributes","Set","selectedItems","expandedItems","scope","registerItem","registerDisclosure","unregisterItem","releaseItem","result","syncControlledValues","ok","TypeError","error","message","elementRef","HTMLElement","TreeViewGroup","TreeViewItem","TreeViewDisclosure","parentID","eligible","left","right","length","index","leftNode","rightNode"],"sources":["../src/tree-view.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ export type VirtualCollectionIDResolver<Value, ID extends StableID = StableID> =
|
|
|
9
9
|
export type VirtualCollectionItemAttributes<Value> = {
|
|
10
10
|
bivarianceHack(value: Value, index: number): Readonly<Record<string, unknown>>;
|
|
11
11
|
}['bivarianceHack'];
|
|
12
|
+
export type VirtualCollectionPartAttributes = Readonly<Partial<Record<'header' | 'surface' | 'footer', Readonly<Record<string, unknown>>>>>;
|
|
12
13
|
export type PreparedVirtualCollection<Value = unknown, ID extends StableID = StableID> = VirtualCollectionProjection<Value, ID>;
|
|
13
14
|
export interface VirtualCollectionBaseProps<Value, ID extends StableID = StableID> {
|
|
14
15
|
readonly items: readonly Value[];
|
|
@@ -22,6 +23,7 @@ export interface VirtualCollectionBaseProps<Value, ID extends StableID = StableI
|
|
|
22
23
|
readonly contentAs?: string;
|
|
23
24
|
readonly itemAs?: string;
|
|
24
25
|
readonly itemAttributes?: VirtualCollectionItemAttributes<Value>;
|
|
26
|
+
readonly partAttributes?: VirtualCollectionPartAttributes;
|
|
25
27
|
}
|
|
26
28
|
export interface VirtualCollectionSizePolicyProps<Value> {
|
|
27
29
|
readonly sizePolicy?: VirtualSizePolicy<Value>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-collection.js","names":["defineComponent","h","onBeforeUnmount","shallowReactive","shallowRef","constrainVirtualCollectionDomain","createVirtualCollection","replaceVirtualCollection","virtualItemStyle","asHTMLElement","useVirtualizerSurfaceRegistration","virtualizerNotConnected","rootScrollportStyle","overflow","virtualCollectionRootStyle","scrollport","style","prepareVirtualCollection","items","getID","maxItems","maxIDCodeUnits","updatePreparedVirtualCollection","previous","constrainPreparedVirtualCollection","prepared","VirtualCollectionProjectionRuntime","name","inheritAttrs","props","scope","type","String","required","placements","Array","Object","itemAs","itemAttributes","Function","default","undefined","size","slots","setup","surface","refs","Map","itemRef","id","existing","get","mounted","unregister","callback","value","element","delete","registerItem","set","values","clear","sizing","itemSizing","children","placement","index","length","domain","at","attributes","rendered","push","key","ref","visible","VirtualCollectionBootstrapProjectionRuntime","count","Number","width","bootstrapRef","Math","min","freeze","rect","x","y","height","renderHighLevelItems","render","empty","child","renderCollectionBootstrapItems","createVirtualCollectionExpose","root","initialState","phase","emptyScrollport","emptySurface","state","plan","scrollToID","alignment","scrollTo","refresh","flush","nearlyEqual","left","right","abs"],"sources":["../../src/virtual/virtual-collection.ts"],"mappings":"OACEA,gBACAC,EACAC,gBACAC,gBACAC,eAMK,aAILC,iCACAC,wBACAC,6BAKK,qCAELC,qBASK,8BAELC,cACAC,kCACAC,4BAKK,oBAEP,MAAMC,oBAAsB,CAAEC,SAAU,eAElC,SAAUC,4BAA2BC,WAC5B,OAAMC,QAGnB,OAAOD,aAAe,OAClBC,OAAS,KAAOJ,oBAAsB,CAACA,oBAAqBI,OAC5DA,KACN,
|
|
1
|
+
{"version":3,"file":"virtual-collection.js","names":["defineComponent","h","onBeforeUnmount","shallowReactive","shallowRef","constrainVirtualCollectionDomain","createVirtualCollection","replaceVirtualCollection","virtualItemStyle","asHTMLElement","useVirtualizerSurfaceRegistration","virtualizerNotConnected","rootScrollportStyle","overflow","virtualCollectionRootStyle","scrollport","style","prepareVirtualCollection","items","getID","maxItems","maxIDCodeUnits","updatePreparedVirtualCollection","previous","constrainPreparedVirtualCollection","prepared","VirtualCollectionProjectionRuntime","name","inheritAttrs","props","scope","type","String","required","placements","Array","Object","itemAs","itemAttributes","Function","default","undefined","size","slots","setup","surface","refs","Map","itemRef","id","existing","get","mounted","unregister","callback","value","element","delete","registerItem","set","values","clear","sizing","itemSizing","children","placement","index","length","domain","at","attributes","rendered","push","key","ref","visible","VirtualCollectionBootstrapProjectionRuntime","count","Number","width","bootstrapRef","Math","min","freeze","rect","x","y","height","renderHighLevelItems","render","empty","child","renderCollectionBootstrapItems","createVirtualCollectionExpose","root","initialState","phase","emptyScrollport","emptySurface","state","plan","scrollToID","alignment","scrollTo","refresh","flush","nearlyEqual","left","right","abs"],"sources":["../../src/virtual/virtual-collection.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{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}},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,{},{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","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","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","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{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}},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=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;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,{},{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","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","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","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","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":"OAASA,gBAAiBC,EAAGC,SAAUC,gBAAiBC,UAAWC,WAAYC,UAAqM,aAE3QC,mBAAsB,gCAE7BC,yBACAC,oBACAC,kCACAC,uCACAC,yCAEK,qCACEC,kBAAmBC,6BAAkD,uCACrEC,mBAAoBC,wBAAyBC,qBAAsBC,2BAA4BC,wBAA4F,6CACxD,8BACnIC,cAAeC,kBAAmBC,kBAAmBC,gBAAiBC,uBAA0I,2BAEvNC,mCACAC,8BACAC,yBACAC,qBACAC,gCACAC,+BAQK,0BA6CP,MAAMC,kCAAqC/B,gBAAgB,CACzDgC,KAAM,qBACNC,aAAc,MACdC,MAAO,CACLC,MAAO,CACLC,KAAMC,MACNC,SAAU,MAEZC,MAAO,CACLH,KAAMI,SACNF,SAAU,MAEZG,WAAY,CACVL,KAAMM,OACNJ,SAAU,MAEZK,KAAM,CACJP,KAAMQ,OACNC,QAAS,YAEXC,IAAK,CAAEV,KAAMW,OAAQF,QAAS,GAC9BG,SAAU,CACRZ,KAAM,CAACW,OAAQL,QACfG,QAAS,KAEXI,eAAgB,CACdb,KAAM,CAACW,OAAQL,QACfG,QAASK,WAEXC,SAAU,CAAEf,KAAMW,OAAQF,QAAS,WACnCO,gBAAiB,CACfhB,KAAMM,OACNG,QAASK,WAEXG,GAAI,CAAEjB,KAAMQ,OAAQC,QAAS,OAC7BS,UAAW,CAAElB,KAAMQ,OAAQC,QAAS,OACpCU,OAAQ,CAAEnB,KAAMQ,OAAQC,QAAS,OACjCW,eAAgB,CACdpB,KAAMI,SACNK,QAASK,WAEXO,eAAgB,CAAErB,KAAMM,OAAqDG,QAASK,YAExFQ,MAAO,CACLC,YAAcC,QAAiD,KAC/DC,WAAaC,OAAgD,KAC7DC,MAAQC,QAA4D,MAEtEC,MAAOvB,OAMP,KAAAwB,CAAMhC,OAAOiC,MAAOC,KAAMC,OAAQJ,QAChC,MAAMtB,KAAOT,MAAMS,KACnB,MAAMG,IAAMZ,MAAMY,IAClB,MAAMK,SAAWjB,MAAMiB,SACvB,MAAMV,WAAaP,MAAMO,WACzB,MAAMW,gBAAkBlB,MAAMkB,kBAAoBF,UAC9CA,UACAR,OAAO4B,OAAO,IAAKpC,MAAMkB,kBAC7B,MAAMmB,SAAWlE,WACfsB,yBAAyBO,MAAMC,MAAOD,MAAMK,MAAOY,WAErD,MAAMqB,kBAAoBnE,aAC1B,MAAMoE,eAAiBpE,WACrBO,qCAAqC6B,aAAe8B,SAASG,MAAMC,OAAOC,KAAO,EAC7E,EACA,GAEN,MAAMC,kBAAoB,IAAIC,IAC9B,MAAMC,cAAgB,IAAID,IAC1B,IAAIE,mBAAqB,MACzB,IAAIC,SAAW,MACf,MAAMC,mBAAqBC,uBAAuBxC,KAAMS,iBACxD,MAAMgC,aAAexE,qCAAqC6B,YACtD4C,4BAA4B,CAAE1C,KAAMG,IAAKK,SAAUmC,YAAaJ,qBAChEK,uBACEhB,SAASG,MACTxC,MAAMC,MACN,CAAEM,WAAYE,KAAMG,IAAKK,SAAUmC,YAAaJ,qBAEtD,MAAMM,YAAcnF,WAAW+E,cAC/B,MAAMK,KAAOpF,aACb,MAAMqF,QAAUjD,WAAWkD,OAAS,QAChCzC,UACA0C,qCAAqCjD,MACzC,MAAMkD,gBAAkB,IACtBrB,kBAAkBE,QAAUxB,WACzBuB,eAAeC,MAAQ,GACvBH,SAASG,MAAMC,OAAOC,KAAO,EAClC,MAAMkB,MAAQ,IAAMvB,SAASG,MAAMC,OAAOC,OAAS,EAC/C,QACAiB,kBACE,YACA,QAGN,MAAME,aAAe,IAAmCP,YAAYd,MAEpE,MAAMsB,iBAAoBC,QACxB,MAAMC,SAAWnB,cAAcoB,IAAIF,OACnC,GAAIC,WAAahD,UAAW,OAAOgD,SACnC,MAAME,SAAY1B,QAChB,MAAM2B,QAAUjF,cAAcsD,OAC9B,GAAI2B,UAAY,KAAM,CACpBxB,kBAAkByB,OAAOL,OACzB,GAAIlB,cAAcoB,IAAIF,SAAWG,SAAUrB,cAAcuB,OAAOL,OAChE,MACF,CACApB,kBAAkB0B,IAAIN,MAAOI,SAC7BG,qBAEFzB,cAAcwB,IAAIN,MAAOG,UACzB,OAAOA,UAGT,MAAMK,kBAAoB,KACxB,IAAKZ,kBAAmB,OACxB,MAAMa,MAAQC,KAAKC,IAAInC,eAAeC,MAAOH,SAASG,MAAMC,OAAOC,MACnE,MAAMiC,QAAoB,GAC1B,IAAK,IAAIZ,MAAQ,EAAGA,MAAQS,MAAOT,OAAS,EAAG,CAC7C,MAAMI,QAAUxB,kBAAkBsB,IAAIF,OACtC,GAAII,UAAYnD,UAAW,OAC3B,MAAM4D,OAAST,QAAQU,wBACvB,MAAMC,OAASrE,OAAS,WAAamE,OAAOG,OAASH,OAAOI,MAC5D,IAAKnE,OAAOoE,SAASH,SAAWA,QAAU,EAAG,OAC7CH,QAAQO,KAAKJ,OACf,CACA,MAAMK,MAAQR,QAAQS,OAAO,CAACC,IAAKP,SAAWO,IAAMP,OAAQ,GACxDlE,IAAM6D,KAAKa,IAAI,EAAGX,QAAQY,OAAS,GACvC,MAAMC,SAAWjC,KAAKf,OAAOiD,MAAMD,SACnC,MAAME,eAAiBjF,OAAS,WAC5B+E,UAAUT,QAAU7D,iBAAiB6D,QAAU,EAC/CS,UAAUR,OAAS9D,iBAAiB8D,OAAS,EACjD,MAAMW,OAASD,eAAiBE,gCAAgC5F,MAAMc,SAAUL,MAChF,MAAMoF,QAAUlB,QAAQS,OAAO,CAACC,IAAKP,SAAWO,IAAMP,OAAQ,GAAKH,QAAQY,OAC3E,GAAII,OAASR,OAASX,MAAQnC,SAASG,MAAMC,OAAOC,KAAM,CACxDH,eAAeC,MAAQiC,KAAKC,IAC1BrC,SAASG,MAAMC,OAAOC,KACtB+B,KAAKa,IAAId,MAAQ,EAAGC,KAAKqB,MAAMH,OAAS/E,MAAQiF,QAAUjF,QAE5D,MACF,CACA0B,kBAAkBE,MAAQqD,QAC1BtD,eAAeC,MAAQ,EACvBG,kBAAkBoD,QAClBlD,cAAckD,QACdzC,YAAYd,MAAQa,uBAClBhB,SAASG,MACTxC,MAAMC,MACN,CACEM,WACAE,KACAG,IACAK,SACAmC,YAAaS,eAAeT,aAE9ByC,UAGJ,SAASvB,oBACP,GACEvB,UACGD,oBACAR,kBAAkBE,QAAUxB,WAC5BuB,eAAeC,QAAU,EAC5B,OACFM,mBAAqB,UAChB9E,SAAS,KACZ8E,mBAAqB,MACrB,IAAKC,SAAUwB,qBAEnB,CACArG,UAAUoG,mBAEVlG,MACE,IAAM,CAAC4B,MAAMC,MAAOD,MAAMK,OAC1B,KACE,MAAM2F,KAAOrG,gCACX0C,SAASG,MACTxC,MAAMC,MACND,MAAMK,OAER,GACE3B,qCAAqC6B,aAClC+B,kBAAkBE,QAAUxB,UAC/B,CACAqB,SAASG,MAAQwD,KACjBzD,eAAeC,MAAQwD,KAAKvD,OAAOC,KAAO,EAAI,EAAI,EAClD4B,oBACA,MACF,CACA,IAAI2B,UAAYpC,eAChB,MAAMqC,QAAU3C,KAAKf,OAAO2D,QAAUF,UAAY1C,KAAKf,MAAQxB,UAC/D,MAAMoF,MAAQ5H,kCACZyH,UACAD,KACAzF,WACA+B,kBAAkBE,OAEpB,GAAI4D,QAAU,KAAM,CAClB,MAAMC,OAASH,UAAYlF,UACvB/B,oBAAoBgH,UAAWG,OAC/BF,QAAQI,OAAOF,OACnB,IAAKC,OAAOE,GAAI,CACd,GAAIL,UAAYlF,UAAW,CACzBkB,KACE,QACAmE,OAAOxE,MAEX,CACA,MACF,CACAoE,UAAYI,OAAO7D,MAAM2D,MACzB7C,YAAYd,MAAQyD,SACtB,CACA,MAAMO,aAAe/H,uCACnBwH,UACAD,KACAzF,WACA+B,kBAAkBE,OAEpB,GAAIgE,aAAajB,OAAS,EAAG,CAC3B,MAAMc,OAASH,UAAYlF,UACvBhC,2BAA2BiH,UAAW,CACpCQ,WAAYR,UAAUQ,WACtBC,aAAcF,eAEhBN,QAAQ1C,QAAQgD,cACpB,IAAKH,OAAOE,GAAI,CACd,GAAIL,UAAYlF,UAAW,CACzBkB,KACE,QACAmE,OAAOxE,MAEX,CACA,MACF,CACAoE,UAAYI,OAAO7D,MAAM2D,MACzB7C,YAAYd,MAAQyD,SACtB,CACA5D,SAASG,MAAQwD,MAEnB,CAAEW,MAAO,SAGX,MAAMC,gBAAmBnB,OACvB,MAAMrC,YAAc3C,OAAS,WACzBgF,KAAKD,SAASR,MACdS,KAAKD,SAAST,OAClB,MAAMoB,MAAQtC,eACd,MAAMmC,KAAOjH,qBAAqBoH,MAAO/C,aACzC,GAAI5C,OAAOqG,GAAGb,KAAMG,OAAQ,OAAO,MACnC7C,YAAYd,MAAQwD,KACpB,OAAO,MAGT,IAAIc,yBAA2B,MAC/B1I,MACE,IAAM,CACJ4B,MAAMS,KACNT,MAAMY,IACNZ,MAAMiB,SACNjB,MAAMO,WACNP,MAAMkB,iBAAiB6F,EACvB/G,MAAMkB,iBAAiB8F,EACvBhH,MAAMkB,iBAAiB8D,MACvBhF,MAAMkB,iBAAiB6D,QAEzB,KACE,GACE+B,0BAEE9G,MAAMS,OAASA,MACZT,MAAMY,MAAQA,KACdZ,MAAMiB,WAAaA,UACnBgG,sBAAsBjH,MAAMO,WAAYA,aACxC2G,gBAAgBlH,MAAMkB,gBAAiBA,iBAE5C,OACF4F,yBAA2B,KAC3BK,QAAQC,KACN,+IAGJ,CAAET,MAAO,SAGX1I,gBAAgB,KACd8E,SAAW,KACXJ,kBAAkBoD,QAClBlD,cAAckD,UAGhB5D,OAAO3C,8BAA8B+D,KAAML,aAAcU,QAEzD,MAAO,IAAkB7F,EAAEsB,gBAA8B,IACpD4C,MACHoF,IAAK9D,KACL+D,aAAchE,YAAYd,MAC1B+E,SAAUzI,0BACVgC,SAAUd,MAAMc,YACZd,MAAMe,iBAAmBC,UAAY,GAAK,CAAED,eAAgBf,MAAMe,mBAClEG,kBAAoBF,UAAY,GAAK,CAAEE,oBACvCsC,UAAYxC,UAAY,GAAK,CAC/BwC,SAEFrC,GAAInB,MAAMmB,GACVqG,MAAO5H,2BAA2BqC,OAClC,sBAAuB,eACvB,aAAc2B,QACd6D,cAAgBjF,QACd,MAAM2D,MAAQ3D,MACdc,YAAYd,MAAQ2D,MACpBjE,KAAK,cAAeiE,QAEtBuB,aAAejC,OACb,GAAImB,gBAAgBnB,MAAO,OAC3BvD,KAAK,aAAcuD,OAErBkC,QAAU9F,OAAkDK,KAAK,QAASL,QACzE,CACDlB,QAAS,EAAGiH,cAA2C,CACrD7F,MAAM,YAAcf,UAChB,KACAjD,EAAEqB,kBAAmBY,MAAMuB,gBAAgBsG,QAAU,GAAI,CAAElH,QAAS,IAAMoB,MAAM,gBACpFhE,EAAEuB,mBAAoB,IACjBU,MAAMuB,gBAAgBuG,QACzB3G,GAAInB,MAAMoB,aACNuC,mBAAqBlD,OAAS,aAC9B,CAAE+G,MAAO,CAAEO,QAAS,SACpB,IACH,CACDpH,QAAS,IAAMgD,kBACXqE,gCACE3F,SAASG,MACTxC,MAAMC,MACNsC,eAAeC,MACf,CACE/B,KACAG,IACAwC,YAAaS,eAAeT,YAC5B/B,OAAQrB,MAAMqB,OACdC,eAAgBtB,MAAMsB,gBAExBS,MAAM,QACN+B,kBAEFpE,qBACE,eACAkI,WACAvF,SAASG,MACTxC,MAAMC,MACND,MAAMqB,OACNrB,MAAMsB,eACN2G,eAAexH,KAAMF,YACrB,CAACiC,MAAO0F,GAAInE,MAAOoE,YAAcpG,MAAM,UAAU,CAC/CS,MACA0F,GACAnE,MACAoE,YAEFpG,MAAM,YAGdA,MAAM,YAAcf,UAChB,KACAjD,EAAEoB,kBAAmBa,MAAMuB,gBAAgB6G,QAAU,GAAI,CAAEzH,QAAS,IAAMoB,MAAM,kBAG1F,WAGK,MAAMsG,YAAcxI,0BAErB,SAAU6D,qCACdjD,MAEA,MAAO,EAAG0D,QAASgE,UAAWhC,SAC5BmC,0BAA0B7H,KAAM0H,UAAUD,GAAI/D,QAASgC,MAC3D,CAEA,SAASmC,0BACP7H,KACAyH,GACA/D,QACAgC,OAEA,MAAMpC,MAAQoC,MAAM1D,OAAO8F,QAAQL,IACnC,GAAInE,QAAU,KAAM,OAAO,KAC3B,MAAMa,OAAST,QAAQU,wBACvB,MAAMrC,MAAQ/B,OAAS,WAAamE,OAAOG,OAASH,OAAOI,MAC3D,IAAKnE,OAAOoE,SAASzC,QAAUA,OAAS,EAAG,OAAO,KAClD,MAAMgG,QAAUrC,MAAMxB,QAAQ8D,SAAS1E,OACvC,GAAIyE,SAAS/E,OAAS,SAAWgB,KAAKiE,IAAIF,QAAQhG,MAAQA,OAAS,KAAM,OAAO,KAChF,OAAOhC,OAAO4B,OAAO,CACnB2B,MACAe,OAAQtE,OAAO4B,OAAO,CAAEqB,KAAM,QAAkBjB,SAEpD,QAEM,SAAUa,uBACdhB,SACApC,MACAD,MAOAsC,mBAEA,OAAOzD,mBACLU,mCAAmC8C,SAAUrC,MAAMiB,UACnD0H,6BACEtG,SACApC,MACAD,MAAMO,WACNP,MAAMiB,SACNqB,mBAEF,CACE7B,KAAMT,MAAMS,KACZG,IAAKZ,MAAMY,IACXwC,YAAapD,MAAMoD,aAGzB,QAEM,SAAUD,4BACdnD,OAOA,OAAOnB,mBACLR,eAAe,GAAI,CAAE4C,SAAUjB,MAAMiB,SAAU2H,eAAgB,QAC/DhK,yBAAyB,EAAGN,yBAAyB,GAAI,CACvD2C,SAAUjB,MAAMiB,WAElB,CACER,KAAMT,MAAMS,KACZG,IAAKZ,MAAMY,IACXwC,YAAapD,MAAMoD,aAGzB,QAEM,SAAUwC,gCACd9E,SACAL,MAEA,UAAWK,WAAa,SAAU,OAAOA,SACzC,OAAOL,OAAS,WACZK,SAAS+H,QAAU,EACnB/H,SAASgI,OAAS,CACxB,QAEM,SAAUd,gCACd3F,SACApC,MACAuE,MACAxE,MAOA+I,OACAC,SAEA,OAAO7I,MAAM8I,KAAK,CAAE1D,OAAQd,KAAKC,IAAIF,MAAOnC,SAASI,OAAOC,OAAS,CAACwG,QAASnF,SAC7E,MAAMvB,MAAQvC,MAAM8D,OACpB,MAAMmE,GAAK7F,SAASI,OAAO0G,GAAGpF,OAC9B,MAAMqF,WAAapJ,MAAMsB,iBAAiBkB,MAAOuB,QAAU,GAC3D,MAAMoE,UAAY3H,OAAO4B,OAAO,CAC9B8F,GACAnE,MACAsF,KAAM7I,OAAO4B,OAAOpC,MAAMS,OAAS,WAC/B,CAAEsG,EAAG,EAAGC,EAAG,EAAGhC,MAAOhF,MAAMoD,YAAa2B,OAAQ,GAChD,CAAEgC,EAAG,EAAGC,EAAG,EAAGhC,MAAO,EAAGD,OAAQ/E,MAAMoD,cAC1CkG,QAAS,OAEX,MAAMC,SAAWR,SAAS,CAAEvG,MAAO0F,GAAInE,MAAOoE,YAC9C,MAAMqB,SAAWD,WAAavI,WAAauI,WAAa,KACpD,GACApJ,MAAMsJ,QAAQF,UACZA,SACA,CAACA,UACP,OAAOxL,EAAEiC,MAAMqB,OAAQ,IAClB+H,WACHM,IAAKxB,GACLb,IAAK2B,QAAQjF,OACbyD,MAAO,CACL4B,WAAW,SACXpJ,MAAMoD,YAAc,EAChBpD,MAAMS,OAAS,WACb,CAAEuE,MAAO,GAAGhF,MAAMoD,iBAClB,CAAE2B,OAAQ,GAAG/E,MAAMoD,iBACrBpC,UACJhB,MAAMY,IAAM,GAAKmD,MAAQ,EACrB/D,MAAMS,OAAS,WACb,CAAEkJ,UAAW,GAAG3J,MAAMY,SACtB,CAAEgJ,WAAY,GAAG5J,MAAMY,SACzBI,WAEN,aAAc,eACd,YAAa,OACb,aAAc+C,MACd,eAAgB,GAChB,iBAAkB,IACjByF,WAEP,CAEA,SAASb,6BACPtG,SACApC,MACAM,WACAU,SACAqB,mBAEA,GAAID,SAASI,OAAOC,OAAS,EAAG,CAC9B,OAAO9D,yBAAyB,EAAGN,yBAAyB,GAAI,CAAE2C,UACpE,CACA,MAAM4I,OAAStJ,WAAWkD,OAAS,SAC9BlD,WAAWkD,OAAS,YACnBlD,WAAWkD,OAAS,oBAAsBlD,WAAWuJ,WAAa,SACpEvL,oBAAoBgC,WAAYN,MAAM,GAAI,EAAGqC,mBAC7C,KACJ,OAAOuH,SAAW,KACdlL,kBACEwB,MAAM8I,KACJ,CAAE1D,OAAQlD,SAASI,OAAOC,MAC1B,CAACwG,QAASnF,QAAUxF,oBAClBgC,WACAN,MAAM8D,OACNA,MACAzB,oBAGJ,CAAErB,WAEJrC,yBAAyByD,SAASI,OAAOC,KAAMmH,OAAQ,CAAE5I,UAC/D,CAEA,SAASgH,eACPxH,KACAF,YAEA,GAAIA,WAAWkD,OAAS,QAAS,MAAO,OACxC,OAAOhD,OAAS,WAAa,QAAU,QACzC,CAEA,SAASwC,uBACPxC,KACA+E,UAEA,GAAIA,WAAaxE,UAAW,OAAO,EACnC,OAAOP,OAAS,WAAa+E,SAASR,MAAQQ,SAAST,MACzD,CAEA,SAASkC,sBACP8C,KACAjB,OAEA,GAAIiB,KAAKtG,OAASqF,MAAMrF,KAAM,OAAO,MACrC,GAAIsG,KAAKtG,OAAS,YAAcqF,MAAMrF,OAAS,WAAY,OAAO,KAClE,GAAIsG,KAAKtG,OAAS,SAAWqF,MAAMrF,OAAS,QAAS,CACnD,OAAOsG,KAAKjF,SAAWgE,MAAMhE,MAC/B,CACA,OAAOiF,KAAKtG,OAAS,aAChBqF,MAAMrF,OAAS,aACfjD,OAAOqG,GAAGkD,KAAKD,SAAUhB,MAAMgB,SACtC,CAEA,SAAS5C,gBACP6C,KACAjB,OAEA,GAAIiB,OAAS/I,WAAa8H,QAAU9H,UAAW,OAAO+I,OAASjB,MAC/D,OAAOiB,KAAKhD,IAAM+B,MAAM/B,GACnBgD,KAAK/C,IAAM8B,MAAM9B,GACjB+C,KAAK/E,QAAU8D,MAAM9D,OACrB+E,KAAKhF,SAAW+D,MAAM/D,MAC7B","ignoreList":[]}
|