@threadlabs/looma 0.6.3 → 0.6.5

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 (250) hide show
  1. package/components/ui-tree-item/ui-tree-item.html +68 -12
  2. package/components/ui-tree-item/ui-tree-item.js +9 -1
  3. package/dist/index.js +1 -1
  4. package/package.json +2 -2
  5. package/styles/ui-affordance-scope.css +1 -1
  6. package/styles/ui-avatar-group.css +1 -1
  7. package/styles/ui-avatar.css +1 -1
  8. package/styles/ui-badge.css +1 -1
  9. package/styles/ui-button.css +1 -1
  10. package/styles/ui-callout.css +1 -1
  11. package/styles/ui-checkbox.css +1 -1
  12. package/styles/ui-cluster.css +1 -1
  13. package/styles/ui-combobox.css +1 -1
  14. package/styles/ui-container.css +1 -1
  15. package/styles/ui-context-menu.css +1 -1
  16. package/styles/ui-dialog.css +1 -1
  17. package/styles/ui-disclosure.css +1 -1
  18. package/styles/ui-editable.css +1 -1
  19. package/styles/ui-editor-insert-table-grid.css +1 -1
  20. package/styles/ui-editor-mention-menu.css +1 -1
  21. package/styles/ui-editor-slash-menu.css +1 -1
  22. package/styles/ui-editor-table-context-menu.css +1 -1
  23. package/styles/ui-editor-table-overlay.css +1 -1
  24. package/styles/ui-editor-table-toolbar.css +1 -1
  25. package/styles/ui-editor-toolbar.css +1 -1
  26. package/styles/ui-floating-action-button.css +1 -1
  27. package/styles/ui-form-field.css +1 -1
  28. package/styles/ui-grid.css +1 -1
  29. package/styles/ui-icon-button.css +1 -1
  30. package/styles/ui-icon.css +1 -1
  31. package/styles/ui-input.css +1 -1
  32. package/styles/ui-menu-item.css +1 -1
  33. package/styles/ui-menu.css +1 -1
  34. package/styles/ui-popover.css +1 -1
  35. package/styles/ui-radio-group.css +1 -1
  36. package/styles/ui-radio.css +1 -1
  37. package/styles/ui-reel.css +1 -1
  38. package/styles/ui-search-result-row.css +1 -1
  39. package/styles/ui-search-shell.css +1 -1
  40. package/styles/ui-select.css +1 -1
  41. package/styles/ui-separator.css +1 -1
  42. package/styles/ui-sidebar.css +1 -1
  43. package/styles/ui-stack.css +1 -1
  44. package/styles/ui-switch.css +1 -1
  45. package/styles/ui-switcher.css +1 -1
  46. package/styles/ui-tabs.css +1 -1
  47. package/styles/ui-textarea.css +1 -1
  48. package/styles/ui-toast-region.css +1 -1
  49. package/styles/ui-tooltip.css +1 -1
  50. package/styles/ui-top-bar.css +1 -1
  51. package/styles/ui-tree-item.css +75 -12
  52. package/styles/ui-tree.css +1 -1
  53. package/vanilla/UiAffordanceScope.d.ts +1 -1
  54. package/vanilla/UiAffordanceScope.js +1 -1
  55. package/vanilla/UiAvatar.d.ts +1 -1
  56. package/vanilla/UiAvatar.js +1 -1
  57. package/vanilla/UiAvatarGroup.d.ts +1 -1
  58. package/vanilla/UiAvatarGroup.js +1 -1
  59. package/vanilla/UiBadge.d.ts +1 -1
  60. package/vanilla/UiBadge.js +1 -1
  61. package/vanilla/UiButton.d.ts +1 -1
  62. package/vanilla/UiButton.js +1 -1
  63. package/vanilla/UiCallout.d.ts +1 -1
  64. package/vanilla/UiCallout.js +1 -1
  65. package/vanilla/UiCheckbox.d.ts +1 -1
  66. package/vanilla/UiCheckbox.js +1 -1
  67. package/vanilla/UiCluster.d.ts +1 -1
  68. package/vanilla/UiCluster.js +1 -1
  69. package/vanilla/UiCombobox.d.ts +1 -1
  70. package/vanilla/UiCombobox.js +1 -1
  71. package/vanilla/UiContainer.d.ts +1 -1
  72. package/vanilla/UiContainer.js +1 -1
  73. package/vanilla/UiContextMenu.d.ts +1 -1
  74. package/vanilla/UiContextMenu.js +1 -1
  75. package/vanilla/UiDialog.d.ts +1 -1
  76. package/vanilla/UiDialog.js +1 -1
  77. package/vanilla/UiDisclosure.d.ts +1 -1
  78. package/vanilla/UiDisclosure.js +1 -1
  79. package/vanilla/UiEditable.d.ts +1 -1
  80. package/vanilla/UiEditable.js +1 -1
  81. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  82. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  83. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  84. package/vanilla/UiEditorMentionMenu.js +1 -1
  85. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  86. package/vanilla/UiEditorSlashMenu.js +1 -1
  87. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  88. package/vanilla/UiEditorTableContextMenu.js +1 -1
  89. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  90. package/vanilla/UiEditorTableOverlay.js +1 -1
  91. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  92. package/vanilla/UiEditorTableToolbar.js +1 -1
  93. package/vanilla/UiEditorToolbar.d.ts +1 -1
  94. package/vanilla/UiEditorToolbar.js +1 -1
  95. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  96. package/vanilla/UiFloatingActionButton.js +1 -1
  97. package/vanilla/UiFormField.d.ts +1 -1
  98. package/vanilla/UiFormField.js +1 -1
  99. package/vanilla/UiGrid.d.ts +1 -1
  100. package/vanilla/UiGrid.js +1 -1
  101. package/vanilla/UiIcon.d.ts +1 -1
  102. package/vanilla/UiIcon.js +1 -1
  103. package/vanilla/UiIconButton.d.ts +1 -1
  104. package/vanilla/UiIconButton.js +1 -1
  105. package/vanilla/UiInput.d.ts +1 -1
  106. package/vanilla/UiInput.js +1 -1
  107. package/vanilla/UiMenu.d.ts +1 -1
  108. package/vanilla/UiMenu.js +1 -1
  109. package/vanilla/UiMenuItem.d.ts +1 -1
  110. package/vanilla/UiMenuItem.js +1 -1
  111. package/vanilla/UiPopover.d.ts +1 -1
  112. package/vanilla/UiPopover.js +1 -1
  113. package/vanilla/UiRadio.d.ts +1 -1
  114. package/vanilla/UiRadio.js +1 -1
  115. package/vanilla/UiRadioGroup.d.ts +1 -1
  116. package/vanilla/UiRadioGroup.js +1 -1
  117. package/vanilla/UiReel.d.ts +1 -1
  118. package/vanilla/UiReel.js +1 -1
  119. package/vanilla/UiSearchResultRow.d.ts +1 -1
  120. package/vanilla/UiSearchResultRow.js +1 -1
  121. package/vanilla/UiSearchShell.d.ts +1 -1
  122. package/vanilla/UiSearchShell.js +1 -1
  123. package/vanilla/UiSelect.d.ts +1 -1
  124. package/vanilla/UiSelect.js +1 -1
  125. package/vanilla/UiSeparator.d.ts +1 -1
  126. package/vanilla/UiSeparator.js +1 -1
  127. package/vanilla/UiSidebar.d.ts +1 -1
  128. package/vanilla/UiSidebar.js +1 -1
  129. package/vanilla/UiStack.d.ts +1 -1
  130. package/vanilla/UiStack.js +1 -1
  131. package/vanilla/UiSwitch.d.ts +1 -1
  132. package/vanilla/UiSwitch.js +1 -1
  133. package/vanilla/UiSwitcher.d.ts +1 -1
  134. package/vanilla/UiSwitcher.js +1 -1
  135. package/vanilla/UiTabs.d.ts +1 -1
  136. package/vanilla/UiTabs.js +1 -1
  137. package/vanilla/UiTextarea.d.ts +1 -1
  138. package/vanilla/UiTextarea.js +1 -1
  139. package/vanilla/UiToastRegion.d.ts +1 -1
  140. package/vanilla/UiToastRegion.js +1 -1
  141. package/vanilla/UiTooltip.d.ts +1 -1
  142. package/vanilla/UiTooltip.js +1 -1
  143. package/vanilla/UiTopBar.d.ts +1 -1
  144. package/vanilla/UiTopBar.js +1 -1
  145. package/vanilla/UiTree.d.ts +1 -1
  146. package/vanilla/UiTree.js +1 -1
  147. package/vanilla/UiTreeItem.d.ts +1 -1
  148. package/vanilla/UiTreeItem.js +2 -2
  149. package/vue/UiAffordanceScope.vue +8 -84
  150. package/vue/UiAvatar.d.ts +1 -1
  151. package/vue/UiAvatar.vue +9 -106
  152. package/vue/UiAvatarGroup.vue +9 -96
  153. package/vue/UiBadge.vue +1 -1
  154. package/vue/UiButton.vue +1 -1
  155. package/vue/UiCallout.vue +1 -1
  156. package/vue/UiCheckbox.vue +22 -123
  157. package/vue/UiCluster.vue +1 -1
  158. package/vue/UiCombobox.d.ts +1 -1
  159. package/vue/UiCombobox.vue +224 -475
  160. package/vue/UiContainer.vue +1 -1
  161. package/vue/UiContextMenu.vue +34 -141
  162. package/vue/UiDialog.vue +25 -126
  163. package/vue/UiDisclosure.vue +26 -138
  164. package/vue/UiEditable.vue +46 -158
  165. package/vue/UiEditorInsertTableGrid.vue +19 -138
  166. package/vue/UiEditorMentionMenu.vue +17 -124
  167. package/vue/UiEditorSlashMenu.vue +17 -109
  168. package/vue/UiEditorTableContextMenu.vue +34 -122
  169. package/vue/UiEditorTableOverlay.vue +61 -167
  170. package/vue/UiEditorTableToolbar.vue +34 -142
  171. package/vue/UiEditorToolbar.vue +1 -1
  172. package/vue/UiFloatingActionButton.vue +1 -1
  173. package/vue/UiFormField.vue +7 -79
  174. package/vue/UiGrid.vue +1 -1
  175. package/vue/UiIcon.vue +8 -84
  176. package/vue/UiIconButton.vue +7 -79
  177. package/vue/UiInput.vue +7 -79
  178. package/vue/UiMenu.vue +42 -127
  179. package/vue/UiMenuItem.vue +1 -1
  180. package/vue/UiPopover.vue +25 -121
  181. package/vue/UiRadio.vue +22 -123
  182. package/vue/UiRadioGroup.d.ts +1 -1
  183. package/vue/UiRadioGroup.vue +32 -119
  184. package/vue/UiReel.vue +1 -1
  185. package/vue/UiSearchResultRow.vue +1 -1
  186. package/vue/UiSearchShell.vue +25 -121
  187. package/vue/UiSelect.vue +7 -79
  188. package/vue/UiSeparator.vue +1 -1
  189. package/vue/UiSidebar.vue +32 -133
  190. package/vue/UiStack.vue +1 -1
  191. package/vue/UiSwitch.vue +22 -123
  192. package/vue/UiSwitcher.vue +1 -1
  193. package/vue/UiTabs.vue +24 -128
  194. package/vue/UiTextarea.vue +7 -79
  195. package/vue/UiToastRegion.vue +37 -126
  196. package/vue/UiTooltip.vue +25 -124
  197. package/vue/UiTopBar.vue +1 -1
  198. package/vue/UiTree.vue +56 -137
  199. package/vue/UiTreeItem.vue +97 -153
  200. package/vue/chunks/UiAffordanceScope.js +9 -78
  201. package/vue/chunks/UiAvatar.js +13 -89
  202. package/vue/chunks/UiAvatarGroup.js +10 -80
  203. package/vue/chunks/UiBadge.js +1 -1
  204. package/vue/chunks/UiButton.js +1 -1
  205. package/vue/chunks/UiCallout.js +1 -1
  206. package/vue/chunks/UiCheckbox.js +17 -95
  207. package/vue/chunks/UiCluster.js +1 -1
  208. package/vue/chunks/UiCombobox.js +114 -325
  209. package/vue/chunks/UiContainer.js +1 -1
  210. package/vue/chunks/UiContextMenu.js +21 -113
  211. package/vue/chunks/UiDialog.js +20 -99
  212. package/vue/chunks/UiDisclosure.js +22 -112
  213. package/vue/chunks/UiEditable.js +32 -128
  214. package/vue/chunks/UiEditorInsertTableGrid.js +22 -116
  215. package/vue/chunks/UiEditorMentionMenu.js +18 -116
  216. package/vue/chunks/UiEditorSlashMenu.js +15 -101
  217. package/vue/chunks/UiEditorTableContextMenu.js +12 -91
  218. package/vue/chunks/UiEditorTableOverlay.js +29 -120
  219. package/vue/chunks/UiEditorTableToolbar.js +16 -111
  220. package/vue/chunks/UiEditorToolbar.js +1 -1
  221. package/vue/chunks/UiFloatingActionButton.js +1 -1
  222. package/vue/chunks/UiFormField.js +8 -73
  223. package/vue/chunks/UiGrid.js +1 -1
  224. package/vue/chunks/UiIcon.js +9 -78
  225. package/vue/chunks/UiIconButton.js +8 -73
  226. package/vue/chunks/UiInput.js +8 -73
  227. package/vue/chunks/UiMenu.js +25 -111
  228. package/vue/chunks/UiMenuItem.js +1 -1
  229. package/vue/chunks/UiPopover.js +18 -105
  230. package/vue/chunks/UiRadio.js +17 -95
  231. package/vue/chunks/UiRadioGroup.js +23 -105
  232. package/vue/chunks/UiReel.js +1 -1
  233. package/vue/chunks/UiSearchResultRow.js +1 -1
  234. package/vue/chunks/UiSearchShell.js +17 -94
  235. package/vue/chunks/UiSelect.js +8 -73
  236. package/vue/chunks/UiSeparator.js +1 -1
  237. package/vue/chunks/UiSidebar.js +23 -108
  238. package/vue/chunks/UiStack.js +1 -1
  239. package/vue/chunks/UiSwitch.js +17 -95
  240. package/vue/chunks/UiSwitcher.js +1 -1
  241. package/vue/chunks/UiTabs.js +22 -103
  242. package/vue/chunks/UiTextarea.js +8 -73
  243. package/vue/chunks/UiToastRegion.js +27 -112
  244. package/vue/chunks/UiTooltip.js +18 -106
  245. package/vue/chunks/UiTopBar.js +1 -1
  246. package/vue/chunks/UiTree.js +31 -109
  247. package/vue/chunks/UiTreeItem.js +35 -118
  248. package/vue/chunks/host.js +101 -0
  249. package/vue/components.css +759 -707
  250. package/vue/host.ts +154 -0
