@sectile/vue 0.18.2 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +53 -14
  2. package/dist/accordion.js +1 -1
  3. package/dist/accordion.js.map +1 -1
  4. package/dist/carousel.d.ts +20 -0
  5. package/dist/carousel.js +1 -1
  6. package/dist/carousel.js.map +1 -1
  7. package/dist/cascade-list.js +1 -1
  8. package/dist/cascade-list.js.map +1 -1
  9. package/dist/cascade-select.js +1 -1
  10. package/dist/cascade-select.js.map +1 -1
  11. package/dist/chart.js +1 -1
  12. package/dist/chart.js.map +1 -1
  13. package/dist/checkbox-group.js +1 -1
  14. package/dist/checkbox-group.js.map +1 -1
  15. package/dist/checkbox-tree.d.ts +102 -0
  16. package/dist/checkbox-tree.js +2 -0
  17. package/dist/checkbox-tree.js.map +1 -0
  18. package/dist/checkbox.js +1 -1
  19. package/dist/checkbox.js.map +1 -1
  20. package/dist/color-picker.d.ts +24 -0
  21. package/dist/color-picker.js +1 -1
  22. package/dist/color-picker.js.map +1 -1
  23. package/dist/combobox.d.ts +47 -1
  24. package/dist/combobox.js +1 -1
  25. package/dist/combobox.js.map +1 -1
  26. package/dist/component-handle.d.ts +8 -0
  27. package/dist/component-handle.js +2 -0
  28. package/dist/component-handle.js.map +1 -0
  29. package/dist/context-menu.d.ts +1 -0
  30. package/dist/context-menu.js +2 -0
  31. package/dist/context-menu.js.map +1 -0
  32. package/dist/drag-drop.d.ts +23 -0
  33. package/dist/drag-drop.js +2 -0
  34. package/dist/drag-drop.js.map +1 -0
  35. package/dist/editable.d.ts +3 -0
  36. package/dist/editable.js +1 -1
  37. package/dist/editable.js.map +1 -1
  38. package/dist/form/context.d.ts +3 -0
  39. package/dist/form/context.js +1 -1
  40. package/dist/form/context.js.map +1 -1
  41. package/dist/form/contracts.d.ts +1 -0
  42. package/dist/form/control-inventory.d.ts +20 -0
  43. package/dist/form/control-inventory.js +1 -1
  44. package/dist/form/control-inventory.js.map +1 -1
  45. package/dist/form/control.d.ts +44 -1
  46. package/dist/form/control.js +1 -1
  47. package/dist/form/control.js.map +1 -1
  48. package/dist/form/field.d.ts +10 -0
  49. package/dist/form/field.js +1 -1
  50. package/dist/form/field.js.map +1 -1
  51. package/dist/form/file-input.d.ts +229 -0
  52. package/dist/form/file-input.js +2 -0
  53. package/dist/form/file-input.js.map +1 -0
  54. package/dist/form/file-upload/group.d.ts +28 -0
  55. package/dist/form/file-upload/group.js +2 -0
  56. package/dist/form/file-upload/group.js.map +1 -0
  57. package/dist/form/file-upload.d.ts +26 -0
  58. package/dist/form/file-upload.js +2 -0
  59. package/dist/form/file-upload.js.map +1 -0
  60. package/dist/form/root.js +1 -1
  61. package/dist/form/root.js.map +1 -1
  62. package/dist/form-boundary.d.ts +2 -0
  63. package/dist/form-boundary.js +2 -0
  64. package/dist/form-boundary.js.map +1 -0
  65. package/dist/fullscreen.d.ts +16 -0
  66. package/dist/fullscreen.js +2 -0
  67. package/dist/fullscreen.js.map +1 -0
  68. package/dist/host-provider.d.ts +99 -1
  69. package/dist/host-provider.js +1 -1
  70. package/dist/host-provider.js.map +1 -1
  71. package/dist/image.d.ts +24 -0
  72. package/dist/image.js +2 -0
  73. package/dist/image.js.map +1 -0
  74. package/dist/index.d.ts +6 -5
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/input/native-field.d.ts +25 -6
  78. package/dist/input/native-field.js +1 -1
  79. package/dist/input/native-field.js.map +1 -1
  80. package/dist/input/native-range-field.d.ts +95 -0
  81. package/dist/input/native-range-field.js +2 -0
  82. package/dist/input/native-range-field.js.map +1 -0
  83. package/dist/internal/cascade-choice.js +1 -1
  84. package/dist/internal/cascade-choice.js.map +1 -1
  85. package/dist/internal/connection-lifetime.d.ts +10 -0
  86. package/dist/internal/connection-lifetime.js +2 -0
  87. package/dist/internal/connection-lifetime.js.map +1 -0
  88. package/dist/internal/controlled-state.js +1 -1
  89. package/dist/internal/controlled-state.js.map +1 -1
  90. package/dist/internal/popup-presentation.d.ts +32 -0
  91. package/dist/internal/popup-presentation.js +2 -0
  92. package/dist/internal/popup-presentation.js.map +1 -0
  93. package/dist/internal/portal-move.d.ts +11 -0
  94. package/dist/internal/portal-move.js +2 -0
  95. package/dist/internal/portal-move.js.map +1 -0
  96. package/dist/internal/scheduled-task.js +1 -1
  97. package/dist/internal/scheduled-task.js.map +1 -1
  98. package/dist/internal/tabs-context.d.ts +11 -0
  99. package/dist/internal/tabs-context.js +1 -1
  100. package/dist/internal/tabs-context.js.map +1 -1
  101. package/dist/internal/tree-parts.d.ts +142 -0
  102. package/dist/internal/tree-parts.js +2 -0
  103. package/dist/internal/tree-parts.js.map +1 -0
  104. package/dist/listbox.d.ts +11 -0
  105. package/dist/listbox.js +1 -1
  106. package/dist/listbox.js.map +1 -1
  107. package/dist/media-gesture.d.ts +20 -0
  108. package/dist/media-gesture.js +2 -0
  109. package/dist/media-gesture.js.map +1 -0
  110. package/dist/menu.d.ts +239 -0
  111. package/dist/menu.js +1 -1
  112. package/dist/menu.js.map +1 -1
  113. package/dist/meter-group.js +1 -1
  114. package/dist/meter-group.js.map +1 -1
  115. package/dist/multi-thumb-slider.js +1 -1
  116. package/dist/multi-thumb-slider.js.map +1 -1
  117. package/dist/overlay/dialog.d.ts +1 -0
  118. package/dist/overlay/dialog.js.map +1 -1
  119. package/dist/overlay/drawer.d.ts +33 -4
  120. package/dist/overlay/drawer.js +1 -1
  121. package/dist/overlay/drawer.js.map +1 -1
  122. package/dist/overlay/popover.d.ts +2 -1
  123. package/dist/overlay/popover.js.map +1 -1
  124. package/dist/overlay/popup.d.ts +46 -2
  125. package/dist/overlay/popup.js +1 -1
  126. package/dist/overlay/popup.js.map +1 -1
  127. package/dist/overlay/tooltip.d.ts +37 -3
  128. package/dist/overlay/tooltip.js +1 -1
  129. package/dist/overlay/tooltip.js.map +1 -1
  130. package/dist/pagination.js +1 -1
  131. package/dist/pagination.js.map +1 -1
  132. package/dist/pin-input.js +1 -1
  133. package/dist/pin-input.js.map +1 -1
  134. package/dist/presence/presence.d.ts +1 -1
  135. package/dist/presence/presence.js +1 -1
  136. package/dist/presence/presence.js.map +1 -1
  137. package/dist/primitive.d.ts +37 -3
  138. package/dist/primitive.js +1 -1
  139. package/dist/primitive.js.map +1 -1
  140. package/dist/quantity-field.js +1 -1
  141. package/dist/quantity-field.js.map +1 -1
  142. package/dist/radio-group.js +1 -1
  143. package/dist/radio-group.js.map +1 -1
  144. package/dist/rating.js +1 -1
  145. package/dist/rating.js.map +1 -1
  146. package/dist/reorder.d.ts +156 -77
  147. package/dist/reorder.js +1 -1
  148. package/dist/reorder.js.map +1 -1
  149. package/dist/select.d.ts +21 -0
  150. package/dist/select.js +1 -1
  151. package/dist/select.js.map +1 -1
  152. package/dist/slider.js +1 -1
  153. package/dist/slider.js.map +1 -1
  154. package/dist/spin-button.d.ts +19 -0
  155. package/dist/spin-button.js +1 -1
  156. package/dist/spin-button.js.map +1 -1
  157. package/dist/stepper.js +1 -1
  158. package/dist/stepper.js.map +1 -1
  159. package/dist/switch.js +1 -1
  160. package/dist/switch.js.map +1 -1
  161. package/dist/tabs.d.ts +2 -0
  162. package/dist/tabs.js +1 -1
  163. package/dist/tabs.js.map +1 -1
  164. package/dist/tabular/components.d.ts +5 -0
  165. package/dist/tabular/components.js.map +1 -1
  166. package/dist/tabular/controller.d.ts +1 -0
  167. package/dist/tabular/controller.js +1 -1
  168. package/dist/tabular/controller.js.map +1 -1
  169. package/dist/tabular/data-grid.d.ts +4 -4
  170. package/dist/tabular/data-grid.js +1 -1
  171. package/dist/tabular/data-grid.js.map +1 -1
  172. package/dist/tabular/data-table.d.ts +4 -4
  173. package/dist/tabular/data-table.js +1 -1
  174. package/dist/tabular/data-table.js.map +1 -1
  175. package/dist/tabular/data-tree-grid.d.ts +4 -4
  176. package/dist/tabular/data-tree-grid.js +1 -1
  177. package/dist/tabular/data-tree-grid.js.map +1 -1
  178. package/dist/tabular/parts.d.ts +11 -1
  179. package/dist/tabular/parts.js +1 -1
  180. package/dist/tabular/parts.js.map +1 -1
  181. package/dist/tabular/source.js +1 -1
  182. package/dist/tabular/source.js.map +1 -1
  183. package/dist/tags-input.d.ts +12 -1
  184. package/dist/tags-input.js +1 -1
  185. package/dist/tags-input.js.map +1 -1
  186. package/dist/temporal/calendar.d.ts +27 -123
  187. package/dist/temporal/calendar.js +1 -1
  188. package/dist/temporal/calendar.js.map +1 -1
  189. package/dist/temporal/capabilities/date-picker.js +1 -1
  190. package/dist/temporal/capabilities/date-picker.js.map +1 -1
  191. package/dist/temporal/capabilities/date-time-picker.js +1 -1
  192. package/dist/temporal/capabilities/date-time-picker.js.map +1 -1
  193. package/dist/temporal/capabilities/date-time-range-picker.js +1 -1
  194. package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -1
  195. package/dist/temporal/capability.d.ts +13 -1
  196. package/dist/temporal/capability.js.map +1 -1
  197. package/dist/temporal/date-field.d.ts +1 -1
  198. package/dist/temporal/date-field.js +1 -1
  199. package/dist/temporal/date-field.js.map +1 -1
  200. package/dist/temporal/date-picker.d.ts +16 -14
  201. package/dist/temporal/date-picker.js +1 -1
  202. package/dist/temporal/date-picker.js.map +1 -1
  203. package/dist/temporal/date-range-field.d.ts +21 -1
  204. package/dist/temporal/date-range-field.js +1 -1
  205. package/dist/temporal/date-range-field.js.map +1 -1
  206. package/dist/temporal/date-range-picker.d.ts +16 -14
  207. package/dist/temporal/date-range-picker.js +1 -1
  208. package/dist/temporal/date-range-picker.js.map +1 -1
  209. package/dist/temporal/date-time-field.d.ts +4 -1
  210. package/dist/temporal/date-time-field.js +1 -1
  211. package/dist/temporal/date-time-field.js.map +1 -1
  212. package/dist/temporal/date-time-picker.d.ts +16 -14
  213. package/dist/temporal/date-time-picker.js +1 -1
  214. package/dist/temporal/date-time-picker.js.map +1 -1
  215. package/dist/temporal/date-time-range-field.d.ts +158 -0
  216. package/dist/temporal/date-time-range-field.js +2 -0
  217. package/dist/temporal/date-time-range-field.js.map +1 -0
  218. package/dist/temporal/date-time-range-picker.d.ts +16 -14
  219. package/dist/temporal/date-time-range-picker.js +1 -1
  220. package/dist/temporal/date-time-range-picker.js.map +1 -1
  221. package/dist/temporal/internal/time-presentation.d.ts +15 -0
  222. package/dist/temporal/internal/time-presentation.js +2 -0
  223. package/dist/temporal/internal/time-presentation.js.map +1 -0
  224. package/dist/temporal/month-picker.d.ts +9 -7
  225. package/dist/temporal/month-picker.js +1 -1
  226. package/dist/temporal/month-picker.js.map +1 -1
  227. package/dist/temporal/month-range-picker.d.ts +9 -7
  228. package/dist/temporal/month-range-picker.js +1 -1
  229. package/dist/temporal/month-range-picker.js.map +1 -1
  230. package/dist/temporal/picker.d.ts +24 -3
  231. package/dist/temporal/picker.js +1 -1
  232. package/dist/temporal/picker.js.map +1 -1
  233. package/dist/temporal/range-calendar.d.ts +125 -8
  234. package/dist/temporal/range-calendar.js +1 -1
  235. package/dist/temporal/range-calendar.js.map +1 -1
  236. package/dist/temporal/temporal-provider.d.ts +23 -0
  237. package/dist/temporal/temporal-provider.js +1 -1
  238. package/dist/temporal/temporal-provider.js.map +1 -1
  239. package/dist/temporal/time-field.d.ts +4 -1
  240. package/dist/temporal/time-field.js +1 -1
  241. package/dist/temporal/time-field.js.map +1 -1
  242. package/dist/temporal/time-picker.d.ts +112 -0
  243. package/dist/temporal/time-picker.js +2 -0
  244. package/dist/temporal/time-picker.js.map +1 -0
  245. package/dist/temporal/time-range-field.d.ts +33 -2
  246. package/dist/temporal/time-range-field.js +1 -1
  247. package/dist/temporal/time-range-field.js.map +1 -1
  248. package/dist/temporal/year-picker.d.ts +9 -7
  249. package/dist/temporal/year-picker.js +1 -1
  250. package/dist/temporal/year-picker.js.map +1 -1
  251. package/dist/temporal/year-range-picker.d.ts +9 -7
  252. package/dist/temporal/year-range-picker.js +1 -1
  253. package/dist/temporal/year-range-picker.js.map +1 -1
  254. package/dist/text.d.ts +43 -1
  255. package/dist/text.js +1 -1
  256. package/dist/text.js.map +1 -1
  257. package/dist/timer.d.ts +16 -5
  258. package/dist/timer.js +1 -1
  259. package/dist/timer.js.map +1 -1
  260. package/dist/toast.js +1 -1
  261. package/dist/toast.js.map +1 -1
  262. package/dist/toggle-group.js +1 -1
  263. package/dist/toggle-group.js.map +1 -1
  264. package/dist/toolbar.js +1 -1
  265. package/dist/toolbar.js.map +1 -1
  266. package/dist/transfer.d.ts +191 -0
  267. package/dist/transfer.js +2 -0
  268. package/dist/transfer.js.map +1 -0
  269. package/dist/tree-grid.d.ts +122 -0
  270. package/dist/tree-grid.js +1 -1
  271. package/dist/tree-grid.js.map +1 -1
  272. package/dist/tree-select.d.ts +186 -0
  273. package/dist/tree-select.js +2 -0
  274. package/dist/tree-select.js.map +1 -0
  275. package/dist/tree-view.js +1 -1
  276. package/dist/tree-view.js.map +1 -1
  277. package/dist/virtual/virtual-collection.d.ts +3 -0
  278. package/dist/virtual/virtual-collection.js +1 -1
  279. package/dist/virtual/virtual-collection.js.map +1 -1
  280. package/dist/virtual/virtual-core.d.ts +1 -0
  281. package/dist/virtual/virtual-core.js +1 -1
  282. package/dist/virtual/virtual-core.js.map +1 -1
  283. package/dist/virtual/virtual-grid.d.ts +12 -2
  284. package/dist/virtual/virtual-grid.js +1 -1
  285. package/dist/virtual/virtual-grid.js.map +1 -1
  286. package/dist/virtual/virtual-list.d.ts +12 -3
  287. package/dist/virtual/virtual-list.js +1 -1
  288. package/dist/virtual/virtual-list.js.map +1 -1
  289. package/dist/virtual/virtual-masonry.d.ts +12 -2
  290. package/dist/virtual/virtual-masonry.js +1 -1
  291. package/dist/virtual/virtual-masonry.js.map +1 -1
  292. package/dist/virtual/virtual-spatial.d.ts +12 -2
  293. package/dist/virtual/virtual-spatial.js +1 -1
  294. package/dist/virtual/virtual-spatial.js.map +1 -1
  295. package/dist/window-splitter.js +1 -1
  296. package/dist/window-splitter.js.map +1 -1
  297. package/package.json +86 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toggle-group.ts"],"mappings":"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","names":["value"],"file":"toggle-group.js"}
