@sectile/vue 0.18.3 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -14
- package/dist/accordion.js +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/carousel.d.ts +20 -0
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox-tree.d.ts +102 -0
- package/dist/checkbox-tree.js +2 -0
- package/dist/checkbox-tree.js.map +1 -0
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +24 -0
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +47 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/component-handle.d.ts +8 -0
- package/dist/component-handle.js +2 -0
- package/dist/component-handle.js.map +1 -0
- package/dist/context-menu.d.ts +1 -0
- package/dist/context-menu.js +2 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/drag-drop.d.ts +23 -0
- package/dist/drag-drop.js +2 -0
- package/dist/drag-drop.js.map +1 -0
- package/dist/editable.d.ts +3 -0
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/form/context.d.ts +3 -0
- package/dist/form/context.js +1 -1
- package/dist/form/context.js.map +1 -1
- package/dist/form/contracts.d.ts +1 -0
- package/dist/form/control-inventory.d.ts +20 -0
- package/dist/form/control-inventory.js +1 -1
- package/dist/form/control-inventory.js.map +1 -1
- package/dist/form/control.d.ts +44 -1
- package/dist/form/control.js +1 -1
- package/dist/form/control.js.map +1 -1
- package/dist/form/field.d.ts +10 -0
- package/dist/form/field.js +1 -1
- package/dist/form/field.js.map +1 -1
- package/dist/form/file-input.d.ts +229 -0
- package/dist/form/file-input.js +2 -0
- package/dist/form/file-input.js.map +1 -0
- package/dist/form/file-upload/group.d.ts +28 -0
- package/dist/form/file-upload/group.js +2 -0
- package/dist/form/file-upload/group.js.map +1 -0
- package/dist/form/file-upload.d.ts +26 -0
- package/dist/form/file-upload.js +2 -0
- package/dist/form/file-upload.js.map +1 -0
- package/dist/form/root.js +1 -1
- package/dist/form/root.js.map +1 -1
- package/dist/form-boundary.d.ts +2 -0
- package/dist/form-boundary.js +2 -0
- package/dist/form-boundary.js.map +1 -0
- package/dist/fullscreen.d.ts +16 -0
- package/dist/fullscreen.js +2 -0
- package/dist/fullscreen.js.map +1 -0
- package/dist/host-provider.d.ts +99 -1
- package/dist/host-provider.js +1 -1
- package/dist/host-provider.js.map +1 -1
- package/dist/image.d.ts +24 -0
- package/dist/image.js +2 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/native-field.d.ts +25 -6
- package/dist/input/native-field.js +1 -1
- package/dist/input/native-field.js.map +1 -1
- package/dist/input/native-range-field.d.ts +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/overlay/dialog.d.ts +1 -0
- package/dist/overlay/dialog.js.map +1 -1
- package/dist/overlay/drawer.d.ts +33 -4
- package/dist/overlay/drawer.js +1 -1
- package/dist/overlay/drawer.js.map +1 -1
- package/dist/overlay/popover.d.ts +2 -1
- package/dist/overlay/popover.js.map +1 -1
- package/dist/overlay/popup.d.ts +46 -2
- package/dist/overlay/popup.js +1 -1
- package/dist/overlay/popup.js.map +1 -1
- package/dist/overlay/tooltip.d.ts +37 -3
- package/dist/overlay/tooltip.js +1 -1
- package/dist/overlay/tooltip.js.map +1 -1
- package/dist/pagination.js +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/presence/presence.d.ts +1 -1
- package/dist/presence/presence.js +1 -1
- package/dist/presence/presence.js.map +1 -1
- package/dist/primitive.d.ts +37 -3
- package/dist/primitive.js +1 -1
- package/dist/primitive.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/rating.js +1 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +156 -77
- package/dist/reorder.js +1 -1
- package/dist/reorder.js.map +1 -1
- package/dist/select.d.ts +21 -0
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.d.ts +19 -0
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tabular/components.d.ts +5 -0
- package/dist/tabular/components.js.map +1 -1
- package/dist/tabular/controller.d.ts +1 -0
- package/dist/tabular/controller.js +1 -1
- package/dist/tabular/controller.js.map +1 -1
- package/dist/tabular/data-grid.d.ts +4 -4
- package/dist/tabular/data-grid.js +1 -1
- package/dist/tabular/data-grid.js.map +1 -1
- package/dist/tabular/data-table.d.ts +4 -4
- package/dist/tabular/data-table.js +1 -1
- package/dist/tabular/data-table.js.map +1 -1
- package/dist/tabular/data-tree-grid.d.ts +4 -4
- package/dist/tabular/data-tree-grid.js +1 -1
- package/dist/tabular/data-tree-grid.js.map +1 -1
- package/dist/tabular/parts.d.ts +11 -1
- package/dist/tabular/parts.js +1 -1
- package/dist/tabular/parts.js.map +1 -1
- package/dist/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 +86 -16
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,provide}from"vue";import{tryCreateTree}from"@sectile/core/tree";import{Primitive}from"../primitive.js";import{collectionBranchIDs}from"./collection.js";import{conditionalPresenceProps}from"../presence/conditional-presence.js";const cascadeChoicePartProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};function createCascadeChoiceParts(options){const useRoot=part=>{const root=inject(options.rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside ${options.componentName}Root.`);return root};const useItem=part=>{const item=inject(options.itemKey);if(item===void 0)throw new TypeError(`${part} must be used inside ${options.componentName}Item.`);return item};const Column=defineComponent({name:`Sectile${options.componentName}Column`,inheritAttrs:false,props:{depth:{type:Number,required:true},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(`${options.componentName}Column`);const state=computed(()=>({depth:props.depth,items:root.state.value.columns[props.depth]??[],parentValue:props.depth===0?null:root.state.value.path[props.depth-1]??null}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerColumn(node,props.depth,props.label)},role:"listbox","aria-label":props.label??root.label.value,"aria-orientation":"vertical",hidden:state.value.items.length===0,"data-scope":options.scope,"data-part":"column","data-depth":String(props.depth)}),{default:()=>slots["default"]?.(state.value)})}});const Item=defineComponent({name:`Sectile${options.componentName}Item`,inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(`${options.componentName}Item`);const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,expanded:root.state.value.path.includes(props.value),branch:root.branchItems.value.has(props.value),disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));provide(options.itemKey,{state});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",tabindex:state.value.disabled?-1:state.value.highlighted?0:-1,"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"aria-haspopup":state.value.branch?"listbox":void 0,"aria-expanded":
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,provide}from"vue";import{tryCreateTree}from"@sectile/core/tree";import{Primitive}from"../primitive.js";import{collectionBranchIDs}from"./collection.js";import{conditionalPresenceProps}from"../presence/conditional-presence.js";const cascadeChoicePartProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};function createCascadeChoiceParts(options){const useRoot=part=>{const root=inject(options.rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside ${options.componentName}Root.`);return root};const useItem=part=>{const item=inject(options.itemKey);if(item===void 0)throw new TypeError(`${part} must be used inside ${options.componentName}Item.`);return item};const Column=defineComponent({name:`Sectile${options.componentName}Column`,inheritAttrs:false,props:{depth:{type:Number,required:true},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(`${options.componentName}Column`);const state=computed(()=>({depth:props.depth,items:root.state.value.columns[props.depth]??[],parentValue:props.depth===0?null:root.state.value.path[props.depth-1]??null}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerColumn(node,props.depth,props.label)},role:"listbox","aria-label":props.label??root.label.value,"aria-orientation":"vertical",hidden:state.value.items.length===0,"data-scope":options.scope,"data-part":"column","data-depth":String(props.depth)}),{default:()=>slots["default"]?.(state.value)})}});const Item=defineComponent({name:`Sectile${options.componentName}Item`,inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(`${options.componentName}Item`);const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,expanded:root.state.value.path.includes(props.value),branch:root.branchItems.value.has(props.value),disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));provide(options.itemKey,{state});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",tabindex:state.value.disabled?-1:state.value.highlighted?0:-1,"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"aria-haspopup":state.value.branch?"listbox":void 0,"aria-expanded":void 0,[options.itemAttribute]:props.value,"data-scope":options.scope,"data-part":"item","data-state":state.value.selected?"checked":"unchecked","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ItemIndicator=defineComponent({name:`Sectile${options.componentName}ItemIndicator`,inheritAttrs:false,props:{...cascadeChoicePartProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot(`${options.componentName}ItemIndicator`);const item=useItem(`${options.componentName}ItemIndicator`);return()=>{const state=item.state.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>root.indicatorPresence.register(state.value,element),hidden:!root.indicatorPresence.isPresent(state.value,state.selected,props.forcePresent),"aria-hidden":"true","data-scope":options.scope,"data-part":"item-indicator","data-state":state.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(state)})}}});const ItemChevron=defineComponent({name:`Sectile${options.componentName}ItemChevron`,inheritAttrs:false,props:cascadeChoicePartProps,slots:Object,setup(props,{attrs,slots}){const item=useItem(`${options.componentName}ItemChevron`);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,hidden:!item.state.value.branch,"aria-hidden":"true","data-scope":options.scope,"data-part":"item-chevron"}),{default:()=>slots["default"]?.(item.state.value)})}});return Object.freeze({Column,Item,ItemIndicator,ItemChevron})}function initialCascadeColumns(nodes,path=[]){const tree=tryCreateTree(nodes);if(!tree.ok)throw new TypeError(tree.error.message);const columns=[tree.value.roots.ids];for(const id of path){const children=tree.value.childrenOf(id)?.ids??[];if(children.length>0)columns.push(children)}return columns}function cascadeItemPath(nodes,value){if(value===null)return[];const tree=tryCreateTree(nodes);if(!tree.ok)throw new TypeError(tree.error.message);const ancestors=tree.value.ancestorsOf(value);return ancestors===null?[]:Object.freeze([...ancestors].reverse().concat(value))}function cascadeBranchItems(nodes){return new Set(collectionBranchIDs(nodes))}export{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns};
|
|
2
2
|
//# sourceMappingURL=cascade-choice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/cascade-choice.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/internal/cascade-choice.ts"],"mappings":"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","names":[],"file":"cascade-choice.js"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ConnectionLifetime<Input extends readonly unknown[]> {
|
|
2
|
+
read(): Input;
|
|
3
|
+
equal(next: Input, previous: Input): boolean;
|
|
4
|
+
connect(input: Input): void;
|
|
5
|
+
disconnect(): void;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
}
|
|
8
|
+
/** One paired-watch lifetime; native state/publication remains with each bridge. */
|
|
9
|
+
export declare function useConnectionLifetime<Input extends readonly unknown[]>(options: ConnectionLifetime<Input>): void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{onMounted,onScopeDispose,watch}from"vue";function useConnectionLifetime(options){let hooks=options;let alive=true,mounted=false,needsAttach=true;let before,after;const release=()=>{needsAttach=true;hooks?.disconnect()};const read=()=>{try{return hooks?.read()}catch(failure){try{release()}catch{}throw failure}};const attach=input=>{if(!alive||!mounted||!needsAttach||!input)return;needsAttach=false;try{hooks?.connect(input)}catch(failure){try{release()}catch{}throw failure}};onScopeDispose(()=>{alive=false;mounted=false;const held=hooks,stopBefore=before,stopAfter=after;hooks=void 0;before=void 0;after=void 0;try{stopBefore?.()}finally{try{stopAfter?.()}finally{try{held?.dispose()}finally{held?.disconnect()}}}});before=watch(read,(next,previous)=>{if(!next||!previous||!hooks?.equal(next,previous))release()},{flush:"sync"});if(!alive){before();before=void 0;return}after=watch(read,attach,{flush:"post"});if(!alive){after();after=void 0;return}onMounted(()=>{mounted=true;attach(read())})}export{useConnectionLifetime};
|
|
2
|
+
//# sourceMappingURL=connection-lifetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/internal/connection-lifetime.ts"],"mappings":"AAAA,OAAS,UAAW,eAAgB,UAAmC,MAWjE,SAAU,sBAAwD,QAAkC,CACxG,IAAI,MAA+C,QACnD,IAAI,MAAQ,KAAM,QAAU,MAAO,YAAc,KACjD,IAAI,OAAqC,MACzC,MAAM,QAAU,IAAW,CAAG,YAAc,KAAM,OAAO,WAAU,CAAI,EACvE,MAAM,KAAO,IAAwB,CACnC,GAAI,CAAE,OAAO,OAAO,KAAI,CAAI,OACrB,QAAS,CAAE,GAAI,CAAE,QAAO,CAAI,MAAQ,CAAqD,CAAE,MAAM,OAAS,CACnH,EACA,MAAM,OAAU,OAAkC,CAChD,GAAI,CAAC,OAAS,CAAC,SAAW,CAAC,aAAe,CAAC,MAAO,OAClD,YAAc,MACd,GAAI,CAAE,OAAO,QAAQ,KAAK,CAAG,OACtB,QAAS,CAAE,GAAI,CAAE,QAAO,CAAI,MAAQ,CAA0D,CAAE,MAAM,OAAS,CACxH,EAEA,eAAe,IAAK,CAClB,MAAQ,MAAO,QAAU,MACzB,MAAM,KAAO,MAAO,WAAa,OAAQ,UAAY,MACrD,MAAQ,OAAW,OAAS,OAAW,MAAQ,OAC/C,GAAI,CAAE,aAAY,CAAI,SACZ,GAAI,CAAE,YAAW,CAAI,SAAY,GAAI,CAAE,MAAM,QAAO,CAAI,SAAY,MAAM,WAAU,CAAI,CAAE,CAAE,CACxG,CAAC,EACD,OAAS,MAAM,KAAM,CAAC,KAAM,WAAY,CACtC,GAAI,CAAC,MAAQ,CAAC,UAAY,CAAC,OAAO,MAAM,KAAM,QAAQ,EAAG,QAAO,CAClE,EAAG,CAAE,MAAO,MAAM,CAAE,EACpB,GAAI,CAAC,MAAO,CAAE,OAAM,EAAI,OAAS,OAAW,MAAQ,CACpD,MAAQ,MAAM,KAAM,OAAQ,CAAE,MAAO,MAAM,CAAE,EAC7C,GAAI,CAAC,MAAO,CAAE,MAAK,EAAI,MAAQ,OAAW,MAAQ,CAClD,UAAU,IAAK,CAAG,QAAU,KAAM,OAAO,KAAI,CAAE,CAAG,CAAC,CACrD","names":[],"file":"connection-lifetime.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ComputedRef, type ShallowRef } from 'vue';
|
|
2
|
+
import type { Result } from '@sectile/core/result';
|
|
3
|
+
import type { DOMLayerPresentationListener, DOMLayerPresentationSnapshot, DOMLayerPresentationSubscription, DOMLayerReparentErrorCode } from '@sectile/dom/dialog';
|
|
4
|
+
interface PopupPresentationConnection {
|
|
5
|
+
getActive(): boolean;
|
|
6
|
+
getLayerOrder?(): number | null;
|
|
7
|
+
subscribeLayerPresentation?(listener: DOMLayerPresentationListener): DOMLayerPresentationSubscription;
|
|
8
|
+
syncLayerParent?(parent: HTMLElement | null): Result<void, DOMLayerReparentErrorCode>;
|
|
9
|
+
suspend(): void;
|
|
10
|
+
resume(): void;
|
|
11
|
+
}
|
|
12
|
+
/** Coordinate borrowed native presentation without owning the component's model. */
|
|
13
|
+
export declare function usePopupPresentation<Connection extends PopupPresentationConnection>(options: {
|
|
14
|
+
readonly connection: ShallowRef<Connection | undefined>;
|
|
15
|
+
readonly open: ComputedRef<boolean>;
|
|
16
|
+
readonly connect: () => void;
|
|
17
|
+
readonly refresh: () => void;
|
|
18
|
+
readonly trackLayerHost?: boolean;
|
|
19
|
+
}): {
|
|
20
|
+
active: ShallowRef<boolean, boolean>;
|
|
21
|
+
presentation: ShallowRef<DOMLayerPresentationSnapshot | undefined, DOMLayerPresentationSnapshot | undefined>;
|
|
22
|
+
availability: ComputedRef<boolean>;
|
|
23
|
+
layerHost: ComputedRef<import("@sectile/dom/layer-host").LayerHostConnection | null | undefined>;
|
|
24
|
+
mayOpen: () => boolean;
|
|
25
|
+
update: () => void;
|
|
26
|
+
release: () => void;
|
|
27
|
+
reconnect: () => void;
|
|
28
|
+
invalidate: () => void;
|
|
29
|
+
prepareModelUpdate: () => void;
|
|
30
|
+
registerPresence: (present: ShallowRef<boolean>) => (() => void);
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{computed,onBeforeUnmount,onMounted,shallowRef,watch}from"vue";import{unwrap}from"@sectile/core/result";import{provideHostActive,useHostActive,useHostLayer,useHostLayerParent}from"../host-provider.js";function usePopupPresentation(options){const hostAvailability=useHostActive();const layerHost=useHostLayer();const parent=useHostLayerParent();const mayOpen=()=>hostAvailability.value&&(parent?.available.value??true);const availability=computed(()=>hostAvailability.value&&(!options.open.value||(parent?.available.value??true)));const active=shallowRef(availability.value);const presentation=shallowRef();const contentPresence=shallowRef();let stopPresentation;let dirty=false,reconnectPending=false,mounted=false,disposed=false;provideHostActive(active);const update=()=>{const current=options.connection.value;if(!current)return;if(!current.getActive())active.value=false;else if(current.getLayerOrder?.()!=null&¤t.subscribeLayerPresentation&&presentation.value?.phase!=="active"){stopPresentation?.();stopPresentation=unwrap(current.subscribeLayerPresentation(next=>{presentation.value=next}))}};const release=()=>{stopPresentation?.();stopPresentation=void 0;presentation.value=void 0};const suspend=()=>{const current=options.connection.value;try{current?.suspend()}finally{if(!current||!current.getActive())active.value=false}};const reconnect=()=>{if(disposed)return;if(!availability.value){dirty=true;return}if(options.connection.value?.getActive()&&!options.open.value&&contentPresence.value?.value){reconnectPending=true;return}if(options.connection.value)suspend();dirty=false;reconnectPending=false;try{options.connect();active.value=options.connection.value?.getActive()??availability.value;update()}catch(error){dirty=true;try{suspend()}catch{}throw error}};onMounted(()=>{mounted=true});onBeforeUnmount(()=>{disposed=true;mounted=false;release()});if(options.trackLayerHost)watch(layerHost,()=>{if(mounted&&!disposed)reconnect();else dirty=true},{flush:"post"});watch(hostAvailability,next=>{if(!next&&!disposed)suspend()},{flush:"sync"});watch(availability,next=>{if(!mounted||disposed)return;if(!next){suspend();return}if(dirty||!options.connection.value)reconnect();else{try{options.connection.value.resume();active.value=options.connection.value.getActive();options.refresh();update()}catch(error){dirty=true;try{suspend()}catch{}throw error}}},{flush:"post"});watch([()=>contentPresence.value?.value,options.open],()=>{if(mounted&&reconnectPending&&(options.open.value||!contentPresence.value?.value))reconnect()},{flush:"post"});if(parent)watch([options.connection,()=>presentation.value?.generation,()=>presentation.value?.phase,parent.element,()=>parent.presentation.value?.generation,()=>parent.presentation.value?.phase],()=>{const element=parent.element.value;if(!disposed&&element&&presentation.value?.phase==="active"&&parent.presentation.value?.phase==="active"){const result=options.connection.value?.syncLayerParent?.(element);if(result)unwrap(result)}},{flush:"post"});return{active,presentation,availability,layerHost,mayOpen,update,release,reconnect,invalidate:()=>{dirty=true},prepareModelUpdate:()=>{if(options.open.value&&!mayOpen())suspend()},registerPresence:present=>{contentPresence.value=present;return()=>{if(contentPresence.value===present)contentPresence.value=void 0}}}}export{usePopupPresentation};
|
|
2
|
+
//# sourceMappingURL=popup-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/internal/popup-presentation.ts"],"mappings":"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","names":[],"file":"popup-presentation.js"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface PortalMoveConnection {
|
|
2
|
+
prepareMove(): void;
|
|
3
|
+
completeMove(restoreFocus?: boolean): void;
|
|
4
|
+
}
|
|
5
|
+
interface PortalMoveScope {
|
|
6
|
+
read: (() => PortalMoveConnection | undefined) | undefined;
|
|
7
|
+
}
|
|
8
|
+
/** Borrow the nearest popup's native owner without retaining it after scope disposal. */
|
|
9
|
+
export declare function providePortalMove(read: () => PortalMoveConnection | undefined): void;
|
|
10
|
+
export declare function usePortalMove(): PortalMoveScope | undefined;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inject,onScopeDispose,provide}from"vue";const portalMoveKey=Symbol("SectilePortalMove");function providePortalMove(read){const scope={read};provide(portalMoveKey,scope);onScopeDispose(()=>{scope.read=void 0})}function usePortalMove(){return inject(portalMoveKey,void 0)}export{providePortalMove,usePortalMove};
|
|
2
|
+
//# sourceMappingURL=portal-move.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/internal/portal-move.ts"],"mappings":"AAAA,OAAS,OAAQ,eAAgB,YAAe,MAOhD,MAAM,cAAgB,OAAO,mBAAmB,EAG1C,SAAU,kBAAkB,KAA4C,CAC5E,MAAM,MAAyB,CAAE,IAAI,EACrC,QAAQ,cAAe,KAAK,EAC5B,eAAe,IAAK,CAAG,MAAM,KAAO,MAAW,CAAC,CAClD,CAEM,SAAU,eAAa,CAC3B,OAAO,OAAoC,cAAe,MAAS,CACrE","names":[],"file":"portal-move.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{nextTick,onScopeDispose}from"vue";function useNextTickTask(task){let active=true;let scheduled=false;let generation=0;const cancel=()=>{generation+=1;scheduled=false};const schedule=()=>{if(!active||scheduled)return;scheduled=true;const expectedGeneration=generation;void nextTick(()=>{if(!active||generation!==expectedGeneration)return;scheduled=false;
|
|
1
|
+
import{getCurrentScope,nextTick,onBeforeUnmount,onScopeDispose}from"vue";function useNextTickTask(task){let callback=task;let active=true;let scheduled=false;let generation=0;const cancel=()=>{generation+=1;scheduled=false};const schedule=()=>{if(!active||scheduled)return;scheduled=true;const expectedGeneration=generation;void nextTick(()=>{if(!active||generation!==expectedGeneration)return;scheduled=false;callback?.()})};const dispose=()=>{active=false;callback=void 0;cancel()};if(getCurrentScope())onScopeDispose(dispose);else onBeforeUnmount(dispose);return Object.freeze({schedule,cancel})}export{useNextTickTask};
|
|
2
2
|
//# sourceMappingURL=scheduled-task.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/scheduled-task.ts"],"mappings":"AAAA,OAAS,SAAU,mBAAsB,
|
|
1
|
+
{"version":3,"sources":["../../src/internal/scheduled-task.ts"],"mappings":"AAAA,OAAS,gBAAiB,SAAU,gBAAiB,mBAAsB,MAOrE,SAAU,gBAAgB,KAAgB,CAC9C,IAAI,SAAqC,KACzC,IAAI,OAAS,KACb,IAAI,UAAY,MAChB,IAAI,WAAa,EAEjB,MAAM,OAAS,IAAW,CACxB,YAAc,EACd,UAAY,KACd,EACA,MAAM,SAAW,IAAW,CAC1B,GAAI,CAAC,QAAU,UAAW,OAC1B,UAAY,KACZ,MAAM,mBAAqB,WAC3B,KAAK,SAAS,IAAK,CACjB,GAAI,CAAC,QAAU,aAAe,mBAAoB,OAClD,UAAY,MACZ,WAAU,CACZ,CAAC,CACH,EACA,MAAM,QAAU,IAAW,CACzB,OAAS,MACT,SAAW,OACX,OAAM,CACR,EACA,GAAI,gBAAe,EAAI,eAAe,OAAO,OACxC,gBAAgB,OAAO,EAC5B,OAAO,OAAO,OAAO,CAAE,SAAU,MAAM,CAAE,CAC3C","names":[],"file":"scheduled-task.js"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { type ComputedRef } from 'vue';
|
|
2
|
+
import type { Sequence } from '@sectile/core/sequence';
|
|
2
3
|
import type { PartContract } from './part-contract.js';
|
|
3
4
|
import type { HostDirection } from '../host-provider.js';
|
|
4
5
|
export interface TabsIDs {
|
|
5
6
|
readonly trigger: string;
|
|
6
7
|
readonly content: string;
|
|
7
8
|
}
|
|
9
|
+
export interface TabsIDCache {
|
|
10
|
+
readonly retained: number;
|
|
11
|
+
get(value: string): TabsIDs;
|
|
12
|
+
reconcile(): void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
}
|
|
15
|
+
/** IDs are deterministic; only members of the current canonical domain are retained. */
|
|
16
|
+
export declare function createTabsIDCache(instanceID: string, source: () => Sequence<string>): TabsIDCache;
|
|
8
17
|
export interface TabsRootContext {
|
|
18
|
+
readonly domain: ComputedRef<Sequence<string>>;
|
|
9
19
|
readonly value: ComputedRef<string>;
|
|
10
20
|
readonly highlighted: ComputedRef<string | null>;
|
|
11
21
|
readonly disabled: ComputedRef<boolean>;
|
|
@@ -16,6 +26,7 @@ export interface TabsRootContext {
|
|
|
16
26
|
readonly direction: ComputedRef<HostDirection>;
|
|
17
27
|
readonly partContract: PartContract;
|
|
18
28
|
select(value: string, target: HTMLElement): void;
|
|
29
|
+
focus(value: string): void;
|
|
19
30
|
keydown(event: KeyboardEvent): void;
|
|
20
31
|
ids(value: string): TabsIDs;
|
|
21
32
|
activateTarget(value: string): boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inject}from"vue";const tabsRootContextKey=Symbol("SectileTabsRoot");function useTabsRootContext(part){const root=inject(tabsRootContextKey);if(root===void 0)throw new TypeError(`${part} must be used inside TabsRoot.`);return root}export{tabsRootContextKey,useTabsRootContext};
|
|
1
|
+
import{inject}from"vue";import{stableIDElementToken}from"@sectile/dom/identity";function createTabsIDCache(instanceID,source){const entries=new Map;let readDomain=source,current=null;const synchronize=()=>{if(readDomain===null)throw new TypeError("Tabs identity owner has been disposed");const next=readDomain();if(next!==current){for(const id of entries.keys())if(!next.contains(id))entries.delete(id);current=next}return next};return Object.freeze({get retained(){return entries.size},get(value){const domain=synchronize(),cached=entries.get(value);if(cached!==void 0)return cached;const safe=stableIDElementToken(value);const created=Object.freeze({trigger:`sectile-tabs-${instanceID}-${safe}-trigger`,content:`sectile-tabs-${instanceID}-${safe}-content`});if(domain.contains(value))entries.set(value,created);return created},reconcile(){if(readDomain!==null)synchronize()},dispose(){entries.clear();readDomain=null;current=null}})}const tabsRootContextKey=Symbol("SectileTabsRoot");function useTabsRootContext(part){const root=inject(tabsRootContextKey);if(root===void 0)throw new TypeError(`${part} must be used inside TabsRoot.`);return root}export{createTabsIDCache,tabsRootContextKey,useTabsRootContext};
|
|
2
2
|
//# sourceMappingURL=tabs-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/tabs-context.ts"],"mappings":"AAAA,OAAS,WAAgC,
|
|
1
|
+
{"version":3,"sources":["../../src/internal/tabs-context.ts"],"mappings":"AAAA,OAAS,WAAgC,MAEzC,OAAS,yBAA4B,wBAe/B,SAAU,kBAAkB,WAAoB,OAA8B,CAClF,MAAM,QAAU,IAAI,IACpB,IAAI,WAA8C,OAAQ,QAAmC,KAC7F,MAAM,YAAc,IAAuB,CACzC,GAAI,aAAe,KAAM,MAAM,IAAI,UAAU,uCAAuC,EACpF,MAAM,KAAO,WAAU,EACvB,GAAI,OAAS,QAAS,CACpB,UAAW,MAAM,QAAQ,KAAI,EAAI,GAAI,CAAC,KAAK,SAAS,EAAE,EAAG,QAAQ,OAAO,EAAE,EAC1E,QAAU,IACZ,CACA,OAAO,IACT,EACA,OAAO,OAAO,OAAO,CACnB,IAAI,UAAQ,CAAK,OAAO,QAAQ,IAAM,EACtC,IAAI,MAAa,CACf,MAAM,OAAS,YAAW,EAAI,OAAS,QAAQ,IAAI,KAAK,EACxD,GAAI,SAAW,OAAW,OAAO,OACjC,MAAM,KAAO,qBAAqB,KAAK,EACvC,MAAM,QAAU,OAAO,OAAO,CAAE,QAAS,gBAAgB,UAAU,IAAI,IAAI,WAAY,QAAS,gBAAgB,UAAU,IAAI,IAAI,UAAU,CAAE,EAC9I,GAAI,OAAO,SAAS,KAAK,EAAG,QAAQ,IAAI,MAAO,OAAO,EACtD,OAAO,OACT,EACA,WAAS,CAAW,GAAI,aAAe,KAAM,YAAW,CAAI,EAC5D,SAAO,CAAW,QAAQ,MAAK,EAAI,WAAa,KAAM,QAAU,IAAM,EACvE,CACH,CAoBO,MAAM,mBAAqB,OAAO,iBAAiB,EAEpD,SAAU,mBAAmB,KAAY,CAC7C,MAAM,KAAO,OAAwB,kBAAkB,EACvD,GAAI,OAAS,OAAW,MAAM,IAAI,UAAU,GAAG,IAAI,gCAAgC,EACnF,OAAO,IACT","names":[],"file":"tabs-context.js"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { type ComputedRef, type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
|
+
import type { CheckboxValue } from '@sectile/core/checkbox';
|
|
3
|
+
import { type PrimitiveAs } from '../primitive.js';
|
|
4
|
+
import type { TreeViewRootSlotProps, TreeViewItemSlotProps } from '../tree-view.js';
|
|
5
|
+
export interface TreePartContext {
|
|
6
|
+
readonly scope: 'tree-view' | 'checkbox-tree' | 'tree-select';
|
|
7
|
+
readonly state: ComputedRef<TreeViewRootSlotProps>;
|
|
8
|
+
readonly selectedItems: ComputedRef<Pick<ReadonlySet<string>, 'has'>>;
|
|
9
|
+
readonly expandedItems: ComputedRef<Pick<ReadonlySet<string>, 'has'>>;
|
|
10
|
+
readonly disabledItems: ComputedRef<Pick<ReadonlySet<string>, 'has'>>;
|
|
11
|
+
readonly checking?: {
|
|
12
|
+
getChecked(id: string): CheckboxValue | null;
|
|
13
|
+
isDisabled(id: string): boolean | null;
|
|
14
|
+
levelOf(id: string): number;
|
|
15
|
+
isLeaf(id: string): boolean;
|
|
16
|
+
};
|
|
17
|
+
readonly selecting?: {
|
|
18
|
+
levelOf(id: string): number;
|
|
19
|
+
isLeaf(id: string): boolean;
|
|
20
|
+
isVisible(id: string): boolean;
|
|
21
|
+
elementID(id: string): string;
|
|
22
|
+
};
|
|
23
|
+
registerItem(element: HTMLElement, id: string, disabled: boolean): void;
|
|
24
|
+
unregisterItem?(element: HTMLElement, id: string): void;
|
|
25
|
+
registerDisclosure(element: HTMLElement, id: string): void;
|
|
26
|
+
unregisterDisclosure?(element: HTMLElement, id: string): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function provideTreeParts(context: TreePartContext): void;
|
|
29
|
+
export declare function createTreeGroup(name: string, scope: TreePartContext['scope']): import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
30
|
+
forcePresent: {
|
|
31
|
+
readonly type: BooleanConstructor;
|
|
32
|
+
readonly default: false;
|
|
33
|
+
};
|
|
34
|
+
as: {
|
|
35
|
+
type: PropType<PrimitiveAs>;
|
|
36
|
+
default: string;
|
|
37
|
+
};
|
|
38
|
+
asChild: {
|
|
39
|
+
type: BooleanConstructor;
|
|
40
|
+
default: boolean;
|
|
41
|
+
};
|
|
42
|
+
for: {
|
|
43
|
+
type: StringConstructor;
|
|
44
|
+
required: true;
|
|
45
|
+
};
|
|
46
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
47
|
+
forcePresent: {
|
|
48
|
+
readonly type: BooleanConstructor;
|
|
49
|
+
readonly default: false;
|
|
50
|
+
};
|
|
51
|
+
as: {
|
|
52
|
+
type: PropType<PrimitiveAs>;
|
|
53
|
+
default: string;
|
|
54
|
+
};
|
|
55
|
+
asChild: {
|
|
56
|
+
type: BooleanConstructor;
|
|
57
|
+
default: boolean;
|
|
58
|
+
};
|
|
59
|
+
for: {
|
|
60
|
+
type: StringConstructor;
|
|
61
|
+
required: true;
|
|
62
|
+
};
|
|
63
|
+
}>> & Readonly<{}>, {
|
|
64
|
+
forcePresent: boolean;
|
|
65
|
+
as: PrimitiveAs;
|
|
66
|
+
asChild: boolean;
|
|
67
|
+
}, SlotsType<{
|
|
68
|
+
default: (props: TreeViewRootSlotProps) => VNodeChild;
|
|
69
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
70
|
+
export declare function createTreeItem(name: string, scope: TreePartContext['scope']): import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
71
|
+
as: {
|
|
72
|
+
type: PropType<PrimitiveAs>;
|
|
73
|
+
default: string;
|
|
74
|
+
};
|
|
75
|
+
asChild: {
|
|
76
|
+
type: BooleanConstructor;
|
|
77
|
+
default: boolean;
|
|
78
|
+
};
|
|
79
|
+
value: {
|
|
80
|
+
type: StringConstructor;
|
|
81
|
+
required: true;
|
|
82
|
+
};
|
|
83
|
+
disabled: {
|
|
84
|
+
type: BooleanConstructor;
|
|
85
|
+
default: boolean;
|
|
86
|
+
};
|
|
87
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
88
|
+
as: {
|
|
89
|
+
type: PropType<PrimitiveAs>;
|
|
90
|
+
default: string;
|
|
91
|
+
};
|
|
92
|
+
asChild: {
|
|
93
|
+
type: BooleanConstructor;
|
|
94
|
+
default: boolean;
|
|
95
|
+
};
|
|
96
|
+
value: {
|
|
97
|
+
type: StringConstructor;
|
|
98
|
+
required: true;
|
|
99
|
+
};
|
|
100
|
+
disabled: {
|
|
101
|
+
type: BooleanConstructor;
|
|
102
|
+
default: boolean;
|
|
103
|
+
};
|
|
104
|
+
}>> & Readonly<{}>, {
|
|
105
|
+
as: PrimitiveAs;
|
|
106
|
+
asChild: boolean;
|
|
107
|
+
disabled: boolean;
|
|
108
|
+
}, SlotsType<{
|
|
109
|
+
default: (props: TreeViewItemSlotProps) => VNodeChild;
|
|
110
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
111
|
+
export declare function createTreeDisclosure(name: string, scope: TreePartContext['scope']): import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
112
|
+
for: {
|
|
113
|
+
type: StringConstructor;
|
|
114
|
+
required: true;
|
|
115
|
+
};
|
|
116
|
+
as: {
|
|
117
|
+
type: PropType<PrimitiveAs>;
|
|
118
|
+
default: string;
|
|
119
|
+
};
|
|
120
|
+
asChild: {
|
|
121
|
+
type: BooleanConstructor;
|
|
122
|
+
default: boolean;
|
|
123
|
+
};
|
|
124
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
125
|
+
for: {
|
|
126
|
+
type: StringConstructor;
|
|
127
|
+
required: true;
|
|
128
|
+
};
|
|
129
|
+
as: {
|
|
130
|
+
type: PropType<PrimitiveAs>;
|
|
131
|
+
default: string;
|
|
132
|
+
};
|
|
133
|
+
asChild: {
|
|
134
|
+
type: BooleanConstructor;
|
|
135
|
+
default: boolean;
|
|
136
|
+
};
|
|
137
|
+
}>> & Readonly<{}>, {
|
|
138
|
+
as: PrimitiveAs;
|
|
139
|
+
asChild: boolean;
|
|
140
|
+
}, SlotsType<{
|
|
141
|
+
default: (props: TreeViewItemSlotProps) => VNodeChild;
|
|
142
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,provide}from'vue';import{Primitive}from'../primitive.js';import{conditionalPresenceProps,useConditionalPresence}from'../presence/conditional-presence.js';const key=/* @__PURE__ */Symbol('SectileTreeParts');const partProps={as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}};export function provideTreeParts(context){provide(key,context)}function useRoot(part,scope){const root=inject(key);if(!root||root.scope!==scope)throw new TypeError(`${part.replace(/^Sectile/u,'')} must be used inside ${scope==='tree-view'?'TreeViewRoot':scope==='checkbox-tree'?'CheckboxTreeRoot':'TreeSelectRoot'}.`);return root}function itemState(root,id,disabled=false){const state=root.state.value;return{expandedValues:state.expandedValues,highlightedValue:state.highlightedValue,readonly:state.readonly,value:id,selectedValues:state.value,selected:root.selectedItems.value.has(id),expanded:root.expandedItems.value.has(id),highlighted:state.highlightedValue===id,disabled:state.disabled||(root.checking?root.checking.isDisabled(id)!==false:disabled||root.disabledItems.value.has(id)),...root.checking?{checked:root.checking.getChecked(id)??false}:{}}}export function createTreeGroup(name,scope){return defineComponent({name,inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name,scope);const expanded=computed(()=>root.expandedItems.value.has(props.for));const presence=useConditionalPresence(expanded,computed(()=>props.forcePresent));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:'group',hidden:presence.hidden.value,...!expanded.value&&presence.present.value?{inert:true,'aria-hidden':'true'}:{},'data-scope':scope,'data-part':'group','data-state':expanded.value?'open':'closed'}),{default:()=>slots['default']?.(root.state.value)})}})}export function createTreeItem(name,scope){return defineComponent({name,inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name,scope),state=computed(()=>itemState(root,props.value,props.disabled));let element,registeredID;const release=()=>{if(element&®isteredID!==undefined)root.unregisterItem?.(element,registeredID);element=undefined;registeredID=undefined};onBeforeUnmount(release);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node!==element||registeredID!==props.value)release();if(typeof HTMLElement!=='undefined'&&node instanceof HTMLElement){element=node;registeredID=props.value;root.registerItem(node,props.value,props.disabled)}},[`data-sectile-${scope}-item`]:props.value,'data-scope':scope,'data-part':'item','data-selected':state.value.selected?'':undefined,'data-expanded':state.value.expanded?'':undefined,'data-highlighted':state.value.highlighted?'':undefined,'data-disabled':state.value.disabled?'':undefined,...root.checking||root.selecting?{role:'treeitem','aria-level':(root.checking??root.selecting).levelOf(props.value),...root.selecting?{id:root.selecting.elementID(props.value),hidden:!root.selecting.isVisible(props.value),'aria-selected':state.value.selected}:{'aria-checked':state.value.checked},'aria-expanded':(root.checking??root.selecting).isLeaf(props.value)?undefined:state.value.expanded,'aria-disabled':state.value.disabled?'true':undefined,tabindex:!root.selecting&&state.value.highlighted&&!state.value.disabled?0:-1,...root.checking?{'data-state':state.value.checked==='mixed'?'indeterminate':state.value.checked?'checked':'unchecked'}:{}}:{}}),{default:()=>slots['default']?.(state.value)})}})}export function createTreeDisclosure(name,scope){return defineComponent({name,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(name,scope),state=computed(()=>itemState(root,props.for));let element,registeredID;const release=()=>{if(element&®isteredID!==undefined)root.unregisterDisclosure?.(element,registeredID);element=undefined;registeredID=undefined};onBeforeUnmount(release);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:props.as==='button'?state.value.disabled:undefined,elementRef:node=>{if(node!==element||registeredID!==props.for)release();if(typeof HTMLElement!=='undefined'&&node instanceof HTMLElement){element=node;registeredID=props.for;root.registerDisclosure(node,props.for)}},[`data-sectile-${scope}-disclosure`]:props.for,'data-scope':scope,'data-part':'disclosure','data-state':state.value.expanded?'open':'closed',...root.checking||root.selecting?{'aria-expanded':props.as==='button'?state.value.expanded:undefined,'aria-disabled':props.as==='button'&&state.value.disabled?'true':undefined,'aria-hidden':props.as==='button'?undefined:'true'}:{}}),{default:()=>slots['default']?.(state.value)})}})}
|
|
2
|
+
//# sourceMappingURL=tree-parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-parts.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","provide","Primitive","conditionalPresenceProps","useConditionalPresence","key","Symbol","partProps","as","type","String","Object","Function","default","asChild","Boolean","provideTreeParts","context","useRoot","part","scope","root","TypeError","replace","itemState","id","disabled","state","value","expandedValues","highlightedValue","readonly","selectedValues","selected","selectedItems","has","expanded","expandedItems","highlighted","checking","isDisabled","disabledItems","checked","getChecked","createTreeGroup","name","inheritAttrs","props","for","required","slots","setup","attrs","presence","forcePresent","elementRef","register","role","hidden","present","inert","createTreeItem","element","registeredID","release","undefined","unregisterItem","node","HTMLElement","registerItem","selecting","levelOf","elementID","isVisible","isLeaf","tabindex","createTreeDisclosure","unregisterDisclosure","registerDisclosure"],"sources":["../../src/internal/tree-parts.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/listbox.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type ListboxSelectionMode = 'single' | 'multiple';
|
|
|
5
5
|
export type ListboxValue = string | readonly string[];
|
|
6
6
|
export interface ListboxRootProps {
|
|
7
7
|
readonly items: readonly string[];
|
|
8
|
+
/** Rendered window only; omitted means the caller renders the full domain. */
|
|
9
|
+
readonly renderedItems?: readonly string[] | undefined;
|
|
8
10
|
readonly selectionMode?: ListboxSelectionMode;
|
|
9
11
|
readonly modelValue?: ListboxValue;
|
|
10
12
|
readonly defaultValue?: ListboxValue;
|
|
@@ -49,6 +51,10 @@ export declare const ListboxRoot: import("vue").DefineComponent<import("vue").Ex
|
|
|
49
51
|
type: PropType<readonly string[]>;
|
|
50
52
|
required: true;
|
|
51
53
|
};
|
|
54
|
+
renderedItems: {
|
|
55
|
+
type: PropType<readonly string[] | undefined>;
|
|
56
|
+
default: undefined;
|
|
57
|
+
};
|
|
52
58
|
selectionMode: {
|
|
53
59
|
type: PropType<ListboxSelectionMode>;
|
|
54
60
|
default: "single";
|
|
@@ -110,6 +116,10 @@ export declare const ListboxRoot: import("vue").DefineComponent<import("vue").Ex
|
|
|
110
116
|
type: PropType<readonly string[]>;
|
|
111
117
|
required: true;
|
|
112
118
|
};
|
|
119
|
+
renderedItems: {
|
|
120
|
+
type: PropType<readonly string[] | undefined>;
|
|
121
|
+
default: undefined;
|
|
122
|
+
};
|
|
113
123
|
selectionMode: {
|
|
114
124
|
type: PropType<ListboxSelectionMode>;
|
|
115
125
|
default: "single";
|
|
@@ -167,6 +177,7 @@ export declare const ListboxRoot: import("vue").DefineComponent<import("vue").Ex
|
|
|
167
177
|
onHighlight?: (_value: string | null) => any;
|
|
168
178
|
"onUpdate:modelValue"?: (_value: ListboxValue) => any;
|
|
169
179
|
}>, {
|
|
180
|
+
renderedItems: readonly string[] | undefined;
|
|
170
181
|
selectionMode: ListboxSelectionMode;
|
|
171
182
|
modelValue: ListboxValue;
|
|
172
183
|
defaultValue: ListboxValue;
|
package/dist/listbox.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,nextTick,provide,shallowReactive,shallowReadonly,shallowRef,watch}from"vue";import{DEFAULT_LISTBOX_SELECTION_MODE,createListboxControllerFromItems,getListboxItemAttributes,getListboxRootAttributes}from"@sectile/dom/listbox";import{stableIDElementToken}from"@sectile/dom/identity";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./form/control.js";import{useHostDirection,useHostId}from"./host-provider.js";import{invalidateItemProjection,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresenceRegistry}from"./presence/conditional-presence.js";const listboxRootContextKey=Symbol("SectileListboxRoot");const listboxItemContextKey=Symbol("SectileListboxItem");const listboxPartProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ListboxRoot=defineComponent({name:"SectileListboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},selectionMode:{type:String,default:DEFAULT_LISTBOX_SELECTION_MODE},modelValue:{type:[String,Array],default:void 0},defaultValue:{type:[String,Array],default:void 0},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"vertical"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},textValue:{type:Function,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true,activate:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const direction=useHostDirection();const instanceID=useHostId();const itemID=id=>`sectile-listbox-${instanceID}-option-${stableIDElementToken(id)}`;const rootElement=shallowRef(null);const submissionElement=shallowRef(null);let controllerProps=snapshotListboxControllerProps({...props,direction:direction.value});const controlled=useControlledStateInvariant("ListboxRoot","modelValue",()=>props.modelValue);const initialValue=toIDs(controlled?props.modelValue:props.defaultValue,props.selectionMode);const controller=shallowRef(createController(controlled,initialValue,initialValue[0]??firstEnabledItem(controllerProps)??null,controllerProps,emit));const snapshot=shallowRef(controller.value.getSnapshot());const selectedIDs=shallowRef(snapshot.value.state.selection.selected);const selectedIDSet=computed(()=>new Set(selectedIDs.value));const indicatorPresence=useConditionalPresenceRegistry(selectedIDSet);const itemProjection=shallowReactive(new Map);let currentSelectedSet=new Set(selectedIDs.value);let currentSelectionMode=props.selectionMode;let currentHighlighted=snapshot.value.state.cursor.current;let disabledItemSet=new Set(controllerProps.disabledItems);let submissionIndex=new Map(controllerProps.items.map((id,index)=>[id,index]));const mutableState=shallowReactive({value:fromIDs(selectedIDs.value,props.selectionMode),highlightedValue:currentHighlighted,disabled:controllerProps.disabled,readonly:controllerProps.readonly});const state=shallowReadonly(mutableState);const syncActiveDescendant=()=>{const element=rootElement.value;if(element===null||typeof element.setAttribute!=="function"||typeof element.removeAttribute!=="function")return;if(currentHighlighted===null)element.removeAttribute("aria-activedescendant");else element.setAttribute("aria-activedescendant",itemID(currentHighlighted))};const syncSubmissionSelection=changedIDs=>{const element=submissionElement.value;if(element===null)return;for(const id of changedIDs){const index=submissionIndex.get(id);if(index===void 0)continue;const option=element.options.item(index);if(option!==null&&option.value===id)option.selected=currentSelectedSet.has(id)}};const publishSnapshot=nextSnapshot=>{const nextSelectedIDs=nextSnapshot.state.selection.selected;const previousSelectedIDs=selectedIDs.value;const selectionReferenceChanged=previousSelectedIDs!==nextSelectedIDs;let nextSelectedSet=currentSelectedSet;const changedSelection=new Set;let selectionOrderChanged=false;if(selectionReferenceChanged){nextSelectedSet=new Set(nextSelectedIDs);for(const id of currentSelectedSet)if(!nextSelectedSet.has(id))changedSelection.add(id);for(const id of nextSelectedSet)if(!currentSelectedSet.has(id))changedSelection.add(id);selectionOrderChanged=!sameIDs(previousSelectedIDs,nextSelectedIDs)}const selectionModeChanged=currentSelectionMode!==props.selectionMode;const previousHighlight=currentHighlighted;currentSelectedSet=nextSelectedSet;currentSelectionMode=props.selectionMode;currentHighlighted=nextSnapshot.state.cursor.current;snapshot.value=nextSnapshot;if(selectionOrderChanged)selectedIDs.value=nextSelectedIDs;if(selectionOrderChanged||selectionModeChanged){mutableState.value=fromIDs(nextSelectedIDs,props.selectionMode)}mutableState.highlightedValue=currentHighlighted;for(const id of changedSelection)invalidateItemProjection(itemProjection,id);if(previousHighlight!==currentHighlighted){invalidateItemProjection(itemProjection,previousHighlight);invalidateItemProjection(itemProjection,currentHighlighted)}syncSubmissionSelection(changedSelection);syncActiveDescendant()};const updateControllerProjection=nextControllerProps=>{const nextDisabledItems=new Set(nextControllerProps.disabledItems);if(controllerProps.disabled===nextControllerProps.disabled){for(const id of disabledItemSet)if(!nextDisabledItems.has(id))invalidateItemProjection(itemProjection,id);for(const id of nextDisabledItems)if(!disabledItemSet.has(id))invalidateItemProjection(itemProjection,id)}else mutableState.disabled=nextControllerProps.disabled;mutableState.readonly=nextControllerProps.readonly;disabledItemSet=nextDisabledItems;submissionIndex=new Map(nextControllerProps.items.map((id,index)=>[id,index]))};const participation=useCompositeFormControl({root:rootElement,submissions:[{element:submissionElement,capabilities:hiddenSelectSubmissionCapabilities}],reset:()=>{queueMicrotask(()=>{const next=controlled?toIDs(props.modelValue,props.selectionMode):initialValue;controller.value=createController(controlled,next,next[0]??firstEnabledItem(controllerProps)??null,controllerProps,emit);publishSnapshot(controller.value.getSnapshot())})}});const rebuild=()=>{const nextControllerProps=snapshotListboxControllerProps({...props,direction:direction.value});if(sameListboxControllerProps(controllerProps,nextControllerProps))return;const requested=controlled?toIDs(props.modelValue,props.selectionMode):snapshot.value.state.selection.selected;const reconciled=reconcileCollectionState(nextControllerProps.items,requested,snapshot.value.state.cursor.current,nextControllerProps.disabledItems,nextControllerProps.selectionMode);controller.value=createController(controlled,reconciled.selected,reconciled.current,nextControllerProps,emit);updateControllerProjection(nextControllerProps);controllerProps=nextControllerProps;publishSnapshot(controller.value.getSnapshot());if(controlled&&!sameIDs(requested,reconciled.selected)){emit("update:modelValue",fromIDs(reconciled.selected,props.selectionMode))}};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValues({value:toIDs(value,props.selectionMode)});if(!result.ok)throw new TypeError(result.error.message);publishSnapshot(result.value)});watch([()=>props.items,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.orientation,()=>props.textValue,direction],rebuild);const applyResult=(result,root)=>{if(!result.ok)return false;publishSnapshot(result.snapshot);applyEffects(result.commands,emit);if(root!==void 0)void nextTick(()=>root.focus());return true};const select=(id,target)=>{const event=props.selectionMode==="multiple"?{type:"toggle",id}:{type:"activate",id};applyResult(controller.value.handleEvent(event),target.closest('[role="listbox"]'))};const handleKeydown=event=>{const result=controller.value.handleKeyboardInput(event);if(!applyResult(result,event.currentTarget))return;event.preventDefault()};provide(listboxRootContextKey,{state,itemProjection,indicatorPresence,itemID,isSelected:id=>currentSelectedSet.has(id),isHighlighted:id=>currentHighlighted===id,isItemDisabled:id=>disabledItemSet.has(id),select});return()=>{const rootAttributes=getListboxRootAttributes({selectionMode:props.selectionMode,orientation:props.orientation,direction:direction.value,disabled:props.disabled,readOnly:props.readonly,...currentHighlighted===null?{}:{activeDescendantID:itemID(currentHighlighted)}});const root=h(Primitive,mergeProps(attrs,rootAttributes,{as:props.as,asChild:props.asChild,onKeydown:handleKeydown,elementRef:element=>{rootElement.value=element;syncActiveDescendant()}},participation.controlProps.value),{default:()=>slots["default"]?.(state)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return root;return[root,h("select",{ref:submissionElement,name:props.name,form:props.form,required:props.required,multiple:props.selectionMode==="multiple",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},props.items.map(id=>h("option",{value:id,selected:currentSelectedSet.has(id)},id)))]}}});const ListboxItem=defineComponent({name:"SectileListboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useListboxRootContext("ListboxItem");const slotProps=Object.freeze({get value(){return props.value},get selected(){root.itemProjection.get(props.value);return root.isSelected(props.value)},get highlighted(){root.itemProjection.get(props.value);return root.isHighlighted(props.value)},get disabled(){root.itemProjection.get(props.value);return root.state.disabled||props.disabled||root.isItemDisabled(props.value)}});provide(listboxItemContextKey,{slotProps});const attributes=computed(()=>{const selected=slotProps.selected;const highlighted=slotProps.highlighted;const disabled=slotProps.disabled;return getListboxItemAttributes({cursor:{current:highlighted?props.value:null},selection:{has:id=>id===props.value&&selected}},{id:props.value,disabled:props.disabled},{disabled,elementID:root.itemID(props.value)})});const handleClick=event=>{if(!event.defaultPrevented&&!slotProps.disabled){root.select(props.value,event.currentTarget)}};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onClick:handleClick}),{default:()=>slots["default"]?.(slotProps)})}});const ListboxItemText=defineComponent({name:"SectileListboxItemText",inheritAttrs:false,props:listboxPartProps,slots:Object,setup(props,{attrs,slots}){const item=useListboxItemContext("ListboxItemText");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"listbox","data-part":"item-text","data-state":item.slotProps.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(item.slotProps)})}});const ListboxItemIndicator=defineComponent({name:"SectileListboxItemIndicator",inheritAttrs:false,props:{...listboxPartProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useListboxRootContext("ListboxItemIndicator");const item=useListboxItemContext("ListboxItemIndicator");return()=>{const state=item.slotProps;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>root.indicatorPresence.register(state.value,element),hidden:!root.indicatorPresence.isPresent(state.value,state.selected,props.forcePresent),"aria-hidden":"true","data-scope":"listbox","data-part":"item-indicator","data-state":state.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(state)})}}});function useListboxRootContext(part){const context=inject(listboxRootContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside ListboxRoot.`);return context}function snapshotListboxControllerProps(props){return Object.freeze({...props,items:Object.freeze([...props.items]),disabledItems:Object.freeze([...props.disabledItems])})}function sameListboxControllerProps(left,right){return sameIDs(left.items,right.items)&&sameIDs(left.disabledItems,right.disabledItems)&&left.selectionMode===right.selectionMode&&left.disabled===right.disabled&&left.readonly===right.readonly&&left.orientation===right.orientation&&left.direction===right.direction&&left.textValue===right.textValue}function firstEnabledItem(props){if(props.disabledItems.length===0)return props.items[0];const disabled=new Set(props.disabledItems);return props.items.find(id=>!disabled.has(id))}function useListboxItemContext(part){const context=inject(listboxItemContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside ListboxItem.`);return context}function createController(controlled,value,highlightedValue,props,emit){const result=createListboxControllerFromItems({items:props.items,selectionMode:props.selectionMode,disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:props.direction,typeahead:{textValue:props.textValue??(id=>id)},...controlled?{value}:{defaultValue:value},defaultHighlightedValue:highlightedValue,onValueChange:change=>emit("update:modelValue",fromIDs(change.value,props.selectionMode)),onHighlightedValueChange:change=>emit("highlight",change.value)});if(!result.ok)throw new TypeError(result.error.message);return result.value}function applyEffects(effects,emit){for(const effect of effects){if(effect.type==="dispatch-activation")emit("activate",effect.id)}}function toIDs(value,mode){if(value===void 0||value==="")return[];if(Array.isArray(value))return mode==="single"?value.slice(0,1):value;return[value]}function fromIDs(value,mode){return mode==="single"?value[0]??"":value}export{ListboxItem,ListboxItemIndicator,ListboxItemText,ListboxRoot};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,provide,shallowReactive,shallowReadonly,shallowRef,watch}from"vue";import{DEFAULT_LISTBOX_SELECTION_MODE,createListboxControllerFromItems,getListboxItemAttributes,getListboxRootAttributes}from"@sectile/dom/listbox";import{stableIDElementToken}from"@sectile/dom/identity";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl,useFormSubmissionProps,useFormControlFlags}from"./form/control.js";import{useHostDirection,useHostId}from"./host-provider.js";import{invalidateItemProjection,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresenceRegistry}from"./presence/conditional-presence.js";const listboxRootContextKey=Symbol("SectileListboxRoot");const listboxItemContextKey=Symbol("SectileListboxItem");const listboxPartProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ListboxRoot=defineComponent({__sectileFormLabelMode:"labelledby",name:"SectileListboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},renderedItems:{type:Array,default:void 0},selectionMode:{type:String,default:DEFAULT_LISTBOX_SELECTION_MODE},modelValue:{type:[String,Array],default:void 0},defaultValue:{type:[String,Array],default:void 0},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"vertical"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},textValue:{type:Function,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true,activate:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const flags=useFormControlFlags(props);const direction=useHostDirection();const instanceID=useHostId();const itemID=id=>`sectile-listbox-${instanceID}-option-${stableIDElementToken(id)}`;const rootElement=shallowRef(null);const submissionElement=shallowRef(null);let controllerProps=snapshotListboxControllerProps({...props,...flags.value,direction:direction.value});const controlled=useControlledStateInvariant("ListboxRoot","modelValue",()=>props.modelValue);const initialValue=Object.freeze([...toIDs(controlled?props.modelValue:props.defaultValue,props.selectionMode)]);let disposed=false;onBeforeUnmount(()=>{disposed=true});const controller=shallowRef(createController(controlled,initialValue,initialValue[0]??firstEnabledItem(controllerProps)??null,controllerProps,emit));const snapshot=shallowRef(controller.value.getSnapshot());const selectedIDs=shallowRef(snapshot.value.state.selection.selected);const selectedIDSet=computed(()=>new Set(selectedIDs.value));const indicatorPresence=useConditionalPresenceRegistry(selectedIDSet);const itemProjection=shallowReactive(new Map);let currentSelectedSet=new Set(selectedIDs.value);let currentSelectionMode=props.selectionMode;let currentHighlighted=snapshot.value.state.cursor.current;let disabledItemSet=new Set(controllerProps.disabledItems);let itemIndex=new Map(controllerProps.items.map((id,index)=>[id,index]));const renderedItems=computed(()=>props.renderedItems===void 0?void 0:new Set(props.renderedItems));const activeDescendantID=()=>currentHighlighted===null||renderedItems.value!==void 0&&!renderedItems.value.has(currentHighlighted)?void 0:itemID(currentHighlighted);const mutableState=shallowReactive({value:fromIDs(selectedIDs.value,props.selectionMode),highlightedValue:currentHighlighted,disabled:controllerProps.disabled,readonly:controllerProps.readonly});const state=shallowReadonly(mutableState);const syncActiveDescendant=()=>{if(disposed)return;const element=rootElement.value;if(element===null||typeof element.setAttribute!=="function"||typeof element.removeAttribute!=="function")return;const id=activeDescendantID();if(id===void 0)element.removeAttribute("aria-activedescendant");else element.setAttribute("aria-activedescendant",id)};const syncSubmissionSelection=changedIDs=>{const element=submissionElement.value;if(element===null)return;for(const id of changedIDs){const index=itemIndex.get(id);if(index===void 0)continue;const option=element.options.item(index+(props.selectionMode==="single"?1:0));if(option!==null&&option.value===id)option.selected=currentSelectedSet.has(id)}if(props.selectionMode==="single"){const empty=element.options.item(0);if(empty!==null)empty.selected=currentSelectedSet.size===0}};const publishSnapshot=nextSnapshot=>{const nextSelectedIDs=nextSnapshot.state.selection.selected;const previousSelectedIDs=selectedIDs.value;const selectionReferenceChanged=previousSelectedIDs!==nextSelectedIDs;let nextSelectedSet=currentSelectedSet;const changedSelection=new Set;let selectionOrderChanged=false;if(selectionReferenceChanged){nextSelectedSet=new Set(nextSelectedIDs);for(const id of currentSelectedSet)if(!nextSelectedSet.has(id))changedSelection.add(id);for(const id of nextSelectedSet)if(!currentSelectedSet.has(id))changedSelection.add(id);selectionOrderChanged=!sameIDs(previousSelectedIDs,nextSelectedIDs)}const selectionModeChanged=currentSelectionMode!==props.selectionMode;const previousHighlight=currentHighlighted;currentSelectedSet=nextSelectedSet;currentSelectionMode=props.selectionMode;currentHighlighted=nextSnapshot.state.cursor.current;snapshot.value=nextSnapshot;if(selectionOrderChanged)selectedIDs.value=nextSelectedIDs;if(selectionOrderChanged||selectionModeChanged){mutableState.value=fromIDs(nextSelectedIDs,props.selectionMode)}mutableState.highlightedValue=currentHighlighted;for(const id of changedSelection)invalidateItemProjection(itemProjection,id);if(previousHighlight!==currentHighlighted){invalidateItemProjection(itemProjection,previousHighlight);invalidateItemProjection(itemProjection,currentHighlighted)}syncSubmissionSelection(changedSelection);syncActiveDescendant()};const updateControllerProjection=nextControllerProps=>{const nextDisabledItems=new Set(nextControllerProps.disabledItems);if(controllerProps.disabled===nextControllerProps.disabled){for(const id of disabledItemSet)if(!nextDisabledItems.has(id))invalidateItemProjection(itemProjection,id);for(const id of nextDisabledItems)if(!disabledItemSet.has(id))invalidateItemProjection(itemProjection,id)}else mutableState.disabled=nextControllerProps.disabled;mutableState.readonly=nextControllerProps.readonly;disabledItemSet=nextDisabledItems;itemIndex=new Map(nextControllerProps.items.map((id,index)=>[id,index]))};const submissionProps=useFormSubmissionProps({element:submissionElement,capabilities:hiddenSelectSubmissionCapabilities},props);const participation=useCompositeFormControl({root:rootElement,submissions:[{element:submissionElement,capabilities:hiddenSelectSubmissionCapabilities}],reset:()=>{queueMicrotask(()=>{if(disposed)return;const next=controlled?toIDs(props.modelValue,props.selectionMode):initialValue;const reconciled=reconcileCollectionState(controllerProps.items,next,next[0]??null,controllerProps.disabledItems,props.selectionMode);controller.value=createController(controlled,reconciled.selected,reconciled.current,controllerProps,emit);publishSnapshot(controller.value.getSnapshot())})}});const rebuild=()=>{const nextControllerProps=snapshotListboxControllerProps({...props,...flags.value,direction:direction.value});if(sameListboxControllerProps(controllerProps,nextControllerProps))return;const requested=controlled?toIDs(props.modelValue,props.selectionMode):snapshot.value.state.selection.selected;const reconciled=reconcileCollectionState(nextControllerProps.items,requested,snapshot.value.state.cursor.current,nextControllerProps.disabledItems,nextControllerProps.selectionMode);controller.value=createController(controlled,reconciled.selected,reconciled.current,nextControllerProps,emit);updateControllerProjection(nextControllerProps);controllerProps=nextControllerProps;publishSnapshot(controller.value.getSnapshot());if(controlled&&!sameIDs(requested,reconciled.selected)){emit("update:modelValue",fromIDs(reconciled.selected,props.selectionMode))}};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValues({value:toIDs(value,props.selectionMode)});if(!result.ok)throw new TypeError(result.error.message);publishSnapshot(result.value)});watch([()=>props.items,()=>props.selectionMode,()=>props.disabledItems,()=>flags.value.disabled,()=>flags.value.readonly,()=>props.orientation,()=>props.textValue,direction],rebuild);watch(()=>props.renderedItems,syncActiveDescendant,{flush:"post"});const applyResult=(result,root)=>{if(!result.ok)return false;publishSnapshot(result.snapshot);applyEffects(result.commands,emit);if(root!==void 0)void nextTick(()=>root.focus());return true};const select=(id,target)=>{const event=props.selectionMode==="multiple"?{type:"toggle",id}:{type:"activate",id};applyResult(controller.value.handleEvent(event),target.closest('[role="listbox"]'))};const handleKeydown=event=>{const result=controller.value.handleKeyboardInput(event);if(!applyResult(result,event.currentTarget))return;event.preventDefault()};provide(listboxRootContextKey,{state,itemProjection,indicatorPresence,itemID,get itemCount(){return props.renderedItems===void 0?void 0:props.items.length},itemPosition(id){if(props.renderedItems===void 0)return void 0;void props.items;const index=itemIndex.get(id);return index===void 0?void 0:index+1},isSelected:id=>currentSelectedSet.has(id),isHighlighted:id=>currentHighlighted===id,isItemDisabled:id=>disabledItemSet.has(id),select});return()=>{const activeID=activeDescendantID();const rootAttributes=getListboxRootAttributes({...typeof attrs["aria-label"]==="string"?{label:attrs["aria-label"]}:{},selectionMode:props.selectionMode,orientation:props.orientation,direction:direction.value,disabled:flags.value.disabled,readOnly:flags.value.readonly,...activeID===void 0?{}:{activeDescendantID:activeID}});const root=h(Primitive,mergeProps(attrs,rootAttributes,{as:props.as,asChild:props.asChild,onKeydown:handleKeydown,elementRef:element=>{rootElement.value=element;syncActiveDescendant()}},participation.controlProps.value),{default:()=>slots["default"]?.(state)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return root;const options=props.selectionMode==="single"?[h("option",{value:"",selected:currentSelectedSet.size===0})]:[];for(const id of props.items)options.push(h("option",{value:id,selected:currentSelectedSet.has(id)},id));return[root,h("select",{ref:submissionElement,...submissionProps.value,multiple:props.selectionMode==="multiple",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},options)]}}});const ListboxItem=defineComponent({name:"SectileListboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useListboxRootContext("ListboxItem");const slotProps=Object.freeze({get value(){return props.value},get selected(){root.itemProjection.get(props.value);return root.isSelected(props.value)},get highlighted(){root.itemProjection.get(props.value);return root.isHighlighted(props.value)},get disabled(){root.itemProjection.get(props.value);return root.state.disabled||props.disabled||root.isItemDisabled(props.value)}});provide(listboxItemContextKey,{slotProps});const attributes=computed(()=>{const selected=slotProps.selected;const highlighted=slotProps.highlighted;const disabled=slotProps.disabled;return getListboxItemAttributes({cursor:{current:highlighted?props.value:null},selection:{has:id=>id===props.value&&selected}},{id:props.value,disabled:props.disabled},{disabled,elementID:root.itemID(props.value)})});const handleClick=event=>{if(!event.defaultPrevented&&!slotProps.disabled){root.select(props.value,event.currentTarget)}};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onClick:handleClick,...root.itemCount===void 0?{}:{"aria-setsize":root.itemCount,"aria-posinset":root.itemPosition(props.value)}}),{default:()=>slots["default"]?.(slotProps)})}});const ListboxItemText=defineComponent({name:"SectileListboxItemText",inheritAttrs:false,props:listboxPartProps,slots:Object,setup(props,{attrs,slots}){const item=useListboxItemContext("ListboxItemText");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"listbox","data-part":"item-text","data-state":item.slotProps.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(item.slotProps)})}});const ListboxItemIndicator=defineComponent({name:"SectileListboxItemIndicator",inheritAttrs:false,props:{...listboxPartProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useListboxRootContext("ListboxItemIndicator");const item=useListboxItemContext("ListboxItemIndicator");return()=>{const state=item.slotProps;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>root.indicatorPresence.register(state.value,element),hidden:!root.indicatorPresence.isPresent(state.value,state.selected,props.forcePresent),"aria-hidden":"true","data-scope":"listbox","data-part":"item-indicator","data-state":state.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(state)})}}});function useListboxRootContext(part){const context=inject(listboxRootContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside ListboxRoot.`);return context}function snapshotListboxControllerProps(props){return Object.freeze({...props,items:Object.freeze([...props.items]),disabledItems:Object.freeze([...props.disabledItems])})}function sameListboxControllerProps(left,right){return sameIDs(left.items,right.items)&&sameIDs(left.disabledItems,right.disabledItems)&&left.selectionMode===right.selectionMode&&left.disabled===right.disabled&&left.readonly===right.readonly&&left.orientation===right.orientation&&left.direction===right.direction&&left.textValue===right.textValue}function firstEnabledItem(props){if(props.disabledItems.length===0)return props.items[0];const disabled=new Set(props.disabledItems);return props.items.find(id=>!disabled.has(id))}function useListboxItemContext(part){const context=inject(listboxItemContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside ListboxItem.`);return context}function createController(controlled,value,highlightedValue,props,emit){const result=createListboxControllerFromItems({items:props.items,selectionMode:props.selectionMode,disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:props.direction,typeahead:{textValue:props.textValue??(id=>id)},...controlled?{value}:{defaultValue:value},defaultHighlightedValue:highlightedValue,onValueChange:change=>emit("update:modelValue",fromIDs(change.value,props.selectionMode)),onHighlightedValueChange:change=>emit("highlight",change.value)});if(!result.ok)throw new TypeError(result.error.message);return result.value}function applyEffects(effects,emit){for(const effect of effects){if(effect.type==="dispatch-activation")emit("activate",effect.id)}}function toIDs(value,mode){if(value===void 0||value==="")return[];if(Array.isArray(value))return mode==="single"?value.slice(0,1):value;return[value]}function fromIDs(value,mode){return mode==="single"?value[0]??"":value}export{ListboxItem,ListboxItemIndicator,ListboxItemText,ListboxRoot};
|
|
2
2
|
//# sourceMappingURL=listbox.js.map
|
package/dist/listbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/listbox.ts"],"mappings":"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","names":[],"file":"listbox.js"}
|
|
1
|
+
{"version":3,"sources":["../src/listbox.ts"],"mappings":"AAAA,OACE,SACA,gBACA,EACA,OACA,WACA,SACA,gBACA,QACA,gBACA,gBACA,WACA,UAIK,MACP,OACE,+BACA,iCACA,yBACA,6BAGK,uBACP,OAAS,yBAA4B,wBACrC,OAAS,cAAmC,iBAC5C,OAAS,6BAAgC,0BACzC,OAAS,mCAAoC,wBAAyB,uBAAwB,wBAA2B,oBACzH,OAAS,iBAAkB,cAAqC,qBAChE,OACE,yBACA,yBACA,YAEK,2BACP,OAAS,gCAAmC,iCAC5C,OACE,yBACA,mCAGK,qCAwFP,MAAM,sBAAwB,OAAO,oBAAoB,EACzD,MAAM,sBAAwB,OAAO,oBAAoB,EACzD,MAAM,iBAAmB,CACvB,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,MAAM,EAChF,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAGnC,MAAM,YAAc,gBAAgB,CACzC,uBAAwB,aACxB,KAAM,qBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,MAAsC,SAAU,IAAI,EACnE,cAAe,CAAE,KAAM,MAAkD,QAAS,MAAS,EAC3F,cAAe,CAAE,KAAM,OAA0C,QAAS,8BAA8B,EACxG,WAAY,CAAE,KAAM,CAAC,OAAQ,KAAK,EAA6B,QAAS,MAAS,EACjF,aAAc,CAAE,KAAM,CAAC,OAAQ,KAAK,EAA6B,QAAS,MAAS,EACnF,cAAe,CAAE,KAAM,MAAsC,QAAS,IAAM,CAAA,CAAE,EAC9E,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,YAAa,CAAE,KAAM,OAA+C,QAAS,UAAU,EACvF,KAAM,CAAE,KAAM,OAAQ,QAAS,MAAS,EACxC,KAAM,CAAE,KAAM,OAAQ,QAAS,MAAS,EACxC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,UAAW,CAAE,KAAM,SAAgD,QAAS,MAAS,EACrF,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,CACL,oBAAsB,QAAkC,KACxD,UAAY,QAAmC,KAC/C,SAAW,QAA4B,MAEzC,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAM,KAAK,EAAE,CACjC,MAAM,MAAQ,oBAAoB,KAAK,EACvC,MAAM,UAAY,iBAAgB,EAClC,MAAM,WAAa,UAAS,EAC5B,MAAM,OAAU,IAAuB,mBAAmB,UAAU,WAAW,qBAAqB,EAAE,CAAC,GACvG,MAAM,YAAc,WAA+B,IAAI,EACvD,MAAM,kBAAoB,WAAqC,IAAI,EACnE,IAAI,gBAAkB,+BAA+B,CACnD,GAAG,MACH,GAAG,MAAM,MACT,UAAW,UAAU,MACtB,EACD,MAAM,WAAa,4BAA4B,cAAe,aAAc,IAAM,MAAM,UAAU,EAClG,MAAM,aAAe,OAAO,OAAO,CAAC,GAAG,MAAM,WAAa,MAAM,WAAa,MAAM,aAAc,MAAM,aAAa,CAAC,CAAC,EACtH,IAAI,SAAW,MACf,gBAAgB,IAAK,CAAG,SAAW,IAAM,CAAC,EAC1C,MAAM,WAAa,WAAW,iBAC5B,WACA,aACA,aAAa,CAAC,GAAK,iBAAiB,eAAe,GAAK,KACxD,gBACA,IAAI,CACL,EACD,MAAM,SAAW,WAAW,WAAW,MAAM,YAAW,CAAE,EAC1D,MAAM,YAAc,WAA8B,SAAS,MAAM,MAAM,UAAU,QAAQ,EACzF,MAAM,cAAgB,SAA8B,IAAM,IAAI,IAAI,YAAY,KAAK,CAAC,EACpF,MAAM,kBAAoB,+BAA+B,aAAa,EACtE,MAAM,eAAiB,gBAAgB,IAAI,GAAmB,EAC9D,IAAI,mBAAqB,IAAI,IAAI,YAAY,KAAK,EAClD,IAAI,qBAAuB,MAAM,cACjC,IAAI,mBAAqB,SAAS,MAAM,MAAM,OAAO,QACrD,IAAI,gBAAkB,IAAI,IAAI,gBAAgB,aAAa,EAC3D,IAAI,UAAY,IAAI,IAAI,gBAAgB,MAAM,IAAI,CAAC,GAAI,QAAU,CAAC,GAAI,KAAK,CAAU,CAAC,EACtF,MAAM,cAAgB,SAAS,IAAM,MAAM,gBAAkB,OAAY,OAAY,IAAI,IAAI,MAAM,aAAa,CAAC,EACjH,MAAM,mBAAqB,IAA0B,qBAAuB,MACtE,cAAc,QAAU,QAAa,CAAC,cAAc,MAAM,IAAI,kBAAkB,EAClF,OAAY,OAAO,kBAAkB,EACzC,MAAM,aAAe,gBAAgB,CACnC,MAAO,QAAQ,YAAY,MAAO,MAAM,aAAa,EACrD,iBAAkB,mBAClB,SAAU,gBAAgB,SAC1B,SAAU,gBAAgB,SAC3B,EACD,MAAM,MAA8B,gBAAgB,YAAY,EAChE,MAAM,qBAAuB,IAAW,CACtC,GAAI,SAAU,OACd,MAAM,QAAU,YAAY,MAC5B,GACE,UAAY,MACT,OAAO,QAAQ,eAAiB,YAChC,OAAO,QAAQ,kBAAoB,WACtC,OACF,MAAM,GAAK,mBAAkB,EAC7B,GAAI,KAAO,OAAW,QAAQ,gBAAgB,uBAAuB,OAChE,QAAQ,aAAa,wBAAyB,EAAE,CACvD,EACA,MAAM,wBAA2B,YAAsC,CACrE,MAAM,QAAU,kBAAkB,MAClC,GAAI,UAAY,KAAM,OACtB,UAAW,MAAM,WAAY,CAC3B,MAAM,MAAQ,UAAU,IAAI,EAAE,EAC9B,GAAI,QAAU,OAAW,SACzB,MAAM,OAAS,QAAQ,QAAQ,KAAK,OAAS,MAAM,gBAAkB,SAAW,EAAI,EAAE,EACtF,GAAI,SAAW,MAAQ,OAAO,QAAU,GAAI,OAAO,SAAW,mBAAmB,IAAI,EAAE,CACzF,CACA,GAAI,MAAM,gBAAkB,SAAU,CACpC,MAAM,MAAQ,QAAQ,QAAQ,KAAK,CAAC,EACpC,GAAI,QAAU,KAAM,MAAM,SAAW,mBAAmB,OAAS,CACnE,CACF,EACA,MAAM,gBACJ,cACQ,CACR,MAAM,gBAAkB,aAAa,MAAM,UAAU,SACrD,MAAM,oBAAsB,YAAY,MACxC,MAAM,0BAA4B,sBAAwB,gBAC1D,IAAI,gBAAkB,mBACtB,MAAM,iBAAmB,IAAI,IAC7B,IAAI,sBAAwB,MAC5B,GAAI,0BAA2B,CAC7B,gBAAkB,IAAI,IAAI,eAAe,EACzC,UAAW,MAAM,mBAAoB,GAAI,CAAC,gBAAgB,IAAI,EAAE,EAAG,iBAAiB,IAAI,EAAE,EAC1F,UAAW,MAAM,gBAAiB,GAAI,CAAC,mBAAmB,IAAI,EAAE,EAAG,iBAAiB,IAAI,EAAE,EAC1F,sBAAwB,CAAC,QAAQ,oBAAqB,eAAe,CACvE,CACA,MAAM,qBAAuB,uBAAyB,MAAM,cAC5D,MAAM,kBAAoB,mBAC1B,mBAAqB,gBACrB,qBAAuB,MAAM,cAC7B,mBAAqB,aAAa,MAAM,OAAO,QAC/C,SAAS,MAAQ,aACjB,GAAI,sBAAuB,YAAY,MAAQ,gBAC/C,GAAI,uBAAyB,qBAAsB,CACjD,aAAa,MAAQ,QAAQ,gBAAiB,MAAM,aAAa,CACnE,CACA,aAAa,iBAAmB,mBAChC,UAAW,MAAM,iBAAkB,yBAAyB,eAAgB,EAAE,EAC9E,GAAI,oBAAsB,mBAAoB,CAC5C,yBAAyB,eAAgB,iBAAiB,EAC1D,yBAAyB,eAAgB,kBAAkB,CAC7D,CACA,wBAAwB,gBAAgB,EACxC,qBAAoB,CACtB,EACA,MAAM,2BAA8B,qBAAqD,CACvF,MAAM,kBAAoB,IAAI,IAAI,oBAAoB,aAAa,EACnE,GAAI,gBAAgB,WAAa,oBAAoB,SAAU,CAC7D,UAAW,MAAM,gBAAiB,GAAI,CAAC,kBAAkB,IAAI,EAAE,EAAG,yBAAyB,eAAgB,EAAE,EAC7G,UAAW,MAAM,kBAAmB,GAAI,CAAC,gBAAgB,IAAI,EAAE,EAAG,yBAAyB,eAAgB,EAAE,CAC/G,MAAO,aAAa,SAAW,oBAAoB,SACnD,aAAa,SAAW,oBAAoB,SAC5C,gBAAkB,kBAClB,UAAY,IAAI,IAAI,oBAAoB,MAAM,IAAI,CAAC,GAAI,QAAU,CAAC,GAAI,KAAK,CAAU,CAAC,CACxF,EACA,MAAM,gBAAkB,uBAAuB,CAAE,QAAS,kBAAmB,aAAc,kCAAkC,EAAI,KAAK,EACtI,MAAM,cAAgB,wBAAwB,CAC5C,KAAM,YACN,YAAa,CAAC,CAAE,QAAS,kBAAmB,aAAc,kCAAkC,CAAE,EAC9F,MAAO,IAAK,CACV,eAAe,IAAK,CAClB,GAAI,SAAU,OACd,MAAM,KAAO,WACT,MAAM,MAAM,WAAY,MAAM,aAAa,EAC3C,aACJ,MAAM,WAAa,yBAAyB,gBAAgB,MAAO,KAAM,KAAK,CAAC,GAAK,KAClF,gBAAgB,cAAe,MAAM,aAAa,EACpD,WAAW,MAAQ,iBACjB,WACA,WAAW,SACX,WAAW,QACX,gBACA,IAAI,EAEN,gBAAgB,WAAW,MAAM,YAAW,CAAE,CAChD,CAAC,CACH,EACD,EACD,MAAM,QAAU,IAAW,CACzB,MAAM,oBAAsB,+BAA+B,CACzD,GAAG,MACH,GAAG,MAAM,MACT,UAAW,UAAU,MACtB,EACD,GAAI,2BAA2B,gBAAiB,mBAAmB,EAAG,OACtE,MAAM,UAAY,WACd,MAAM,MAAM,WAAY,MAAM,aAAa,EAC3C,SAAS,MAAM,MAAM,UAAU,SACnC,MAAM,WAAa,yBACjB,oBAAoB,MACpB,UACA,SAAS,MAAM,MAAM,OAAO,QAC5B,oBAAoB,cACpB,oBAAoB,aAAa,EAEnC,WAAW,MAAQ,iBACjB,WACA,WAAW,SACX,WAAW,QACX,oBACA,IAAI,EAEN,2BAA2B,mBAAmB,EAC9C,gBAAkB,oBAClB,gBAAgB,WAAW,MAAM,YAAW,CAAE,EAC9C,GAAI,YAAc,CAAC,QAAQ,UAAW,WAAW,QAAQ,EAAG,CAC1D,KAAK,oBAAqB,QAAQ,WAAW,SAAU,MAAM,aAAa,CAAC,CAC7E,CACF,EACA,MAAM,IAAM,MAAM,WAAa,OAAS,CACtC,GAAI,CAAC,YAAc,QAAU,OAAW,OACxC,MAAM,OAAS,WAAW,MAAM,qBAAqB,CACnD,MAAO,MAAM,MAAO,MAAM,aAAa,EACxC,EACD,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EACxD,gBAAgB,OAAO,KAAK,CAC9B,CAAC,EACD,MACE,CAAC,IAAM,MAAM,MAAO,IAAM,MAAM,cAAe,IAAM,MAAM,cACzD,IAAM,MAAM,MAAM,SAAU,IAAM,MAAM,MAAM,SAAU,IAAM,MAAM,YAAa,IAAM,MAAM,UAAW,SAAS,EACnH,OAAO,EAET,MAAM,IAAM,MAAM,cAAe,qBAAsB,CAAE,MAAO,MAAM,CAAE,EACxE,MAAM,YAAc,CAClB,OACA,OACW,CACX,GAAI,CAAC,OAAO,GAAI,MAAO,OACvB,gBAAgB,OAAO,QAAQ,EAC/B,aAAa,OAAO,SAAU,IAAI,EAClC,GAAI,OAAS,OAAW,KAAK,SAAS,IAAM,KAAK,MAAK,CAAE,EACxD,MAAO,KACT,EACA,MAAM,OAAS,CAAC,GAAY,SAA6B,CACvD,MAAM,MAAQ,MAAM,gBAAkB,WAClC,CAAE,KAAM,SAAmB,EAAE,EAC7B,CAAE,KAAM,WAAqB,EAAE,EACnC,YAAY,WAAW,MAAM,YAAY,KAAK,EAAG,OAAO,QAAQ,kBAAkB,CAA4B,CAChH,EACA,MAAM,cAAiB,OAA8B,CACnD,MAAM,OAAS,WAAW,MAAM,oBAAoB,KAAK,EACzD,GAAI,CAAC,YAAY,OAAQ,MAAM,aAA4B,EAAG,OAC9D,MAAM,eAAc,CACtB,EACA,QAA4B,sBAAuB,CACjD,MACA,eACA,kBACA,OACA,IAAI,WAAS,CAAK,OAAO,MAAM,gBAAkB,OAAY,OAAY,MAAM,MAAM,MAAQ,EAC7F,aAAa,GAAE,CACb,GAAI,MAAM,gBAAkB,OAAW,OAAO,OAE9C,KAAK,MAAM,MACX,MAAM,MAAQ,UAAU,IAAI,EAAE,EAC9B,OAAO,QAAU,OAAY,OAAY,MAAQ,CACnD,EACA,WAAa,IAAO,mBAAmB,IAAI,EAAE,EAC7C,cAAgB,IAAO,qBAAuB,GAC9C,eAAiB,IAAO,gBAAgB,IAAI,EAAE,EAC9C,OACD,EACD,MAAO,IAAiB,CACtB,MAAM,SAAW,mBAAkB,EACnC,MAAM,eAAiB,yBAAyB,CAC9C,GAAI,OAAO,MAAM,YAAY,IAAM,SAAW,CAAE,MAAO,MAAM,YAAY,CAAC,EAAK,CAAA,EAC/E,cAAe,MAAM,cACrB,YAAa,MAAM,YACnB,UAAW,UAAU,MACrB,SAAU,MAAM,MAAM,SACtB,SAAU,MAAM,MAAM,SACtB,GAAI,WAAa,OAAY,CAAA,EAAK,CAAE,mBAAoB,QAAQ,EACjE,EACD,MAAM,KAAO,EAAE,UAAW,WACxB,MACA,eACA,CACE,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,UAAW,cACjD,WAAa,SAAoB,CAAG,YAAY,MAAQ,QAA+B,qBAAoB,CAAI,GAEjH,cAAc,aAAa,KAAK,EAC/B,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,KAAK,CAAC,CAAE,EAC/C,GAAI,CAAC,cAAc,eAAiB,MAAM,OAAS,QAAa,MAAM,OAAS,QAAa,CAAC,MAAM,SAAU,OAAO,KACpH,MAAM,QAAU,MAAM,gBAAkB,SAAW,CAAC,EAAE,SAAU,CAAE,MAAO,GAAI,SAAU,mBAAmB,OAAS,CAAC,CAAE,CAAC,EAAI,CAAA,EAC3H,UAAW,MAAM,MAAM,MAAO,QAAQ,KAAK,EAAE,SAAU,CAAE,MAAO,GAAI,SAAU,mBAAmB,IAAI,EAAE,CAAC,EAAI,EAAE,CAAC,EAC/G,MAAO,CAAC,KAAM,EAAE,SAAU,CACxB,IAAK,kBACL,GAAG,gBAAgB,MACnB,SAAU,MAAM,gBAAkB,WAClC,SAAU,GACV,cAAe,OACf,MAAO,0BACN,OAAO,CAAC,CACb,CACF,EACD,EAMM,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,OAAQ,SAAU,IAAI,EACrC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,sBAAsB,aAAa,EAChD,MAAM,UAAkC,OAAO,OAAO,CACpD,IAAI,OAAK,CAAK,OAAO,MAAM,KAAO,EAClC,IAAI,UAAQ,CAAK,KAAK,eAAe,IAAI,MAAM,KAAK,EAAG,OAAO,KAAK,WAAW,MAAM,KAAK,CAAG,EAC5F,IAAI,aAAW,CAAK,KAAK,eAAe,IAAI,MAAM,KAAK,EAAG,OAAO,KAAK,cAAc,MAAM,KAAK,CAAG,EAClG,IAAI,UAAQ,CAAK,KAAK,eAAe,IAAI,MAAM,KAAK,EAAG,OAAO,KAAK,MAAM,UAAY,MAAM,UAAY,KAAK,eAAe,MAAM,KAAK,CAAG,EAC1I,EACD,QAA4B,sBAAuB,CAAE,SAAS,CAAE,EAChE,MAAM,WAAa,SAAS,IAAK,CAC/B,MAAM,SAAW,UAAU,SAC3B,MAAM,YAAc,UAAU,YAC9B,MAAM,SAAW,UAAU,SAC3B,OAAO,yBACL,CACE,OAAQ,CAAE,QAAS,YAAc,MAAM,MAAQ,IAAI,EACnD,UAAW,CAAE,IAAM,IAAe,KAAO,MAAM,OAAS,QAAQ,GAElE,CAAE,GAAI,MAAM,MAAO,SAAU,MAAM,QAAQ,EAC3C,CAAE,SAAU,UAAW,KAAK,OAAO,MAAM,KAAK,CAAC,CAAE,CAErD,CAAC,EACD,MAAM,YAAe,OAA2B,CAC9C,GAAI,CAAC,MAAM,kBAAoB,CAAC,UAAU,SAAU,CAClD,KAAK,OAAO,MAAM,MAAO,MAAM,aAA4B,CAC7D,CACF,EACA,MAAO,IAAkB,EAAE,UAAW,WACpC,MACA,WAAW,MACX,CAAE,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,QAAS,YAC/C,GAAI,KAAK,YAAc,OAAY,CAAA,EAAK,CAAE,eAAgB,KAAK,UAAW,gBAAiB,KAAK,aAAa,MAAM,KAAK,CAAC,CAAG,CAAE,EAC/H,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,SAAS,CAAC,CAAE,CACrD,EACD,EAEM,MAAM,gBAAkB,gBAAgB,CAC7C,KAAM,yBACN,aAAc,MACd,MAAO,iBACP,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,sBAAsB,iBAAiB,EACpD,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,CACtD,GAAI,MAAM,GACV,QAAS,MAAM,QACf,aAAc,UACd,YAAa,YACb,aAAc,KAAK,UAAU,SAAW,UAAY,YACrD,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,KAAK,SAAS,CAAC,CAAE,CAC3D,EACD,EAEM,MAAM,qBAAuB,gBAAgB,CAClD,KAAM,8BACN,aAAc,MACd,MAAO,CAAE,GAAG,iBAAkB,GAAG,wBAAwB,EACzD,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,sBAAsB,sBAAsB,EACzD,MAAM,KAAO,sBAAsB,sBAAsB,EACzD,MAAO,IAAiB,CACtB,MAAM,MAAQ,KAAK,UACnB,OAAO,EAAE,UAAW,WAAW,MAAO,CACpC,GAAI,MAAM,GACV,QAAS,MAAM,QACf,WAAa,SAAqB,KAAK,kBAAkB,SAAS,MAAM,MAAO,OAAO,EACtF,OAAQ,CAAC,KAAK,kBAAkB,UAAU,MAAM,MAAO,MAAM,SAAU,MAAM,YAAY,EACzF,cAAe,OACf,aAAc,UACd,YAAa,iBACb,aAAc,MAAM,SAAW,UAAY,YAC5C,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,KAAK,CAAC,CAAE,CAClD,CACF,EACD,EAED,SAAS,sBAAsB,KAAY,CACzC,MAAM,QAAU,OAA2B,qBAAqB,EAChE,GAAI,UAAY,OAAW,MAAM,IAAI,UAAU,GAAG,IAAI,mCAAmC,EACzF,OAAO,OACT,CAEA,SAAS,+BACP,MAA6B,CAE7B,OAAO,OAAO,OAAO,CACnB,GAAG,MACH,MAAO,OAAO,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC,EACrC,cAAe,OAAO,OAAO,CAAC,GAAG,MAAM,aAAa,CAAC,EACtD,CACH,CAEA,SAAS,2BACP,KACA,MAA6B,CAE7B,OAAO,QAAQ,KAAK,MAAO,MAAM,KAAK,GACjC,QAAQ,KAAK,cAAe,MAAM,aAAa,GAC/C,KAAK,gBAAkB,MAAM,eAC7B,KAAK,WAAa,MAAM,UACxB,KAAK,WAAa,MAAM,UACxB,KAAK,cAAgB,MAAM,aAC3B,KAAK,YAAc,MAAM,WACzB,KAAK,YAAc,MAAM,SAChC,CAEA,SAAS,iBAAiB,MAA6B,CACrD,GAAI,MAAM,cAAc,SAAW,EAAG,OAAO,MAAM,MAAM,CAAC,EAC1D,MAAM,SAAW,IAAI,IAAI,MAAM,aAAa,EAC5C,OAAO,MAAM,MAAM,KAAM,IAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CACnD,CAEA,SAAS,sBAAsB,KAAY,CACzC,MAAM,QAAU,OAA2B,qBAAqB,EAChE,GAAI,UAAY,OAAW,MAAM,IAAI,UAAU,GAAG,IAAI,mCAAmC,EACzF,OAAO,OACT,CAEA,SAAS,iBACP,WACA,MACA,iBACA,MACA,KAAiB,CAEjB,MAAM,OAAS,iCAAiC,CAC9C,MAAO,MAAM,MACb,cAAe,MAAM,cACrB,cAAe,MAAM,cACrB,SAAU,MAAM,SAChB,SAAU,MAAM,SAChB,YAAa,MAAM,YACnB,UAAW,MAAM,UACjB,UAAW,CAAE,UAAW,MAAM,YAAe,IAAO,GAAG,EACvD,GAAI,WAAa,CAAE,KAAK,EAAK,CAAE,aAAc,KAAK,EAClD,wBAAyB,iBACzB,cAAgB,QAAW,KAAK,oBAAqB,QAAQ,OAAO,MAAO,MAAM,aAAa,CAAC,EAC/F,yBAA2B,QAAW,KAAK,YAAa,OAAO,KAAK,EACrE,EACD,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EACxD,OAAO,OAAO,KAChB,CAEA,SAAS,aAAa,QAA2C,KAAiB,CAChF,UAAW,UAAU,QAAS,CAC5B,GAAI,OAAO,OAAS,sBAAuB,KAAK,WAAY,OAAO,EAAE,CACvE,CACF,CAEA,SAAS,MAAM,MAAiC,KAA0B,CACxE,GAAI,QAAU,QAAa,QAAU,GAAI,MAAO,CAAA,EAChD,GAAI,MAAM,QAAQ,KAAK,EAAG,OAAO,OAAS,SAAW,MAAM,MAAM,EAAG,CAAC,EAAI,MACzE,MAAO,CAAC,KAAe,CACzB,CAEA,SAAS,QAAQ,MAA0B,KAA0B,CACnE,OAAO,OAAS,SAAW,MAAM,CAAC,GAAK,GAAK,KAC9C","names":[],"file":"listbox.js"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Ref, type ShallowRef } from 'vue';
|
|
2
|
+
import { type Result } from '@sectile/core/result';
|
|
3
|
+
import type { Point } from '@sectile/core/geometry';
|
|
4
|
+
import { type MediaGestureErrorCode, type MediaGestureOptions, type MediaViewportMeasurement } from '@sectile/dom/media-gesture';
|
|
5
|
+
export type { MediaGestureInput, MediaGestureEnd, MediaGestureErrorCode, MediaWheelInput, MediaViewportMeasurement } from '@sectile/dom/media-gesture';
|
|
6
|
+
export interface UseMediaGestureOptions extends Omit<MediaGestureOptions, 'element'> {
|
|
7
|
+
readonly element: Readonly<Ref<HTMLElement | null>>;
|
|
8
|
+
readonly active?: Readonly<Ref<boolean>>;
|
|
9
|
+
}
|
|
10
|
+
interface MediaGestureMethods {
|
|
11
|
+
cancel(): void;
|
|
12
|
+
measure(): Result<MediaViewportMeasurement<readonly []>, MediaGestureErrorCode>;
|
|
13
|
+
measure<const Points extends readonly Point[]>(points: Points): Result<MediaViewportMeasurement<Points>, MediaGestureErrorCode>;
|
|
14
|
+
}
|
|
15
|
+
export interface UseMediaGestureReturn extends MediaGestureMethods {
|
|
16
|
+
/** Native connection admission failure; undefined before mount and while inactive. */
|
|
17
|
+
readonly error: Readonly<ShallowRef<MediaGestureErrorCode | undefined>>;
|
|
18
|
+
}
|
|
19
|
+
/** Vue lifetime over native facts; media projection and state stay with their owners. */
|
|
20
|
+
export declare function useMediaGesture(options: UseMediaGestureOptions): UseMediaGestureReturn;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{getCurrentInstance,isRef,shallowReadonly,shallowRef}from"vue";import{failResult}from"@sectile/core/result";import{connectMediaGesture,readMediaViewport}from"@sectile/dom/media-gesture";import{createComponentHandle}from"./component-handle.js";import{useHostActive}from"./host-provider.js";import{useConnectionLifetime}from"./internal/connection-lifetime.js";function projectMethods(current){function measure(points=[]){const target=current()?.element;return target?readMediaViewport(target,points):failResult("resource-rejection","dom.media-gesture-unavailable","No active media gesture surface")}return Object.freeze({cancel:()=>current()?.connection.cancel(),measure})}function useMediaGesture(options){if(!getCurrentInstance())throw Object.assign(new TypeError("useMediaGesture requires component setup"),{code:"vue.media-gesture-scope-required"});if(!isRef(options.element)||options.active!==void 0&&(!isRef(options.active)||typeof options.active.value!=="boolean")||typeof options.onStart!=="function"||typeof options.onMove!=="function"||options.onEnd!==void 0&&typeof options.onEnd!=="function"||options.onWheel!==void 0&&typeof options.onWheel!=="function"){throw Object.assign(new TypeError("useMediaGesture requires reactive participation and native input hooks"),{code:"vue.media-gesture-invalid"})}let element=options.element,active=options.active;let start=options.onStart,move=options.onMove;let end=options.onEnd,wheel=options.onWheel,host=useHostActive();let alive=true,native,epoch,retiring;const error=shallowRef(),handle=createComponentHandle(projectMethods);const release=()=>{const held=native,token=epoch;native=void 0;epoch=void 0;handle.release();retiring=token;try{held?.disconnect()}finally{retiring=void 0;error.value=void 0}};const failed=failure=>{try{release()}catch{}throw failure};const read=()=>{const enabled=alive&&host?.value!==false&&active?.value!==false;return[enabled?element?.value??null:null,enabled]};const attach=([target,enabled])=>{if(!target||!enabled)return;const token={};epoch=token;const result=connectMediaGesture({element:target,onStart(input){if(!alive||epoch!==token)return false;try{const accepted=start?.(input)??false;return accepted&&alive&&epoch===token}catch(failure){return failed(failure)}},onMove(input){if(alive&&epoch===token){try{move?.(input)}catch(failure){failed(failure)}}},onEnd(reason){if(alive&&(epoch===token||reason==="disconnect"&&retiring===token)){try{end?.(reason)}catch(failure){failed(failure)}}},...wheel===void 0?{}:{onWheel(input){if(!alive||epoch!==token)return false;try{const accepted=wheel?.(input)??false;return accepted&&alive&&epoch===token}catch(failure){return failed(failure)}}}});if(result.ok){if(alive&&epoch===token){native=result.value;handle.set({connection:native,element:target})}else result.value.disconnect()}else if(epoch===token){epoch=void 0;error.value=result.error.code}};useConnectionLifetime({read,equal:(next,previous)=>next[0]===previous[0]&&next[1]===previous[1],connect:attach,disconnect:release,dispose(){alive=false;element=void 0;active=void 0;host=void 0;start=void 0;move=void 0;end=void 0;wheel=void 0}});return Object.freeze({...handle.view,error:shallowReadonly(error)})}export{useMediaGesture};
|
|
2
|
+
//# sourceMappingURL=media-gesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/media-gesture.ts"],"mappings":"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","names":[],"file":"media-gesture.js"}
|