@@ -1,9 +1,9 @@
1
- // Generated by HTML Next 1.0.0-alpha.2 for Vanilla DOM. Do not edit.
1
+ // Generated by HTML Next 1.0.0-alpha.3 for Vanilla DOM. Do not edit.
2
2
  import { manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import * as controller from "../components/ui-tree-item/ui-tree-item.js";
4
4
  import "../styles/ui-tree-item.css";
5
5
 
6
- const definition = {...{"contract":{"tag":"ui-tree-item","props":{"accepts":{"type":"string","required":false,"target":{"attribute":"data-accepts"},"default":""},"container":{"type":"boolean","required":false,"target":{"attribute":"container"},"default":false},"disabled":{"type":"boolean","required":false,"target":{"attribute":"aria-disabled"},"default":false},"dragType":{"type":"string","required":false,"target":{"attribute":"data-drag-type"},"default":"item"},"dropDepth":{"type":"number","required":false,"target":{"attribute":"data-drop-depth"}},"dropScope":{"type":"string","required":false,"target":{"attribute":"data-drop-scope"},"default":""},"expanded":{"type":"boolean","required":false,"target":{"attribute":"expanded"},"default":false},"itemId":{"type":"string","required":false,"target":{"attribute":"data-item-id"},"default":""},"label":{"type":"string","required":false,"target":{"attribute":"aria-label"},"default":""},"selected":{"type":"boolean","required":false,"target":{"attribute":"aria-selected"},"default":false},"sortable":{"type":"boolean","required":false,"target":{"attribute":"sortable"},"default":false},"subtreeDepth":{"type":"number","required":false,"target":{"attribute":"data-subtree-depth"}}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"treeitem"},{"kind":"attribute","name":"aria-label","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}},{"kind":"attribute","name":"aria-level","expression":"structuralLevel","expressionPlan":{"source":"structuralLevel","ast":{"kind":"id","name":"structuralLevel"},"dependencies":["structuralLevel"]}},{"kind":"attribute","name":"aria-selected","expression":"selected","expressionPlan":{"source":"selected","ast":{"kind":"id","name":"selected"},"dependencies":["selected"]}},{"kind":"attribute","name":"aria-disabled","expression":"disabled","expressionPlan":{"source":"disabled","ast":{"kind":"id","name":"disabled"},"dependencies":["disabled"]}},{"kind":"attribute","name":"data-item-id","expression":"itemId","expressionPlan":{"source":"itemId","ast":{"kind":"id","name":"itemId"},"dependencies":["itemId"]}},{"kind":"attribute","name":"data-drag-type","expression":"dragType","expressionPlan":{"source":"dragType","ast":{"kind":"id","name":"dragType"},"dependencies":["dragType"]}},{"kind":"attribute","name":"data-drop-scope","expression":"dropScope","expressionPlan":{"source":"dropScope","ast":{"kind":"id","name":"dropScope"},"dependencies":["dropScope"]}},{"kind":"attribute","name":"data-accepts","expression":"accepts","expressionPlan":{"source":"accepts","ast":{"kind":"id","name":"accepts"},"dependencies":["accepts"]}},{"kind":"attribute","name":"data-drop-depth","expression":"dropDepth","expressionPlan":{"source":"dropDepth","ast":{"kind":"id","name":"dropDepth"},"dependencies":["dropDepth"]}},{"kind":"attribute","name":"data-subtree-depth","expression":"subtreeDepth","expressionPlan":{"source":"subtreeDepth","ast":{"kind":"id","name":"subtreeDepth"},"dependencies":["subtreeDepth"]}}],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"row"}],"children":[{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"class","value":"drag-handle"},{"kind":"literal","name":"type","value":"button"},{"kind":"literal","name":"draggable","value":"true"},{"kind":"attribute","name":"aria-label","expression":"format('Drag %s to reorder', label)","expressionPlan":{"source":"format('Drag %s to reorder', label)","ast":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"Drag %s to reorder"},{"kind":"id","name":"label"}]},"dependencies":["label"]}}],"children":[{"kind":"element","name":"svg","attributes":[{"kind":"literal","name":"aria-hidden","value":"true"},{"kind":"literal","name":"focusable","value":"false"},{"kind":"literal","name":"viewBox","value":"0 0 24 24"},{"kind":"literal","name":"fill","value":"none"},{"kind":"literal","name":"stroke","value":"currentColor"},{"kind":"literal","name":"stroke-width","value":"2"},{"kind":"literal","name":"stroke-linecap","value":"round"},{"kind":"literal","name":"stroke-linejoin","value":"round"}],"children":[{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"12"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"5"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"19"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"12"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"5"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"19"},{"kind":"literal","name":"r","value":"1"}],"children":[]}]}],"flow":{"kind":"if","test":"sortable and not disabled","testPlan":{"source":"sortable and not disabled","ast":{"kind":"binary","op":"and","left":{"kind":"id","name":"sortable"},"right":{"kind":"unary","op":"not","operand":{"kind":"id","name":"disabled"}}},"dependencies":["disabled","sortable"]}},"ref":"dragHandle"},{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"class","value":"disclosure"},{"kind":"literal","name":"type","value":"button"},{"kind":"attribute","name":"disabled","expression":"disabled","expressionPlan":{"source":"disabled","ast":{"kind":"id","name":"disabled"},"dependencies":["disabled"]}},{"kind":"attribute","name":"hidden","expression":"not isContainer","expressionPlan":{"source":"not isContainer","ast":{"kind":"unary","op":"not","operand":{"kind":"id","name":"isContainer"}},"dependencies":["isContainer"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"disclosure-icon"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}],"ref":"disclosure"},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot","fallback":[{"kind":"element","name":"template","attributes":[{"kind":"directive","name":"value","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}}],"children":[]}],"name":"label"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"actions"}],"children":[{"kind":"slot","fallback":[],"name":"actions"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"drop-indicator row-drop-indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}],"ref":"row"},{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"children"},{"kind":"literal","name":"role","value":"group"},{"kind":"attribute","name":"hidden","expression":"not (isContainer and internalExpanded)","expressionPlan":{"source":"not (isContainer and internalExpanded)","ast":{"kind":"unary","op":"not","operand":{"kind":"binary","op":"and","left":{"kind":"id","name":"isContainer"},"right":{"kind":"id","name":"internalExpanded"}}},"dependencies":["internalExpanded","isContainer"]}}],"children":[{"kind":"slot"}],"ref":"children"},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"drop-indicator subtree-drop-indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}]},"declarations":[{"kind":"state","name":"internalExpanded","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"state","name":"structuralLevel","expression":{"source":"1","ast":{"kind":"literal","value":1},"dependencies":[]}},{"kind":"state","name":"tabStop","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"state","name":"isContainer","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"event","name":"expand","type":"object({ id: string, expanded: boolean, trigger: keyboard | pointer | programmatic })","bubbles":false,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
6
+ const definition = {...{"contract":{"tag":"ui-tree-item","props":{"accepts":{"type":"string","required":false,"target":{"attribute":"data-accepts"},"default":""},"container":{"type":"boolean","required":false,"target":{"attribute":"container"},"default":false},"disabled":{"type":"boolean","required":false,"target":{"attribute":"aria-disabled"},"default":false},"dragType":{"type":"string","required":false,"target":{"attribute":"data-drag-type"},"default":"item"},"dropDepth":{"type":"number","required":false,"target":{"attribute":"data-drop-depth"}},"dropScope":{"type":"string","required":false,"target":{"attribute":"data-drop-scope"},"default":""},"expanded":{"type":"boolean","required":false,"target":{"attribute":"expanded"},"default":false},"itemId":{"type":"string","required":false,"target":{"attribute":"data-item-id"},"default":""},"label":{"type":"string","required":false,"target":{"attribute":"aria-label"},"default":""},"selected":{"type":"boolean","required":false,"target":{"attribute":"aria-selected"},"default":false},"sortable":{"type":"boolean","required":false,"target":{"attribute":"sortable"},"default":false},"subtreeDepth":{"type":"number","required":false,"target":{"attribute":"data-subtree-depth"}}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"treeitem"},{"kind":"attribute","name":"aria-label","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}},{"kind":"attribute","name":"aria-level","expression":"structuralLevel","expressionPlan":{"source":"structuralLevel","ast":{"kind":"id","name":"structuralLevel"},"dependencies":["structuralLevel"]}},{"kind":"attribute","name":"aria-selected","expression":"selected","expressionPlan":{"source":"selected","ast":{"kind":"id","name":"selected"},"dependencies":["selected"]}},{"kind":"attribute","name":"aria-disabled","expression":"disabled","expressionPlan":{"source":"disabled","ast":{"kind":"id","name":"disabled"},"dependencies":["disabled"]}},{"kind":"attribute","name":"data-item-id","expression":"itemId","expressionPlan":{"source":"itemId","ast":{"kind":"id","name":"itemId"},"dependencies":["itemId"]}},{"kind":"attribute","name":"data-drag-type","expression":"dragType","expressionPlan":{"source":"dragType","ast":{"kind":"id","name":"dragType"},"dependencies":["dragType"]}},{"kind":"attribute","name":"data-drop-scope","expression":"dropScope","expressionPlan":{"source":"dropScope","ast":{"kind":"id","name":"dropScope"},"dependencies":["dropScope"]}},{"kind":"attribute","name":"data-accepts","expression":"accepts","expressionPlan":{"source":"accepts","ast":{"kind":"id","name":"accepts"},"dependencies":["accepts"]}},{"kind":"attribute","name":"data-drop-depth","expression":"dropDepth","expressionPlan":{"source":"dropDepth","ast":{"kind":"id","name":"dropDepth"},"dependencies":["dropDepth"]}},{"kind":"attribute","name":"data-subtree-depth","expression":"subtreeDepth","expressionPlan":{"source":"subtreeDepth","ast":{"kind":"id","name":"subtreeDepth"},"dependencies":["subtreeDepth"]}}],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"row"}],"children":[{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"class","value":"drag-handle"},{"kind":"literal","name":"type","value":"button"},{"kind":"literal","name":"draggable","value":"true"},{"kind":"attribute","name":"aria-label","expression":"format('Drag %s to reorder', label)","expressionPlan":{"source":"format('Drag %s to reorder', label)","ast":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"Drag %s to reorder"},{"kind":"id","name":"label"}]},"dependencies":["label"]}}],"children":[{"kind":"element","name":"svg","attributes":[{"kind":"literal","name":"aria-hidden","value":"true"},{"kind":"literal","name":"focusable","value":"false"},{"kind":"literal","name":"viewBox","value":"0 0 24 24"},{"kind":"literal","name":"fill","value":"none"},{"kind":"literal","name":"stroke","value":"currentColor"},{"kind":"literal","name":"stroke-width","value":"2"},{"kind":"literal","name":"stroke-linecap","value":"round"},{"kind":"literal","name":"stroke-linejoin","value":"round"}],"children":[{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"12"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"5"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"9"},{"kind":"literal","name":"cy","value":"19"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"12"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"5"},{"kind":"literal","name":"r","value":"1"}],"children":[]},{"kind":"element","name":"circle","attributes":[{"kind":"literal","name":"cx","value":"15"},{"kind":"literal","name":"cy","value":"19"},{"kind":"literal","name":"r","value":"1"}],"children":[]}]}],"flow":{"kind":"if","test":"sortable and not disabled","testPlan":{"source":"sortable and not disabled","ast":{"kind":"binary","op":"and","left":{"kind":"id","name":"sortable"},"right":{"kind":"unary","op":"not","operand":{"kind":"id","name":"disabled"}}},"dependencies":["disabled","sortable"]}},"ref":"dragHandle"},{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"class","value":"disclosure"},{"kind":"literal","name":"type","value":"button"},{"kind":"attribute","name":"disabled","expression":"disabled","expressionPlan":{"source":"disabled","ast":{"kind":"id","name":"disabled"},"dependencies":["disabled"]}},{"kind":"attribute","name":"hidden","expression":"not isContainer","expressionPlan":{"source":"not isContainer","ast":{"kind":"unary","op":"not","operand":{"kind":"id","name":"isContainer"}},"dependencies":["isContainer"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"disclosure-icon"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}],"ref":"disclosure"},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot","fallback":[{"kind":"element","name":"template","attributes":[{"kind":"directive","name":"value","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}}],"children":[]}],"name":"label"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"actions"}],"children":[{"kind":"slot","fallback":[],"name":"actions"}],"ref":"actions"},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"drop-indicator row-drop-indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}],"ref":"row"},{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"children"},{"kind":"literal","name":"role","value":"group"},{"kind":"attribute","name":"hidden","expression":"not (isContainer and internalExpanded)","expressionPlan":{"source":"not (isContainer and internalExpanded)","ast":{"kind":"unary","op":"not","operand":{"kind":"binary","op":"and","left":{"kind":"id","name":"isContainer"},"right":{"kind":"id","name":"internalExpanded"}}},"dependencies":["internalExpanded","isContainer"]}}],"children":[{"kind":"slot"}],"ref":"children"},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"drop-indicator subtree-drop-indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]}]},"declarations":[{"kind":"state","name":"internalExpanded","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"state","name":"structuralLevel","expression":{"source":"1","ast":{"kind":"literal","value":1},"dependencies":[]}},{"kind":"state","name":"tabStop","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"state","name":"isContainer","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"event","name":"expand","type":"object({ id: string, expanded: boolean, trigger: keyboard | pointer | programmatic })","bubbles":false,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
7
7
 
8
8
  export function createUiTreeItem(options = {}) {
9
9
  const { attributes = {}, children = [], slots = {}, as, ...componentProps } = options;
@@ -1,7 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from 'vue'
3
+ import { computed, ref } from 'vue'
4
4
  import * as controllerModule from '../components/ui-affordance-scope/ui-affordance-scope.js'
5
+ import { createDispatch, useComponentHost } from './host'
5
6
 
6
7
  defineOptions({ inheritAttrs: false })
7
8
 
@@ -24,90 +25,13 @@ const hostState = computed(() =>
24
25
  ].filter(Boolean).join(' ')
25
26
  )
26
27
 
27
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
28
- function dispatch(name: string, detail?: unknown): boolean {
29
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
30
- ?? true
31
- }
32
-
33
- function read(name: string): unknown {
34
- if (name === 'engaged') return engaged.value
35
- return (props as Record<string, unknown>)[name]
36
- }
28
+ const dispatch = createDispatch(root)
37
29
 
38
- function write(name: string, value: unknown): boolean {
39
- if (name === 'engaged') {
40
- engaged.value = value as never
41
- return true
42
- }
43
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
44
- }
45
-
46
- const stops: Array<() => void> = []
47
- const host = {
48
- get element(): Element {
49
- return root.value as Element
50
- },
51
- state: new Proxy({} as Record<string, unknown>, {
52
- get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
53
- set: (_target, name, value) => typeof name === 'string' && write(name, value),
54
- }),
55
- refs: {} as Readonly<Record<string, Element>>,
56
- elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
57
- get: (_target, name) => {
58
- if (typeof name !== 'string' || root.value === null) return undefined
59
- const form = root.value instanceof HTMLFormElement
60
- ? root.value
61
- : root.value.querySelector('form')
62
- return form?.elements.namedItem(name)
63
- ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
64
- },
65
- }),
66
- signal<T>(initialValue: T) {
67
- const value = shallowRef(initialValue)
68
- return {
69
- get: (): T => value.value,
70
- set: (next: T): void => {
71
- if (!Object.is(value.value, next)) value.value = next
72
- },
73
- update: (next: (current: T) => T): void => {
74
- const updated = next(value.value)
75
- if (!Object.is(value.value, updated)) value.value = updated
76
- },
77
- }
78
- },
79
- computed<T>(compute: () => T) {
80
- const value = computed(compute)
81
- return { get: (): T => value.value }
82
- },
83
- effect(run: () => void | (() => void)): () => void {
84
- const stop = watchEffect((onCleanup) => {
85
- const cleanup = run()
86
- if (typeof cleanup === 'function') onCleanup(cleanup)
87
- }, { flush: 'post' })
88
- stops.push(stop)
89
- return stop
90
- },
91
- on(event: string, listener: EventListener): () => void {
92
- const element = root.value
93
- element?.addEventListener(event, listener)
94
- const off = (): void => element?.removeEventListener(event, listener)
95
- stops.push(off)
96
- return off
97
- },
30
+ useComponentHost(controllerModule.default, {
31
+ root,
98
32
  dispatch,
99
- }
100
-
101
- let cleanup: void | (() => void)
102
- let ready: Promise<void> | undefined
103
- onMounted(() => {
104
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
105
- cleanup = result
106
- })
107
- })
108
- onBeforeUnmount(() => {
109
- for (const stop of stops.splice(0)) stop()
110
- if (typeof cleanup === 'function') cleanup()
33
+ props,
34
+ state: { engaged },
111
35
  })
112
36
  </script>
113
37
 
package/vue/UiAvatar.d.ts CHANGED
@@ -9,9 +9,9 @@ type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_1) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ name: string;
12
13
  alt: string;
13
14
  fallback: string;
14
- name: string;
15
15
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
17
  declare const _default: typeof __VLS_export;
package/vue/UiAvatar.vue CHANGED
@@ -1,15 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import {
4
- computed,
5
- onBeforeUnmount,
6
- onMounted,
7
- ref,
8
- shallowRef,
9
- useTemplateRef,
10
- watchEffect,
11
- } from 'vue'
3
+ import { ref, useTemplateRef } from 'vue'
12
4
  import * as controllerModule from '../components/ui-avatar/ui-avatar.js'
5
+ import { createDispatch, useComponentHost } from './host'
13
6
 
14
7
  defineOptions({ inheritAttrs: false })
15
8
 
@@ -33,104 +26,14 @@ const hasImage = ref(false)
33
26
  const hasAuthoredImage = ref(false)
34
27
  const initials = ref('?')
35
28
 
36
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
37
- function dispatch(name: string, detail?: unknown): boolean {
38
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
39
- ?? true
40
- }
41
-
42
- function read(name: string): unknown {
43
- if (name === 'hasImage') return hasImage.value
44
- if (name === 'hasAuthoredImage') return hasAuthoredImage.value
45
- if (name === 'initials') return initials.value
46
- return (props as Record<string, unknown>)[name]
47
- }
48
-
49
- function write(name: string, value: unknown): boolean {
50
- if (name === 'hasImage') {
51
- hasImage.value = value as never
52
- return true
53
- }
54
- if (name === 'hasAuthoredImage') {
55
- hasAuthoredImage.value = value as never
56
- return true
57
- }
58
- if (name === 'initials') {
59
- initials.value = value as never
60
- return true
61
- }
62
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
63
- }
29
+ const dispatch = createDispatch(root)
64
30
 
65
- const stops: Array<() => void> = []
66
- const host = {
67
- get element(): Element {
68
- return root.value as Element
69
- },
70
- state: new Proxy({} as Record<string, unknown>, {
71
- get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
72
- set: (_target, name, value) => typeof name === 'string' && write(name, value),
73
- }),
74
- refs: {
75
- get image(): Element {
76
- return imageElement.value as Element
77
- },
78
- } as Readonly<Record<string, Element>>,
79
- elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
80
- get: (_target, name) => {
81
- if (typeof name !== 'string' || root.value === null) return undefined
82
- const form = root.value instanceof HTMLFormElement
83
- ? root.value
84
- : root.value.querySelector('form')
85
- return form?.elements.namedItem(name)
86
- ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
87
- },
88
- }),
89
- signal<T>(initialValue: T) {
90
- const value = shallowRef(initialValue)
91
- return {
92
- get: (): T => value.value,
93
- set: (next: T): void => {
94
- if (!Object.is(value.value, next)) value.value = next
95
- },
96
- update: (next: (current: T) => T): void => {
97
- const updated = next(value.value)
98
- if (!Object.is(value.value, updated)) value.value = updated
99
- },
100
- }
101
- },
102
- computed<T>(compute: () => T) {
103
- const value = computed(compute)
104
- return { get: (): T => value.value }
105
- },
106
- effect(run: () => void | (() => void)): () => void {
107
- const stop = watchEffect((onCleanup) => {
108
- const cleanup = run()
109
- if (typeof cleanup === 'function') onCleanup(cleanup)
110
- }, { flush: 'post' })
111
- stops.push(stop)
112
- return stop
113
- },
114
- on(event: string, listener: EventListener): () => void {
115
- const element = root.value
116
- element?.addEventListener(event, listener)
117
- const off = (): void => element?.removeEventListener(event, listener)
118
- stops.push(off)
119
- return off
120
- },
31
+ useComponentHost(controllerModule.default, {
32
+ root,
121
33
  dispatch,
122
- }
123
-
124
- let cleanup: void | (() => void)
125
- let ready: Promise<void> | undefined
126
- onMounted(() => {
127
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
128
- cleanup = result
129
- })
130
- })
131
- onBeforeUnmount(() => {
132
- for (const stop of stops.splice(0)) stop()
133
- if (typeof cleanup === 'function') cleanup()
34
+ props,
35
+ refs: { image: imageElement },
36
+ state: { hasImage, hasAuthoredImage, initials },
134
37
  })
135
38
  </script>
136
39
 
@@ -1,15 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import {
4
- computed,
5
- onBeforeUnmount,
6
- onMounted,
7
- ref,
8
- shallowRef,
9
- useTemplateRef,
10
- watchEffect,
11
- } from 'vue'
3
+ import { ref, useTemplateRef } from 'vue'
12
4
  import * as controllerModule from '../components/ui-avatar-group/ui-avatar-group.js'
5
+ import { createDispatch, useComponentHost } from './host'
13
6
 
14
7
  defineOptions({ inheritAttrs: false })
15
8
 
@@ -28,94 +21,14 @@ const root = ref<HTMLElement | null>(null)
28
21
  const overflowElement = useTemplateRef<HTMLElement>('overflow')
29
22
  const overflowCount = ref(0)
30
23
 
31
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
32
- function dispatch(name: string, detail?: unknown): boolean {
33
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
34
- ?? true
35
- }
36
-
37
- function read(name: string): unknown {
38
- if (name === 'overflowCount') return overflowCount.value
39
- return (props as Record<string, unknown>)[name]
40
- }
24
+ const dispatch = createDispatch(root)
41
25
 
42
- function write(name: string, value: unknown): boolean {
43
- if (name === 'overflowCount') {
44
- overflowCount.value = value as never
45
- return true
46
- }
47
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
48
- }
49
-
50
- const stops: Array<() => void> = []
51
- const host = {
52
- get element(): Element {
53
- return root.value as Element
54
- },
55
- state: new Proxy({} as Record<string, unknown>, {
56
- get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
57
- set: (_target, name, value) => typeof name === 'string' && write(name, value),
58
- }),
59
- refs: {
60
- get overflow(): Element {
61
- return overflowElement.value as Element
62
- },
63
- } as Readonly<Record<string, Element>>,
64
- elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
65
- get: (_target, name) => {
66
- if (typeof name !== 'string' || root.value === null) return undefined
67
- const form = root.value instanceof HTMLFormElement
68
- ? root.value
69
- : root.value.querySelector('form')
70
- return form?.elements.namedItem(name)
71
- ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
72
- },
73
- }),
74
- signal<T>(initialValue: T) {
75
- const value = shallowRef(initialValue)
76
- return {
77
- get: (): T => value.value,
78
- set: (next: T): void => {
79
- if (!Object.is(value.value, next)) value.value = next
80
- },
81
- update: (next: (current: T) => T): void => {
82
- const updated = next(value.value)
83
- if (!Object.is(value.value, updated)) value.value = updated
84
- },
85
- }
86
- },
87
- computed<T>(compute: () => T) {
88
- const value = computed(compute)
89
- return { get: (): T => value.value }
90
- },
91
- effect(run: () => void | (() => void)): () => void {
92
- const stop = watchEffect((onCleanup) => {
93
- const cleanup = run()
94
- if (typeof cleanup === 'function') onCleanup(cleanup)
95
- }, { flush: 'post' })
96
- stops.push(stop)
97
- return stop
98
- },
99
- on(event: string, listener: EventListener): () => void {
100
- const element = root.value
101
- element?.addEventListener(event, listener)
102
- const off = (): void => element?.removeEventListener(event, listener)
103
- stops.push(off)
104
- return off
105
- },
26
+ useComponentHost(controllerModule.default, {
27
+ root,
106
28
  dispatch,
107
- }
108
-
109
- let cleanup: void | (() => void)
110
- let ready: Promise<void> | undefined
111
- onMounted(() => {
112
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
113
- cleanup = result
114
- })
115
- })
116
- onBeforeUnmount(() => {
117
- for (const stop of stops.splice(0)) stop()
118
- if (typeof cleanup === 'function') cleanup()
29
+ props,
30
+ refs: { overflow: overflowElement },
31
+ state: { overflowCount },
119
32
  })