1
+ {"version":3,"sources":["../src/toggle-group.ts"],"mappings":"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","names":["value"],"file":"toggle-group.js"}
package/dist/toolbar.js CHANGED
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createToolbar}from"@sectile/dom/toolbar";import{Primitive}from"./primitive.js";import{useHostDirection}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileToolbarRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const ToolbarRoot=defineComponent({name:"SectileToolbarRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,invoke:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const direction=useHostDirection();const root=shallowRef();const connection=shallowRef();const current=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const controlled=useControlledStateInvariant("ToolbarRoot","modelValue",()=>props.modelValue);const state=computed(()=>({highlightedValue:props.modelValue!==void 0?props.modelValue:current.value,disabled:props.disabled,orientation:props.orientation}));const refresh=()=>{if(connection.value!==void 0)current.value=connection.value.getSnapshot().state.cursor.current;refreshItems()};const refreshItems=()=>{if(root.value===void 0||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-toolbar-id]").forEach(element=>{const id=element.dataset["sectileToolbarId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0)return;const requested=controlled?props.modelValue:current.value;const reconciled=reconcileCollectionState(props.items,[],requested,props.disabledItems,"single",{preserveNullCurrent:true});current.value=reconciled.current;if(controlled&&requested!==reconciled.current)emit("update:modelValue",reconciled.current);connection.value=createToolbar({root:root.value,items:props.items,disabledItems:props.disabledItems,...props.policies===void 0?{}:{policies:props.policies},...controlled?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabled:props.disabled,orientation:props.orientation,direction:direction.value,...props.label===void 0?{}:{label:props.label},onHighlightedValueChange:value=>{current.value=value;emit("update:modelValue",value)},onInvoke:value=>emit("invoke",value),onUpdate:refresh});refreshItems();refresh()};provide(key,{state,disabledItems:computed(()=>new Set(props.disabledItems)),register:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.orientation,()=>props.label,()=>props.policies,direction],connect);watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection.value===void 0)return;const result=connection.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.value=node instanceof HTMLElement?node:void 0},role:"toolbar","aria-label":props.label,"aria-orientation":props.orientation,"aria-disabled":props.disabled?"true":void 0,dir:direction.value,"data-scope":"toolbar","data-part":"root","data-orientation":props.orientation}),{default:()=>slots["default"]?.(state.value)})}});const ToolbarItem=defineComponent({name:"SectileToolbarItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const state=computed(()=>({value:props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,elementRef:node=>{if(node instanceof HTMLElement)root.register(node,props.value,state.value.disabled)},disabled:state.value.disabled&&props.as==="button"?true:void 0,"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-toolbar-id":props.value,"data-scope":"toolbar","data-part":"item","data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ToolbarSeparator=defineComponent({name:"SectileToolbarSeparator",inheritAttrs:false,props:partProps,setup(props,{attrs}){const root=useRoot();return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"separator","aria-orientation":root.state.value.orientation,"data-scope":"toolbar","data-part":"separator"}))}});function useRoot(){const root=inject(key);if(root===void 0)throw new TypeError("Toolbar parts must be used inside ToolbarRoot.");return root}export{ToolbarItem,ToolbarRoot,ToolbarSeparator};
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createToolbar}from"@sectile/dom/toolbar";import{Primitive}from"./primitive.js";import{useHostDirection}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileToolbarRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const ToolbarRoot=defineComponent({name:"SectileToolbarRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,invoke:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const direction=useHostDirection();const root=shallowRef();const connection=shallowRef();const current=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const controlled=useControlledStateInvariant("ToolbarRoot","modelValue",()=>props.modelValue);const state=computed(()=>({highlightedValue:props.modelValue!==void 0?props.modelValue:current.value,disabled:props.disabled,orientation:props.orientation}));const refresh=()=>{if(connection.value!==void 0)current.value=connection.value.getSnapshot().state.cursor.current;refreshItems()};const refreshItems=()=>{if(root.value===void 0||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-toolbar-id]").forEach(element=>{const id=element.dataset["sectileToolbarId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0)return;const requested=controlled?props.modelValue:current.value;const reconciled=reconcileCollectionState(props.items,[],requested,props.disabledItems,"single",{preserveNullCurrent:true});current.value=reconciled.current;if(controlled&&requested!==reconciled.current)emit("update:modelValue",reconciled.current);connection.value=createToolbar({root:root.value,items:props.items,disabledItems:props.disabledItems,...props.policies===void 0?{}:{policies:props.policies},...controlled?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabled:props.disabled,orientation:props.orientation,direction:direction.value,...props.label===void 0?{}:{label:props.label},onHighlightedValueChange:value=>{current.value=value;emit("update:modelValue",value)},onInvoke:value=>emit("invoke",value),onUpdate:refresh});refreshItems();refresh()};provide(key,{state,disabledItems:computed(()=>new Set(props.disabledItems)),register:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.orientation,()=>props.label,()=>props.policies,direction],connect);watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection.value===void 0)return;const result=connection.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.value=node instanceof HTMLElement?node:void 0},role:"toolbar","aria-label":props.label,"aria-orientation":props.orientation,"aria-disabled":props.disabled?"true":void 0,dir:direction.value,"data-scope":"toolbar","data-part":"root","data-orientation":props.orientation}),{default:()=>slots["default"]?.(state.value)})}});const ToolbarItem=defineComponent({name:"SectileToolbarItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const state=computed(()=>({value:props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,elementRef:node=>{if(node instanceof HTMLElement)root.register(node,props.value,state.value.disabled)},disabled:state.value.disabled&&props.as==="button"?true:void 0,"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-toolbar-id":props.value,"data-scope":"toolbar","data-part":"item","data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ToolbarSeparator=defineComponent({name:"SectileToolbarSeparator",inheritAttrs:false,props:partProps,setup(props,{attrs}){const root=useRoot();return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"separator","aria-orientation":root.state.value.orientation==="horizontal"?"vertical":"horizontal","data-scope":"toolbar","data-part":"separator"}))}});function useRoot(){const root=inject(key);if(root===void 0)throw new TypeError("Toolbar parts must be used inside ToolbarRoot.");return root}export{ToolbarItem,ToolbarRoot,ToolbarSeparator};
2
2
  //# sourceMappingURL=toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toolbar.ts"],"mappings":"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","names":[],"file":"toolbar.js"}
1
+ {"version":3,"sources":["../src/toolbar.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,gBAAiB,UAAW,QAC9E,WAAY,UACP,MACP,OAAS,kBAAmE,uBAC5E,OAAS,cAAmC,iBAC5C,OAAS,qBAAwB,qBACjC,OAAS,6BAAgC,2BACzC,OAAS,gCAAmC,iCAQ5C,MAAM,IAAM,OAAO,oBAAoB,EAAG,MAAM,UAAY,CAAE,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAAI,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,CAAE,EAEpL,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBAAsB,aAAc,MAC1C,MAAO,CACL,MAAO,CAAE,KAAM,MAAsC,SAAU,IAAI,EAAI,WAAY,CAAE,KAAM,OAAmC,QAAS,MAAS,EAChJ,aAAc,CAAE,KAAM,OAAmC,QAAS,IAAI,EAAI,cAAe,CAAE,KAAM,MAAsC,QAAS,IAAM,CAAA,CAAE,EACxJ,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EAAI,YAAa,CAAE,KAAM,OAA+C,QAAS,YAAY,EACtI,MAAO,CAAE,KAAM,OAAQ,QAAS,MAAS,EAAI,SAAU,CAAE,KAAM,OAA6C,QAAS,MAAS,EAC9H,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAAI,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE7H,MAAO,CAAE,oBAAsB,QAAmC,KAAM,OAAS,QAA4B,IAAI,EACjH,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAM,KAAK,EAAE,CACjC,MAAM,UAAY,iBAAgB,EAClC,MAAM,KAAO,WAAU,EAAiB,MAAM,WAAa,WAAU,EACrE,MAAM,QAAU,WAA0B,MAAM,aAAe,OAAY,MAAM,WAAa,MAAM,YAAY,EAChH,MAAM,WAAa,4BAA4B,cAAe,aAAc,IAAM,MAAM,UAAU,EAClG,MAAM,MAAQ,SAA+B,KAAO,CAAE,iBAAkB,MAAM,aAAe,OAAY,MAAM,WAAa,QAAQ,MAAO,SAAU,MAAM,SAAU,YAAa,MAAM,WAAW,EAAG,EACtM,MAAM,QAAU,IAAW,CAAG,GAAI,WAAW,QAAU,OAAW,QAAQ,MAAQ,WAAW,MAAM,YAAW,EAAG,MAAM,OAAO,QAAS,aAAY,CAAI,EACvJ,MAAM,aAAe,IAAW,CAAG,GAAI,KAAK,QAAU,QAAa,WAAW,QAAU,OAAW,OAAQ,KAAK,MAAM,iBAA8B,2BAA2B,EAAE,QAAS,SAAW,CAAG,MAAM,GAAK,QAAQ,QAAQ,kBAAkB,EAAG,GAAI,KAAO,OAAW,WAAW,OAAO,kBAAkB,QAAS,GAAI,MAAM,cAAc,SAAS,EAAE,CAAC,CAAG,CAAC,CAAG,EACtW,MAAM,QAAU,IAAW,CACzB,WAAW,OAAO,WAAU,EAAI,GAAI,KAAK,QAAU,OAAW,OAC9D,MAAM,UAAY,WAAa,MAAM,WAA8B,QAAQ,MAC3E,MAAM,WAAa,yBACjB,MAAM,MACN,CAAA,EACA,UACA,MAAM,cACN,SACA,CAAE,oBAAqB,IAAI,CAAE,EAE/B,QAAQ,MAAQ,WAAW,QAC3B,GAAI,YAAc,YAAc,WAAW,QAAS,KAAK,oBAAqB,WAAW,OAAO,EAChG,WAAW,MAAQ,cAAc,CAC/B,KAAM,KAAK,MAAO,MAAO,MAAM,MAAO,cAAe,MAAM,cAC3D,GAAI,MAAM,WAAa,OAAY,CAAA,EAAK,CAAE,SAAU,MAAM,QAAQ,EAClE,GAAI,WAAa,CAAE,iBAAkB,WAAW,OAAO,EAAK,CAAE,wBAAyB,WAAW,OAAO,EACzG,SAAU,MAAM,SAAU,YAAa,MAAM,YAAa,UAAW,UAAU,MAAO,GAAI,MAAM,QAAU,OAAY,CAAA,EAAK,CAAE,MAAO,MAAM,KAAK,EAC/I,yBAA2B,OAAS,CAAG,QAAQ,MAAQ,MAAO,KAAK,oBAAqB,KAAK,CAAG,EAChG,SAAW,OAAU,KAAK,SAAU,KAAK,EAAG,SAAU,QACvD,EAAG,aAAY,EAAI,QAAO,CAC7B,EACA,QAAiB,IAAK,CAAE,MAAO,cAAe,SAAS,IAAM,IAAI,IAAI,MAAM,aAAa,CAAC,EAAG,SAAU,CAAC,QAAS,GAAI,WAAa,WAAW,OAAO,kBAAkB,QAAS,GAAI,QAAQ,CAAC,CAAE,EAC7L,UAAU,OAAO,EAAG,gBAAgB,IAAM,WAAW,OAAO,WAAU,CAAE,EACxE,MAAM,CAAC,IAAM,MAAM,MAAO,IAAM,MAAM,cAAe,IAAM,MAAM,SAAU,IAAM,MAAM,YAAa,IAAM,MAAM,MAAO,IAAM,MAAM,SAAU,SAAS,EAAG,OAAO,EAChK,MAAM,IAAM,MAAM,WAAa,OAAS,CAAG,GAAI,CAAC,YAAc,QAAU,QAAa,WAAW,QAAU,OAAW,OAAQ,MAAM,OAAS,WAAW,MAAM,oBAAoB,KAAK,EAAG,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EAAG,QAAO,CAAI,CAAC,EAChQ,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,CACtD,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,WAAa,MAAiB,CAAG,KAAK,MAAQ,gBAAgB,YAAc,KAAO,MAAW,EACpI,KAAM,UAAW,aAAc,MAAM,MAAO,mBAAoB,MAAM,YAAa,gBAAiB,MAAM,SAAW,OAAS,OAC9H,IAAK,UAAU,MACf,aAAc,UAAW,YAAa,OAAQ,mBAAoB,MAAM,YACzE,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,MAAM,KAAK,CAAC,CAAE,CACxD,EACD,EAKM,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBAAsB,aAAc,MAC1C,MAAO,CAAE,MAAO,CAAE,KAAM,OAAQ,SAAU,IAAI,EAAI,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EAAI,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,QAAQ,EAAI,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,CAAE,EAC/N,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAAI,MAAM,KAAO,QAAO,EAAI,MAAM,MAAQ,SAA+B,KAAO,CAAE,MAAO,MAAM,MAAO,YAAa,KAAK,MAAM,MAAM,mBAAqB,MAAM,MAAO,SAAU,KAAK,MAAM,MAAM,UAAY,MAAM,UAAY,KAAK,cAAc,MAAM,IAAI,MAAM,KAAK,CAAC,EAAG,EAAG,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,CACjW,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,KAAM,MAAM,KAAO,SAAW,SAAW,OAC/E,WAAa,MAAiB,CAAG,GAAI,gBAAgB,YAAa,KAAK,SAAS,KAAM,MAAM,MAAO,MAAM,MAAM,QAAQ,CAAG,EAC1H,SAAU,MAAM,MAAM,UAAY,MAAM,KAAO,SAAW,KAAO,OAAW,gBAAiB,MAAM,MAAM,SAAW,OAAS,OAC7H,0BAA2B,MAAM,MAAO,aAAc,UAAW,YAAa,OAAQ,mBAAoB,MAAM,MAAM,YAAc,GAAK,OAC1I,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,MAAM,KAAK,CAAC,CAAE,CAAG,EAC1D,EAEM,MAAM,iBAAmB,gBAAgB,CAC9C,KAAM,0BAA2B,aAAc,MAAO,MAAO,UAC7D,MAAM,MAAO,CAAE,KAAK,EAAE,CAAI,MAAM,KAAO,QAAO,EAAI,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,CAAE,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,KAAM,YAAa,mBAAoB,KAAK,MAAM,MAAM,cAAgB,aAAe,WAAa,aAAc,aAAc,UAAW,YAAa,WAAW,CAAE,CAAC,CAAG,EAC5T,EAED,SAAS,SAAO,CAAc,MAAM,KAAO,OAAgB,GAAG,EAAG,GAAI,OAAS,OAAW,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO,IAAM","names":[],"file":"toolbar.js"}
@@ -0,0 +1,191 @@
1
+ import { type DefineSetupFnComponent, type EmitsToProps, type PropType, type PublicProps, type SlotsType, type VNodeChild } from 'vue';
2
+ import type { TreeNodeInput } from '@sectile/core/tree';
3
+ import { type TransferControllerPolicies, type TransferMoveProposal, type TransferSide, type TransferTypeaheadOptions } from '@sectile/dom/transfer';
4
+ import { type PrimitiveAs } from './primitive.js';
5
+ export type { TransferSide, TransferMoveProposal, TransferControllerPolicies, TransferTypeaheadOptions } from '@sectile/dom/transfer';
6
+ export interface TransferPartProps {
7
+ readonly as?: PrimitiveAs;
8
+ readonly asChild?: boolean;
9
+ }
10
+ export interface TransferRootProps<ID extends string = string> extends TransferPartProps {
11
+ readonly nodes: readonly TreeNodeInput<ID>[];
12
+ readonly sourceId: NoInfer<ID>;
13
+ readonly targetId: NoInfer<ID>;
14
+ readonly controlled?: boolean;
15
+ readonly sourceValue?: readonly NoInfer<ID>[];
16
+ readonly defaultSourceValue?: readonly NoInfer<ID>[];
17
+ readonly targetValue?: readonly NoInfer<ID>[];
18
+ readonly defaultTargetValue?: readonly NoInfer<ID>[];
19
+ readonly sourceHighlightedValue?: NoInfer<ID> | null;
20
+ readonly defaultSourceHighlightedValue?: NoInfer<ID> | null;
21
+ readonly targetHighlightedValue?: NoInfer<ID> | null;
22
+ readonly defaultTargetHighlightedValue?: NoInfer<ID> | null;
23
+ readonly disabledItems?: readonly NoInfer<ID>[];
24
+ readonly policies?: TransferControllerPolicies<NoInfer<ID>>;
25
+ readonly typeahead?: TransferTypeaheadOptions<NoInfer<ID>>;
26
+ readonly disabled?: boolean;
27
+ readonly?: boolean;
28
+ readonly required?: boolean;
29
+ readonly name?: string;
30
+ readonly form?: string;
31
+ }
32
+ export interface TransferRootSlotProps<ID extends string = string> {
33
+ readonly nodes: readonly TreeNodeInput<ID>[];
34
+ readonly sourceItems: readonly ID[];
35
+ readonly targetItems: readonly ID[];
36
+ readonly sourceValue: readonly ID[];
37
+ readonly targetValue: readonly ID[];
38
+ readonly sourceHighlightedValue: ID | null;
39
+ readonly targetHighlightedValue: ID | null;
40
+ readonly disabled: boolean;
41
+ readonly: boolean;
42
+ }
43
+ export type TransferEmits<ID extends string = string> = {
44
+ 'update:nodes': [nodes: readonly TreeNodeInput<NoInfer<ID>>[]];
45
+ move: [proposal: TransferMoveProposal<NoInfer<ID>>];
46
+ 'update:sourceValue': [value: readonly NoInfer<ID>[]];
47
+ 'update:targetValue': [value: readonly NoInfer<ID>[]];
48
+ 'update:sourceHighlightedValue': [value: NoInfer<ID> | null];
49
+ 'update:targetHighlightedValue': [value: NoInfer<ID> | null];
50
+ activate: [side: TransferSide, id: NoInfer<ID>];
51
+ };
52
+ export interface TransferSlots<ID extends string = string> {
53
+ default?: (state: TransferRootSlotProps<ID>) => VNodeChild;
54
+ }
55
+ export interface TransferExpose<ID extends string = string> {
56
+ readonly element: HTMLElement | null;
57
+ focus(side?: TransferSide): void;
58
+ move(from: TransferSide, ids?: readonly NoInfer<ID>[]): boolean;
59
+ }
60
+ export interface TransferListProps extends TransferPartProps {
61
+ readonly side: TransferSide;
62
+ readonly label?: string;
63
+ }
64
+ export interface TransferItemProps extends TransferPartProps {
65
+ readonly value: string;
66
+ readonly disabled?: never;
67
+ }
68
+ export interface TransferItemSlotProps {
69
+ readonly value: string;
70
+ readonly selected: boolean;
71
+ readonly highlighted: boolean;
72
+ readonly disabled: boolean;
73
+ }
74
+ export interface TransferMoveProps extends TransferPartProps {
75
+ readonly from: TransferSide;
76
+ readonly disabled?: boolean;
77
+ }
78
+ type RootProps<ID extends string> = TransferRootProps<ID> & PublicProps & EmitsToProps<TransferEmits<ID>>;
79
+ type RootInstance<ID extends string> = InstanceType<DefineSetupFnComponent<TransferRootProps<ID>, TransferEmits<ID>, SlotsType<TransferSlots<ID>>>> & TransferExpose<ID>;
80
+ export declare const TransferRoot: new <const ID extends string = string>(props: RootProps<ID>) => Omit<RootInstance<ID>, '$props'> & {
81
+ readonly $props: RootProps<ID>;
82
+ };
83
+ export declare const TransferList: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
84
+ as: {
85
+ type: PropType<PrimitiveAs>;
86
+ default: string;
87
+ };
88
+ asChild: {
89
+ type: BooleanConstructor;
90
+ default: boolean;
91
+ };
92
+ side: {
93
+ type: PropType<TransferSide>;
94
+ required: true;
95
+ };
96
+ label: StringConstructor;
97
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, PublicProps, Readonly<import("vue").ExtractPropTypes<{
98
+ as: {
99
+ type: PropType<PrimitiveAs>;
100
+ default: string;
101
+ };
102
+ asChild: {
103
+ type: BooleanConstructor;
104
+ default: boolean;
105
+ };
106
+ side: {
107
+ type: PropType<TransferSide>;
108
+ required: true;
109
+ };
110
+ label: StringConstructor;
111
+ }>> & Readonly<{}>, {
112
+ as: PrimitiveAs;
113
+ asChild: boolean;
114
+ }, SlotsType<TransferSlots<string>>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
115
+ export declare const TransferItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
116
+ as: {
117
+ type: PropType<PrimitiveAs>;
118
+ default: string;
119
+ };
120
+ asChild: {
121
+ type: BooleanConstructor;
122
+ default: boolean;
123
+ };
124
+ value: {
125
+ type: StringConstructor;
126
+ required: true;
127
+ };
128
+ disabled: {
129
+ type: PropType<never>;
130
+ };
131
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, PublicProps, Readonly<import("vue").ExtractPropTypes<{
132
+ as: {
133
+ type: PropType<PrimitiveAs>;
134
+ default: string;
135
+ };
136
+ asChild: {
137
+ type: BooleanConstructor;
138
+ default: boolean;
139
+ };
140
+ value: {
141
+ type: StringConstructor;
142
+ required: true;
143
+ };
144
+ disabled: {
145
+ type: PropType<never>;
146
+ };
147
+ }>> & Readonly<{}>, {
148
+ as: PrimitiveAs;
149
+ asChild: boolean;
150
+ }, SlotsType<{
151
+ default?: (state: TransferItemSlotProps) => VNodeChild;
152
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
153
+ export declare const TransferMove: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
154
+ as: {
155
+ type: PropType<PrimitiveAs>;
156
+ default: string;
157
+ };
158
+ asChild: {
159
+ type: BooleanConstructor;
160
+ default: boolean;
161
+ };
162
+ from: {
163
+ type: PropType<TransferSide>;
164
+ required: true;
165
+ };
166
+ disabled: {
167
+ type: BooleanConstructor;
168
+ default: boolean;
169
+ };
170
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, PublicProps, Readonly<import("vue").ExtractPropTypes<{
171
+ as: {
172
+ type: PropType<PrimitiveAs>;
173
+ default: string;
174
+ };
175
+ asChild: {
176
+ type: BooleanConstructor;
177
+ default: boolean;
178
+ };
179
+ from: {
180
+ type: PropType<TransferSide>;
181
+ required: true;
182
+ };
183
+ disabled: {
184
+ type: BooleanConstructor;
185
+ default: boolean;
186
+ };
187
+ }>> & Readonly<{}>, {
188
+ as: PrimitiveAs;
189
+ asChild: boolean;
190
+ disabled: boolean;
191
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,2 @@
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,onUpdated,provide,shallowRef,useId,watch}from'vue';import{getTransferItems,synchronizeTransferState}from'@sectile/core/transfer';import{unwrap}from'@sectile/core/result';import{connectTransfer,createTransferController}from'@sectile/dom/transfer';import{getListboxItemAttributes,getListboxRootAttributes}from'@sectile/dom/listbox';import{stableIDElementToken}from'@sectile/dom/identity';import{Primitive}from'./primitive.js';import{useHostActive,useHostDirection}from'./host-provider.js';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{useNextTickTask}from'./internal/scheduled-task.js';import{sameIDs}from'./internal/collection.js';import{hiddenSelectSubmissionCapabilities,provideFormControlOwner,useCompositeFormControl,useFormControlFlags,useFormSubmissionProps}from'./form/control.js';import{visuallyHiddenInputStyle}from'./input/native-input.js';const key=/* @__PURE__ */Symbol('SectileTransfer'),listKey=/* @__PURE__ */Symbol('SectileTransferList');const empty=/* @__PURE__ */Object.freeze([]);const partProps={as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}};function useRoot(name){const root=inject(key);if(!root)throw new TypeError(`${name} must be used inside TransferRoot.`);return root}function createExposure(target){let port=target;return{value:{get element(){return port?.element??null},focus:side=>port?.focus(side),move:(from,ids)=>port?.move(from,ids)??false},retire:()=>{port=undefined}}}const RootImplementation=/* @__PURE__ */defineComponent({__sectileFormLabelMode:'labelledby',name:'SectileTransferRoot',inheritAttrs:false,props:{nodes:{type:Array,required:true},sourceId:{type:String,required:true},targetId:{type:String,required:true},controlled:{type:Boolean,default:false},sourceValue:{type:Array,default:undefined},defaultSourceValue:{type:Array,default:()=>empty},targetValue:{type:Array,default:undefined},defaultTargetValue:{type:Array,default:()=>empty},sourceHighlightedValue:{type:String,default:undefined},defaultSourceHighlightedValue:{type:String,default:null},targetHighlightedValue:{type:String,default:undefined},defaultTargetHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>empty},policies:{type:Object,default:undefined},typeahead:{type:Object,default:undefined},disabled:{type:Boolean,default:undefined},readonly:{type:Boolean,default:undefined},required:{type:Boolean,default:undefined},name:String,form:String,as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:nodes':_value=>true,move:_value=>true,'update:sourceValue':_value=>true,'update:targetValue':_value=>true,'update:sourceHighlightedValue':_value=>true,'update:targetHighlightedValue':_value=>true,activate:(_side,_id)=>true},slots:Object,setup(props,{attrs,emit,slots,expose}){const element=shallowRef(),sourceRoot=shallowRef(),targetRoot=shallowRef(),submission=shallowRef();const controller=shallowRef(),accepted=shallowRef();const active=useHostActive(),direction=useHostDirection(),flags=useFormControlFlags(props);const disabled=computed(()=>flags.value.disabled),readonly=computed(()=>flags.value.readonly),required=computed(()=>flags.value.required);const snapshot=computed(()=>accepted.value.state),sourceItems=computed(()=>getTransferItems(snapshot.value,'source')),targetItems=computed(()=>getTransferItems(snapshot.value,'target'));const prefix=`sectile-transfer-${useId()}`,elementID=(side,id)=>`${prefix}-${side}-${stableIDElementToken(id)}`;const rows=new Map;let connection,alive=true,mounted=false,generation=0;let restore;const controlled={membership:useControlledStateInvariant('TransferRoot','controlled',()=>props.controlled?true:undefined),sourceValue:useControlledStateInvariant('TransferRoot','sourceValue',()=>props.sourceValue),targetValue:useControlledStateInvariant('TransferRoot','targetValue',()=>props.targetValue),sourceCursor:useControlledStateInvariant('TransferRoot','sourceHighlightedValue',()=>props.sourceHighlightedValue),targetCursor:useControlledStateInvariant('TransferRoot','targetHighlightedValue',()=>props.targetHighlightedValue)};const initial={nodes:props.nodes,sourceValue:props.defaultSourceValue,targetValue:props.defaultTargetValue,sourceCursor:props.defaultSourceHighlightedValue,targetCursor:props.defaultTargetHighlightedValue};const publish=()=>{if(alive&&controller.value)accepted.value=controller.value.getSnapshot()};const retire=()=>{const old=connection;connection=undefined;old?.disconnect()};const attach=()=>{retire();if(!alive||!mounted||!active.value||!sourceRoot.value||!targetRoot.value||!controller.value){if(!active.value)restore=undefined;return}try{connection=connectTransfer({controller:controller.value,sourceRoot:sourceRoot.value,targetRoot:targetRoot.value,direction:direction.value,getItemElementID:elementID,onActivate:(side,id)=>emit('activate',side,id),onUpdate:publish});for(const[node,row]of rows)connection.setItemAttributes(node,row);const pending=restore;restore=undefined;if(pending&&(pending.old.ownerDocument.activeElement===pending.old||pending.old.ownerDocument.activeElement===pending.old.ownerDocument.body))connection.focus(pending.side)}catch(error){try{retire()}catch{}throw error}};const attachment=useNextTickTask(attach),scheduleAttach=()=>{if(alive&&mounted)attachment.schedule()};const values=()=>({...controlled.membership?{nodes:props.nodes}:{},...controlled.sourceValue||controlled.sourceCursor?{source:{...controlled.sourceValue?{value:props.sourceValue}:{},...controlled.sourceCursor?{highlightedValue:props.sourceHighlightedValue}:{}}}:{},...controlled.targetValue||controlled.targetCursor?{target:{...controlled.targetValue?{value:props.targetValue}:{},...controlled.targetCursor?{highlightedValue:props.targetHighlightedValue}:{}}}:{}});const build=(reset=false,replacement)=>{if(!alive)return;const previous=reset?undefined:controller.value?.getSnapshot().state;const nodes=controlled.membership?props.nodes:replacement??(reset?initial.nodes:previous?.nodes??props.nodes);const prior=previous&&previous.sourceID===props.sourceId&&previous.targetID===props.targetId?unwrap(synchronizeTransferState(previous,{nodes},props.policies)):undefined;const sourceValue=controlled.sourceValue?props.sourceValue:prior?.source.selection.selected??initial.sourceValue;const targetValue=controlled.targetValue?props.targetValue:prior?.target.selection.selected??initial.targetValue;const sourceCursor=controlled.sourceCursor?props.sourceHighlightedValue:prior?prior.source.cursor.current:initial.sourceCursor;const targetCursor=controlled.targetCursor?props.targetHighlightedValue:prior?prior.target.cursor.current:initial.targetCursor;const nextGeneration=generation+1,current=()=>alive&&generation===nextGeneration;const next=unwrap(createTransferController({nodes,sourceID:props.sourceId,targetID:props.targetId,controlled:controlled.membership,direction:direction.value,disabled:disabled.value,readOnly:readonly.value,disabledItems:props.disabledItems,...props.policies===undefined?{}:{policies:props.policies},typeahead:props.typeahead??{textValue:id=>id},source:{...controlled.sourceValue?{value:sourceValue}:{defaultValue:sourceValue},...controlled.sourceCursor?{highlightedValue:sourceCursor}:{defaultHighlightedValue:sourceCursor}},target:{...controlled.targetValue?{value:targetValue}:{defaultValue:targetValue},...controlled.targetCursor?{highlightedValue:targetCursor}:{defaultHighlightedValue:targetCursor}},onMove:proposal=>{if(current()){emit('update:nodes',proposal.nodes);if(current())emit('move',proposal)}},onValueChange:(side,value)=>{if(current()){if(side==='source')emit('update:sourceValue',value);else emit('update:targetValue',value)}},onHighlightedValueChange:(side,value)=>{if(current()){if(side==='source')emit('update:sourceHighlightedValue',value);else emit('update:targetHighlightedValue',value)}},onUpdate:()=>{if(current())publish()}}));const old=controller.value;try{retire()}catch(error){try{next.dispose()}catch{}throw error}generation=nextGeneration;controller.value=next;old?.dispose();publish();scheduleAttach()};build();const state=computed(()=>({nodes:snapshot.value.nodes,sourceItems:sourceItems.value.ids,targetItems:targetItems.value.ids,sourceValue:snapshot.value.source.selection.selected,targetValue:snapshot.value.target.selection.selected,sourceHighlightedValue:snapshot.value.source.cursor.current,targetHighlightedValue:snapshot.value.target.cursor.current,disabled:disabled.value||!active.value,readonly:readonly.value}));const resetTask=useNextTickTask(()=>build(true));const submissionProps=useFormSubmissionProps({element:submission,capabilities:hiddenSelectSubmissionCapabilities},props);const participation=useCompositeFormControl({root:targetRoot,validationTarget:submission,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}],getValue:()=>targetItems.value.ids,isValueEqual:(left,right)=>Array.isArray(left)&&Array.isArray(right)&&sameIDs(left,right),reset:resetTask.schedule});provideFormControlOwner();provide(key,{state,snapshot,sourceItems,targetItems,controlProps:participation.controlProps,active,elementID,isDisabled:id=>{accepted.value;return!alive||disabled.value||!active.value||controller.value?.isDisabled(id)!==false},registerList:(side,node)=>{if(!alive)return;const ref=side==='source'?sourceRoot:targetRoot;if(ref.value===node)return;if(ref.value&&ref.value.contains(ref.value.ownerDocument.activeElement))restore={side,old:ref.value};ref.value=node;scheduleAttach()},registerItem:(side,node,id)=>{if(!alive)return;rows.set(node,{side,id});connection?.setItemAttributes(node,{side,id})},releaseItem:(node,id)=>{if(rows.get(node)?.id===id){rows.delete(node);connection?.releaseItem(node,id)}},move:from=>move(from)});const move=(from,ids)=>{if(!alive||!active.value)return false;return connection?connection.move(from,ids):controller.value?.handleEvent({type:'move',from,...ids===undefined?{}:{ids}}).ok===true};const exposure=createExposure({get element(){return element.value??null},focus(side='target'){if(alive&&active.value)(side==='source'?sourceRoot.value:targetRoot.value)?.focus()},move});expose(exposure.value);onMounted(()=>{mounted=true;attachment.cancel();attach()});onBeforeUnmount(()=>{alive=false;mounted=false;generation++;exposure.retire();attachment.cancel();resetTask.cancel();restore=undefined;try{retire()}finally{try{controller.value?.dispose()}finally{controller.value=undefined;rows.clear();element.value=undefined;sourceRoot.value=undefined;targetRoot.value=undefined;submission.value=undefined}}});watch(active,()=>{if(active.value){if(connection)connection.resume();else attach()}else{restore=undefined;connection?.suspend()}},{flush:'post'});watch([disabled,readonly],()=>{if(controller.value)unwrap(controller.value.syncInteraction({disabled:disabled.value,readOnly:readonly.value}));connection?.render()});watch([()=>props.sourceId,()=>props.targetId,()=>props.disabledItems,()=>props.policies,()=>props.typeahead,direction],()=>build());watch([()=>props.nodes,()=>props.sourceValue,()=>props.targetValue,()=>props.sourceHighlightedValue,()=>props.targetHighlightedValue],(next,before)=>{if(!alive||!controller.value)return;if(!controlled.membership&&next[0]!==before[0]){build(false,props.nodes);return}unwrap(connection?connection.syncControlledValues(values()):controller.value.syncControlledValues(values()));publish()},{flush:'post'});const submissionOptions=computed(()=>targetItems.value.ids.map(id=>h('option',{key:id,value:id,selected:true},id)));return()=>[h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=typeof HTMLElement!=='undefined'&&node instanceof HTMLElement?node:undefined},'data-scope':'transfer','data-part':'root'}),{default:()=>slots.default?.(state.value)}),...participation.participating||props.name!==undefined||props.form!==undefined||required.value?[h('select',{ref:node=>{submission.value=typeof HTMLSelectElement!=='undefined'&&node instanceof HTMLSelectElement?node:undefined},...submissionProps.value,required:required.value,disabled:disabled.value,multiple:true,tabindex:-1,'aria-hidden':'true',style:visuallyHiddenInputStyle},submissionOptions.value)]:[]]}});export const TransferRoot=RootImplementation;export const TransferList=/* @__PURE__ */defineComponent({name:'SectileTransferList',inheritAttrs:false,props:{...partProps,side:{type:String,required:true},label:String},slots:Object,setup(props,{attrs,slots}){const root=useRoot('TransferList'),element=shallowRef(),side=computed(()=>props.side);provide(listKey,side);const unregister=()=>root.registerList(props.side,undefined);watch(side,(next,previous)=>{root.registerList(previous,undefined);root.registerList(next,element.value)});onBeforeUnmount(unregister);return()=>h(Primitive,mergeProps(attrs,props.side==='target'?root.controlProps.value:{},{as:props.as,asChild:props.asChild,elementRef:node=>{const next=typeof HTMLElement!=='undefined'&&node instanceof HTMLElement?node:undefined;element.value=next;root.registerList(props.side,next)},...getListboxRootAttributes({selectionMode:'multiple',disabled:root.state.value.disabled,readOnly:root.state.value.readonly,...props.label===undefined?{}:{label:props.label},...element.value?.getAttribute('aria-activedescendant')?{activeDescendantID:element.value.getAttribute('aria-activedescendant')}:{}}),'aria-disabled':root.state.value.disabled?'true':undefined,'aria-readonly':root.state.value.readonly?'true':undefined,'data-scope':'transfer','data-part':props.side}),{default:()=>slots.default?.(root.state.value)})}});export const TransferItem=/* @__PURE__ */defineComponent({name:'SectileTransferItem',inheritAttrs:false,props:{...partProps,value:{type:String,required:true},disabled:{type:null}},slots:Object,setup(props,{attrs,slots}){const root=useRoot('TransferItem'),side=inject(listKey);if(!side)throw new TypeError('TransferItem must be used inside TransferList.');const element=shallowRef();let registered;const release=()=>{if(registered){root.releaseItem(registered.node,registered.id);registered=undefined}};const register=()=>{release();if(element.value){registered={node:element.value,id:props.value};root.registerItem(side.value,element.value,props.value)}};onMounted(register);onUpdated(register);onBeforeUnmount(release);const selected=computed(()=>root.snapshot.value[side.value].selection),cursor=computed(()=>root.snapshot.value[side.value].cursor.current);const state=computed(()=>({value:props.value,selected:selected.value.has(props.value),highlighted:cursor.value===props.value,disabled:root.isDisabled(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=typeof HTMLElement!=='undefined'&&node instanceof HTMLElement?node:undefined},...getListboxItemAttributes({selection:selected.value,cursor:{current:cursor.value}},{id:props.value},{elementID:root.elementID(side.value,props.value),disabled:state.value.disabled}),hidden:!(side.value==='source'?root.sourceItems.value:root.targetItems.value).contains(props.value),'data-scope':'transfer','data-part':'item','data-transfer-side':side.value}),{default:()=>slots.default?.(state.value)})}});export const TransferMove=/* @__PURE__ */defineComponent({name:'SectileTransferMove',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false},from:{type:String,required:true},disabled:{type:Boolean,default:false}},setup(props,{attrs,slots}){const root=useRoot('TransferMove');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:props.disabled||root.state.value.disabled||root.state.value.readonly,'data-scope':'transfer','data-part':'move',onClick:event=>{if(!event.defaultPrevented&&!props.disabled)root.move(props.from)}}),slots)}});
2
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onMounted","onUpdated","provide","shallowRef","useId","watch","getTransferItems","synchronizeTransferState","unwrap","connectTransfer","createTransferController","getListboxItemAttributes","getListboxRootAttributes","stableIDElementToken","Primitive","useHostActive","useHostDirection","useControlledStateInvariant","useNextTickTask","sameIDs","hiddenSelectSubmissionCapabilities","provideFormControlOwner","useCompositeFormControl","useFormControlFlags","useFormSubmissionProps","visuallyHiddenInputStyle","key","Symbol","listKey","empty","Object","freeze","partProps","as","type","String","Function","default","asChild","Boolean","useRoot","name","root","TypeError","createExposure","target","port","value","element","focus","side","move","from","ids","retire","undefined","RootImplementation","__sectileFormLabelMode","inheritAttrs","props","nodes","Array","required","sourceId","targetId","controlled","sourceValue","defaultSourceValue","targetValue","defaultTargetValue","sourceHighlightedValue","defaultSourceHighlightedValue","targetHighlightedValue","defaultTargetHighlightedValue","disabledItems","policies","typeahead","disabled","readonly","form","emits","_value","activate","_side","_id","slots","setup","attrs","emit","expose","sourceRoot","targetRoot","submission","controller","accepted","active","direction","flags","snapshot","state","sourceItems","targetItems","prefix","elementID","id","rows","Map","connection","alive","mounted","generation","restore","membership","sourceCursor","targetCursor","initial","publish","getSnapshot","old","disconnect","attach","getItemElementID","onActivate","onUpdate","node","row","setItemAttributes","pending","ownerDocument","activeElement","body","error","attachment","scheduleAttach","schedule","values","source","highlightedValue","build","reset","replacement","previous","prior","sourceID","targetID","selection","selected","cursor","current","nextGeneration","next","readOnly","textValue","defaultValue","defaultHighlightedValue","onMove","proposal","onValueChange","onHighlightedValueChange","dispose","resetTask","submissionProps","capabilities","participation","validationTarget","submissions","getValue","isValueEqual","left","right","isArray","controlProps","isDisabled","registerList","ref","contains","registerItem","set","releaseItem","get","delete","handleEvent","ok","exposure","cancel","clear","resume","suspend","flush","syncInteraction","render","before","syncControlledValues","submissionOptions","map","elementRef","HTMLElement","participating","HTMLSelectElement","multiple","tabindex","style","TransferRoot","TransferList","label","unregister","selectionMode","getAttribute","activeDescendantID","TransferItem","registered","release","register","has","highlighted","hidden","TransferMove","onClick","event","defaultPrevented"],"sources":["../src/transfer.ts"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,8 @@ import { type PrimitiveAs } from './primitive.js';
4
4
  import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
5
5
  export interface TreeGridRootProps {
6
6
  readonly rows: readonly TreeGridRowInput<string, string>[];
7
+ /** Column labels rendered by TreeGridHeader; data row indexes remain one-based. */
8
+ readonly headers?: readonly string[];
7
9
  readonly getCellValue: (id: string) => string;
8
10
  readonly setCellValue: (id: string, value: string) => void;
9
11
  readonly modelValue?: string | null;
@@ -44,6 +46,16 @@ export interface TreeGridPartProps {
44
46
  readonly as?: PrimitiveAs;
45
47
  readonly asChild?: boolean;
46
48
  }
49
+ export interface TreeGridHeaderCellProps extends TreeGridPartProps {
50
+ readonly columnIndex: number;
51
+ }
52
+ export interface TreeGridHeaderCellSlotProps {
53
+ readonly columnIndex: number;
54
+ readonly label: string;
55
+ }
56
+ export interface TreeGridGroupProps extends TreeGridPartProps, ConditionalPresenceProps {
57
+ readonly for: string;
58
+ }
47
59
  export interface TreeGridEditorProps extends ConditionalPresenceProps {
48
60
  readonly for: string;
49
61
  readonly label?: string;
@@ -53,6 +65,10 @@ export declare const TreeGridRoot: import("vue").DefineComponent<import("vue").E
53
65
  type: PropType<readonly TreeGridRowInput<string, string>[]>;
54
66
  required: true;
55
67
  };
68
+ headers: {
69
+ type: PropType<readonly string[]>;
70
+ default: () => never[];
71
+ };
56
72
  getCellValue: {
57
73
  type: PropType<TreeGridCellValueResolver>;
58
74
  required: true;
@@ -123,6 +139,10 @@ export declare const TreeGridRoot: import("vue").DefineComponent<import("vue").E
123
139
  type: PropType<readonly TreeGridRowInput<string, string>[]>;
124
140
  required: true;
125
141
  };
142
+ headers: {
143
+ type: PropType<readonly string[]>;
144
+ default: () => never[];
145
+ };
126
146
  getCellValue: {
127
147
  type: PropType<TreeGridCellValueResolver>;
128
148
  required: true;
@@ -189,6 +209,7 @@ export declare const TreeGridRoot: import("vue").DefineComponent<import("vue").E
189
209
  "onUpdate:highlightedValue"?: (_value: string | null) => any;
190
210
  "onUpdate:modelValue"?: (_value: string | null) => any;
191
211
  }>, {
212
+ headers: readonly string[];
192
213
  modelValue: string | null;
193
214
  defaultValue: string | null;
194
215
  expandedValue: readonly string[];
@@ -209,6 +230,65 @@ export type TreeGridValueChangeHandler = (value: string | null) => void;
209
230
  export type TreeGridExpandedValueChangeHandler = (value: readonly string[]) => void;
210
231
  export type TreeGridHighlightedValueChangeHandler = (value: string | null) => void;
211
232
  export type TreeGridEditModeChangeHandler = (value: TreeGridEditMode) => void;
233
+ /** Authored alongside data rows; the root owns the count and data-index offset. */
234
+ export declare const TreeGridHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
235
+ as: {
236
+ type: PropType<PrimitiveAs>;
237
+ default: string;
238
+ };
239
+ asChild: {
240
+ type: BooleanConstructor;
241
+ default: boolean;
242
+ };
243
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
244
+ as: {
245
+ type: PropType<PrimitiveAs>;
246
+ default: string;
247
+ };
248
+ asChild: {
249
+ type: BooleanConstructor;
250
+ default: boolean;
251
+ };
252
+ }>> & Readonly<{}>, {
253
+ as: PrimitiveAs;
254
+ asChild: boolean;
255
+ }, SlotsType<{
256
+ default: (props: {
257
+ readonly headers: readonly string[];
258
+ }) => VNodeChild;
259
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
260
+ export declare const TreeGridHeaderCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
261
+ as: {
262
+ type: PropType<PrimitiveAs>;
263
+ default: string;
264
+ };
265
+ asChild: {
266
+ type: BooleanConstructor;
267
+ default: boolean;
268
+ };
269
+ columnIndex: {
270
+ type: NumberConstructor;
271
+ required: true;
272
+ };
273
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
274
+ as: {
275
+ type: PropType<PrimitiveAs>;
276
+ default: string;
277
+ };
278
+ asChild: {
279
+ type: BooleanConstructor;
280
+ default: boolean;
281
+ };
282
+ columnIndex: {
283
+ type: NumberConstructor;
284
+ required: true;
285
+ };
286
+ }>> & Readonly<{}>, {
287
+ as: PrimitiveAs;
288
+ asChild: boolean;
289
+ }, SlotsType<{
290
+ default: (props: TreeGridHeaderCellSlotProps) => VNodeChild;
291
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
212
292
  export declare const TreeGridRow: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
213
293
  as: {
214
294
  type: PropType<PrimitiveAs>;
@@ -267,6 +347,48 @@ export declare const TreeGridRow: import("vue").DefineComponent<import("vue").Ex
267
347
  }, SlotsType<{
268
348
  default: (props: TreeGridRowSlotProps) => VNodeChild;
269
349
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
350
+ /** Rowgroup visibility borrows the root expansion owner and the shared Presence lifecycle. */
351
+ export declare const TreeGridGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
352
+ forcePresent: {
353
+ readonly type: BooleanConstructor;
354
+ readonly default: false;
355
+ };
356
+ as: {
357
+ type: PropType<PrimitiveAs>;
358
+ default: string;
359
+ };
360
+ asChild: {
361
+ type: BooleanConstructor;
362
+ default: boolean;
363
+ };
364
+ for: {
365
+ type: StringConstructor;
366
+ required: true;
367
+ };
368
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
369
+ forcePresent: {
370
+ readonly type: BooleanConstructor;
371
+ readonly default: false;
372
+ };
373
+ as: {
374
+ type: PropType<PrimitiveAs>;
375
+ default: string;
376
+ };
377
+ asChild: {
378
+ type: BooleanConstructor;
379
+ default: boolean;
380
+ };
381
+ for: {
382
+ type: StringConstructor;
383
+ required: true;
384
+ };
385
+ }>> & Readonly<{}>, {
386
+ forcePresent: boolean;
387
+ as: PrimitiveAs;
388
+ asChild: boolean;
389
+ }, SlotsType<{
390
+ default: (props: TreeGridRootSlotProps) => VNodeChild;
391
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
270
392
  export declare const TreeGridCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
271
393
  as: {
272
394
  type: PropType<PrimitiveAs>;
package/dist/tree-grid.js CHANGED
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length,maxTreeGridColumnCount(props.rows));element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1),level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:id=>props.getCellValue(id),setCellValue:(id,value2)=>props.setCellValue(id,value2),...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};let mounted=false;let editorFocused=false;let editorComposing=false;let reconnectPending=false;let reconnectTimer=null;const editorActive=()=>editorFocused||editorComposing;const requestConnect=()=>{if(editorActive()){reconnectPending=true;return}connect()};const schedulePendingConnect=()=>{if(editorActive()||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||editorActive())return;reconnectPending=false;connect()},0)};const setEditorFocused=focused=>{editorFocused=focused;schedulePendingConnect()};const setEditorComposing=composing=>{editorComposing=composing;schedulePendingConnect()};provide(key,{state,expandedRows,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}}),setEditorFocused,setEditorComposing,handleEditorKeydown:event=>{if(connection.value?.handleKeyboardEvent(event)!==true)return;event.preventDefault();event.stopPropagation()}});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;editorFocused=false;editorComposing=false;connection.value?.disconnect()});watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],requestConnect);watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",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("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0},...conditionalPresenceProps},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(editing,forcePresent);return()=>{const inactivePresent=!editing.value&&presence.present.value;return h("input",mergeProps(attrs,{ref:node=>{const element=presence.register(node);if(element?.tagName==="INPUT")root.registerEditor(element,props.for,props.label)},hidden:presence.hidden.value,tabindex:inactivePresent?-1:void 0,onKeydown:root.handleEditorKeydown,onFocus:()=>root.setEditorFocused(true),onBlur:()=>root.setEditorFocused(false),onCompositionstart:()=>root.setEditorComposing(true),onCompositionend:()=>root.setEditorComposing(false),...inactivePresent?{inert:true,"aria-hidden":"true"}:{},disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor","data-state":editing.value?"editing":"idle"}))}}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridRoot,TreeGridRow};
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},headers:{type:Array,default:()=>[]},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const dataColumnCount=computed(()=>maxTreeGridColumnCount(props.rows));const headers=computed(()=>props.headers);const headerCount=computed(()=>headers.value.length===0?0:1);const columnCount=computed(()=>{if(headerCount.value&&headers.value.length<dataColumnCount.value){throw new TypeError("TreeGrid headers must label every data column.")}return Math.max(dataColumnCount.value,headers.value.length)});const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length+headerCount.value,columnCount.value);element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1)+headerCount.value,level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:id=>props.getCellValue(id),setCellValue:(id,value2)=>props.setCellValue(id,value2),...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};let mounted=false;let editorFocused;let editorComposing;let reconnectPending=false;let reconnectTimer=null;const editorActive=()=>editorFocused!==void 0||editorComposing!==void 0;const requestConnect=()=>{if(editorActive()){reconnectPending=true;return}connect()};const schedulePendingConnect=()=>{if(editorActive()||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||editorActive())return;reconnectPending=false;connect()},0)};const setEditorFocused=(node,focused)=>{if(focused)editorFocused=node;else if(editorFocused===node)editorFocused=void 0;schedulePendingConnect()};const setEditorComposing=(node,composing)=>{if(composing)editorComposing=node;else if(editorComposing===node)editorComposing=void 0;schedulePendingConnect()};provide(key,{state,expandedRows,headers,headerCount,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex:rowIndex+headerCount.value,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}}),unregisterEditor:node=>{connection.value?.unbindEditor(node);setEditorFocused(node,false);setEditorComposing(node,false)},setEditorFocused,setEditorComposing,handleEditorKeydown:event=>{if(connection.value?.handleKeyboardEvent(event)!==true)return;event.preventDefault();event.stopPropagation()}});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;editorFocused=void 0;editorComposing=void 0;connection.value?.disconnect()});watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],requestConnect);watch(headers,refreshParts,{flush:"post"});watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},role:"treegrid","aria-rowcount":props.rows.length+headerCount.value,"aria-colcount":columnCount.value,"data-column-count":columnCount.value,"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridHeader=defineComponent({name:"SectileTreeGridHeader",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridHeader");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"row","aria-rowindex":1,hidden:root.headerCount.value===0,"data-scope":"tree-grid","data-part":"header"}),{default:()=>slots["default"]?.({headers:root.headers.value})??root.headers.value.map((_label,index)=>h(TreeGridHeaderCell,{key:index,columnIndex:index+1}))})}});const TreeGridHeaderCell=defineComponent({name:"SectileTreeGridHeaderCell",inheritAttrs:false,props:{columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridHeaderCell");return()=>{const label=root.headers.value[props.columnIndex-1]??"";return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"columnheader","aria-colindex":props.columnIndex,"data-scope":"tree-grid","data-part":"headerCell"}),{default:()=>slots["default"]?.({columnIndex:props.columnIndex,label})??label})}}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},role:"row","aria-rowindex":props.rowIndex+root.headerCount.value,"aria-level":props.level,"aria-expanded":props.expandable?state.value.expanded:void 0,"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridGroup=defineComponent({name:"SectileTreeGridGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridGroup"),expanded=computed(()=>root.expandedRows.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:"rowgroup",hidden:presence.hidden.value,...!expanded.value&&presence.present.value?{inert:true,"aria-hidden":"true"}:{},"data-scope":"tree-grid","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},role:"gridcell","aria-colindex":props.columnIndex,"aria-selected":state.value.selected,"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",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("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0},...conditionalPresenceProps},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(editing,forcePresent);let registeredInput;const register=node=>{const element=presence.register(node);const input=element?.tagName==="INPUT"?element:void 0;if(registeredInput!==void 0&&registeredInput!==input)root.unregisterEditor(registeredInput);registeredInput=input;if(input!==void 0)root.registerEditor(input,props.for,props.label)};const setFocused=focused=>{if(registeredInput!==void 0)root.setEditorFocused(registeredInput,focused)};const setComposing=composing=>{if(registeredInput!==void 0)root.setEditorComposing(registeredInput,composing)};onBeforeUnmount(()=>{if(registeredInput!==void 0)root.unregisterEditor(registeredInput);registeredInput=void 0});return()=>{const inactivePresent=!editing.value&&presence.present.value;return h("input",mergeProps(attrs,{ref:register,hidden:presence.hidden.value,tabindex:inactivePresent?-1:void 0,onKeydown:root.handleEditorKeydown,onFocus:()=>setFocused(true),onBlur:()=>setFocused(false),onCompositionstart:()=>setComposing(true),onCompositionend:()=>setComposing(false),...inactivePresent?{inert:true,"aria-hidden":"true"}:{},disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor","data-state":editing.value?"editing":"idle"}))}}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridGroup,TreeGridHeader,TreeGridHeaderCell,TreeGridRoot,TreeGridRow};
2
2
  //# sourceMappingURL=tree-grid.js.map