120
33
  </script>
121
34
 
package/vue/UiBadge.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed } from 'vue'
4
4
 
package/vue/UiButton.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed } from 'vue'
4
4
 
package/vue/UiCallout.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed } from 'vue'
4
4
 
@@ -1,15 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import {
4
- computed,
5
- onBeforeUnmount,
6
- onMounted,
7
- ref,
8
- shallowRef,
9
- useTemplateRef,
10
- watchEffect,
11
- } from 'vue'
3
+ import { computed, ref, useTemplateRef } from 'vue'
12
4
  import * as controllerModule from '../components/ui-checkbox/ui-checkbox.js'
5
+ import { createDispatch, useComponentHost } from './host'
13
6
 
14
7
  defineOptions({ inheritAttrs: false })
15
8
 
@@ -52,121 +45,27 @@ const hostState = computed(() =>
52
45
  ].filter(Boolean).join(' ')
53
46
  )
54
47
 
55
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
56
- function dispatch(name: string, detail?: unknown): boolean {
57
- const declared: Record<string, EventInit | undefined> = {
58
- change: { bubbles: true, composed: true, cancelable: false },
59
- }
60
- const checks: Record<string, (detail: unknown) => boolean> = {
61
- change: (detail) =>
62
- detail !== null && typeof detail === 'object' && !Array.isArray(detail)
63
- && typeof (detail as Record<string, unknown>)['checked'] === 'boolean'
64
- && typeof (detail as Record<string, unknown>)['value'] === 'string'
65
- && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
66
- || (detail as Record<string, unknown>)['trigger'] === 'pointer'
67
- || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
68
- && Object.keys(detail as object).every((key) =>
69
- ['checked', 'value', 'trigger'].includes(key)
70
- ),
71
- }
72
- if (detail !== undefined && checks[name] !== undefined && !checks[name]!(detail)) {
73
- throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`)
74
- }
75
- const emitEvent = emit as (name: string, detail: unknown) => void
76
- emitEvent(name, detail)
77
- if (detail !== null && typeof detail === 'object' && 'checked' in detail) {
78
- emitEvent('update:checked', (detail as Record<string, unknown>)['checked'])
79
- }
80
- if (detail !== null && typeof detail === 'object' && 'value' in detail) {
81
- emitEvent('update:value', (detail as Record<string, unknown>)['value'])
82
- }
83
- return root.value?.dispatchEvent(
84
- new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail }),
85
- ) ?? true
86
- }
87
-
88
- function read(name: string): unknown {
89
- if (name === 'internalChecked') return internalChecked.value
90
- return (props as Record<string, unknown>)[name]
91
- }
92
-
93
- function write(name: string, value: unknown): boolean {
94
- if (name === 'internalChecked') {
95
- internalChecked.value = value as never
96
- return true
97
- }
98
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
99
- }
100
-
101
- const stops: Array<() => void> = []
102
- const host = {
103
- get element(): Element {
104
- return root.value as Element
105
- },
106
- state: new Proxy({} as Record<string, unknown>, {
107
- get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
108
- set: (_target, name, value) => typeof name === 'string' && write(name, value),
109
- }),
110
- refs: {
111
- get input(): Element {
112
- return inputElement.value as Element
113
- },
114
- } as Readonly<Record<string, Element>>,
115
- elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
116
- get: (_target, name) => {
117
- if (typeof name !== 'string' || root.value === null) return undefined
118
- const form = root.value instanceof HTMLFormElement
119
- ? root.value
120
- : root.value.querySelector('form')
121
- return form?.elements.namedItem(name)
122
- ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
123
- },
124
- }),
125
- signal<T>(initialValue: T) {
126
- const value = shallowRef(initialValue)
127
- return {
128
- get: (): T => value.value,
129
- set: (next: T): void => {
130
- if (!Object.is(value.value, next)) value.value = next
131
- },
132
- update: (next: (current: T) => T): void => {
133
- const updated = next(value.value)
134
- if (!Object.is(value.value, updated)) value.value = updated
135
- },
136
- }
48
+ const isChangeDetail = (detail: unknown): boolean =>
49
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
50
+ && typeof (detail as Record<string, unknown>)['checked'] === 'boolean'
51
+ && typeof (detail as Record<string, unknown>)['value'] === 'string'
52
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
53
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
54
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
55
+ && Object.keys(detail as object).every((key) => ['checked', 'value', 'trigger'].includes(key))
56
+ const dispatch = createDispatch(root, emit as (name: string, detail: unknown) => void, {
57
+ checks: {
58
+ change: isChangeDetail,
137
59
  },
138
- computed<T>(compute: () => T) {
139
- const value = computed(compute)
140
- return { get: (): T => value.value }
141
- },
142
- effect(run: () => void | (() => void)): () => void {
143
- const stop = watchEffect((onCleanup) => {
144
- const cleanup = run()
145
- if (typeof cleanup === 'function') onCleanup(cleanup)
146
- }, { flush: 'post' })
147
- stops.push(stop)
148
- return stop
149
- },
150
- on(event: string, listener: EventListener): () => void {
151
- const element = root.value
152
- element?.addEventListener(event, listener)
153
- const off = (): void => element?.removeEventListener(event, listener)
154
- stops.push(off)
155
- return off
156
- },
157
- dispatch,
158
- }
159
-
160
- let cleanup: void | (() => void)
161
- let ready: Promise<void> | undefined
162
- onMounted(() => {
163
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
164
- cleanup = result
165
- })
60
+ modeled: ['checked', 'value'],
166
61
  })
167
- onBeforeUnmount(() => {
168
- for (const stop of stops.splice(0)) stop()
169
- if (typeof cleanup === 'function') cleanup()
62
+
63
+ useComponentHost(controllerModule.default, {
64
+ root,
65
+ dispatch,
66
+ props,
67
+ refs: { input: inputElement },
68
+ state: { internalChecked },
170
69
  })
171
70
  </script>
172
71
 
package/vue/UiCluster.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.3 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed } from 'vue'
4
4
 
@@ -234,8 +234,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
234
234
  readonly trigger: "keyboard" | "pointer" | "programmatic";
235
235
  }) => any) | undefined;
236
236
  }>, {
237
- label: string;
238
237
  name: string;
238
+ label: string;
239
239
  disabled: boolean;
240
240
  size: "sm" | "md";
241
241
  required: boolean;