@threadlabs/looma 0.5.0 → 0.5.2

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 (313) hide show
  1. package/README.md +1 -1
  2. package/components/shared/input-modality.d.ts +8 -0
  3. package/components/shared/input-modality.js +2 -0
  4. package/components/ui-button/ui-button.html +42 -1
  5. package/components/ui-combobox/ui-combobox.html +12 -4
  6. package/components/ui-dialog/ui-dialog.html +13 -0
  7. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
  8. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
  9. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +6 -2
  10. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +20 -4
  11. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +8 -4
  12. package/components/ui-form-field/ui-form-field.html +18 -7
  13. package/components/ui-icon/ui-icon.html +5 -1
  14. package/components/ui-icon-button/ui-icon-button.html +44 -1
  15. package/components/ui-popover/ui-popover.js +10 -2
  16. package/components/ui-search-shell/ui-search-shell.html +7 -0
  17. package/components/ui-search-shell/ui-search-shell.js +9 -0
  18. package/components/ui-tabs/ui-tabs.html +1 -1
  19. package/components/ui-toast-region/ui-toast-region.html +1 -1
  20. package/components/ui-tree-item/ui-tree-item.html +6 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +2 -2
  23. package/package.json +2 -2
  24. package/styles/ui-affordance-scope.css +1 -1
  25. package/styles/ui-avatar-group.css +1 -1
  26. package/styles/ui-avatar.css +1 -1
  27. package/styles/ui-badge.css +1 -1
  28. package/styles/ui-button.css +42 -2
  29. package/styles/ui-callout.css +1 -1
  30. package/styles/ui-checkbox.css +1 -1
  31. package/styles/ui-cluster.css +1 -1
  32. package/styles/ui-combobox.css +1 -1
  33. package/styles/ui-container.css +1 -1
  34. package/styles/ui-context-menu.css +1 -1
  35. package/styles/ui-dialog.css +18 -1
  36. package/styles/ui-disclosure.css +1 -1
  37. package/styles/ui-editable.css +1 -1
  38. package/styles/ui-editor-insert-table-grid.css +1 -1
  39. package/styles/ui-editor-mention-menu.css +1 -1
  40. package/styles/ui-editor-slash-menu.css +1 -1
  41. package/styles/ui-editor-table-context-menu.css +1 -1
  42. package/styles/ui-editor-table-overlay.css +1 -1
  43. package/styles/ui-editor-table-toolbar.css +1 -1
  44. package/styles/ui-editor-toolbar.css +1 -1
  45. package/styles/ui-floating-action-button.css +1 -1
  46. package/styles/ui-form-field.css +24 -10
  47. package/styles/ui-grid.css +1 -1
  48. package/styles/ui-icon-button.css +52 -2
  49. package/styles/ui-icon.css +1 -1
  50. package/styles/ui-input.css +1 -1
  51. package/styles/ui-menu-item.css +1 -1
  52. package/styles/ui-menu.css +1 -1
  53. package/styles/ui-popover.css +1 -1
  54. package/styles/ui-radio-group.css +1 -1
  55. package/styles/ui-radio.css +1 -1
  56. package/styles/ui-reel.css +1 -1
  57. package/styles/ui-search-result-row.css +1 -1
  58. package/styles/ui-search-shell.css +11 -2
  59. package/styles/ui-select.css +1 -1
  60. package/styles/ui-separator.css +1 -1
  61. package/styles/ui-sidebar.css +1 -1
  62. package/styles/ui-stack.css +1 -1
  63. package/styles/ui-switch.css +1 -1
  64. package/styles/ui-switcher.css +1 -1
  65. package/styles/ui-tabs.css +1 -1
  66. package/styles/ui-textarea.css +1 -1
  67. package/styles/ui-toast-region.css +1 -1
  68. package/styles/ui-tooltip.css +1 -1
  69. package/styles/ui-top-bar.css +1 -1
  70. package/styles/ui-tree-item.css +10 -2
  71. package/styles/ui-tree.css +1 -1
  72. package/vanilla/UiAffordanceScope.d.ts +1 -1
  73. package/vanilla/UiAffordanceScope.js +2 -2
  74. package/vanilla/UiAvatar.d.ts +1 -1
  75. package/vanilla/UiAvatar.js +2 -2
  76. package/vanilla/UiAvatarGroup.d.ts +1 -1
  77. package/vanilla/UiAvatarGroup.js +2 -2
  78. package/vanilla/UiBadge.d.ts +1 -1
  79. package/vanilla/UiBadge.js +2 -2
  80. package/vanilla/UiButton.d.ts +3 -1
  81. package/vanilla/UiButton.js +3 -3
  82. package/vanilla/UiCallout.d.ts +1 -1
  83. package/vanilla/UiCallout.js +2 -2
  84. package/vanilla/UiCheckbox.d.ts +1 -1
  85. package/vanilla/UiCheckbox.js +2 -2
  86. package/vanilla/UiCluster.d.ts +1 -1
  87. package/vanilla/UiCluster.js +2 -2
  88. package/vanilla/UiCombobox.d.ts +1 -1
  89. package/vanilla/UiCombobox.js +3 -3
  90. package/vanilla/UiContainer.d.ts +1 -1
  91. package/vanilla/UiContainer.js +2 -2
  92. package/vanilla/UiContextMenu.d.ts +1 -1
  93. package/vanilla/UiContextMenu.js +2 -2
  94. package/vanilla/UiDialog.d.ts +1 -1
  95. package/vanilla/UiDialog.js +2 -2
  96. package/vanilla/UiDisclosure.d.ts +1 -1
  97. package/vanilla/UiDisclosure.js +2 -2
  98. package/vanilla/UiEditable.d.ts +1 -1
  99. package/vanilla/UiEditable.js +2 -2
  100. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  101. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  102. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  103. package/vanilla/UiEditorMentionMenu.js +3 -3
  104. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  105. package/vanilla/UiEditorSlashMenu.js +2 -2
  106. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  107. package/vanilla/UiEditorTableContextMenu.js +3 -3
  108. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  109. package/vanilla/UiEditorTableOverlay.js +3 -3
  110. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  111. package/vanilla/UiEditorTableToolbar.js +3 -3
  112. package/vanilla/UiEditorToolbar.d.ts +1 -1
  113. package/vanilla/UiEditorToolbar.js +2 -2
  114. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  115. package/vanilla/UiFloatingActionButton.js +2 -2
  116. package/vanilla/UiFormField.d.ts +1 -1
  117. package/vanilla/UiFormField.js +15 -6
  118. package/vanilla/UiGrid.d.ts +1 -1
  119. package/vanilla/UiGrid.js +2 -2
  120. package/vanilla/UiIcon.d.ts +1 -1
  121. package/vanilla/UiIcon.js +3 -3
  122. package/vanilla/UiIconButton.d.ts +1 -1
  123. package/vanilla/UiIconButton.js +2 -2
  124. package/vanilla/UiInput.d.ts +1 -1
  125. package/vanilla/UiInput.js +2 -2
  126. package/vanilla/UiMenu.d.ts +1 -1
  127. package/vanilla/UiMenu.js +2 -2
  128. package/vanilla/UiMenuItem.d.ts +1 -1
  129. package/vanilla/UiMenuItem.js +2 -2
  130. package/vanilla/UiPopover.d.ts +1 -1
  131. package/vanilla/UiPopover.js +2 -2
  132. package/vanilla/UiRadio.d.ts +1 -1
  133. package/vanilla/UiRadio.js +2 -2
  134. package/vanilla/UiRadioGroup.d.ts +1 -1
  135. package/vanilla/UiRadioGroup.js +2 -2
  136. package/vanilla/UiReel.d.ts +1 -1
  137. package/vanilla/UiReel.js +2 -2
  138. package/vanilla/UiSearchResultRow.d.ts +1 -1
  139. package/vanilla/UiSearchResultRow.js +2 -2
  140. package/vanilla/UiSearchShell.d.ts +1 -1
  141. package/vanilla/UiSearchShell.js +2 -2
  142. package/vanilla/UiSelect.d.ts +1 -1
  143. package/vanilla/UiSelect.js +2 -2
  144. package/vanilla/UiSeparator.d.ts +1 -1
  145. package/vanilla/UiSeparator.js +2 -2
  146. package/vanilla/UiSidebar.d.ts +1 -1
  147. package/vanilla/UiSidebar.js +2 -2
  148. package/vanilla/UiStack.d.ts +1 -1
  149. package/vanilla/UiStack.js +2 -2
  150. package/vanilla/UiSwitch.d.ts +1 -1
  151. package/vanilla/UiSwitch.js +2 -2
  152. package/vanilla/UiSwitcher.d.ts +1 -1
  153. package/vanilla/UiSwitcher.js +2 -2
  154. package/vanilla/UiTabs.d.ts +1 -1
  155. package/vanilla/UiTabs.js +3 -3
  156. package/vanilla/UiTextarea.d.ts +1 -1
  157. package/vanilla/UiTextarea.js +2 -2
  158. package/vanilla/UiToastRegion.d.ts +1 -1
  159. package/vanilla/UiToastRegion.js +3 -3
  160. package/vanilla/UiTooltip.d.ts +1 -1
  161. package/vanilla/UiTooltip.js +2 -2
  162. package/vanilla/UiTopBar.d.ts +1 -1
  163. package/vanilla/UiTopBar.js +1 -1
  164. package/vanilla/UiTree.d.ts +1 -1
  165. package/vanilla/UiTree.js +2 -2
  166. package/vanilla/UiTreeItem.d.ts +1 -1
  167. package/vanilla/UiTreeItem.js +2 -2
  168. package/vue/UiAffordanceScope.d.ts +2 -2
  169. package/vue/UiAffordanceScope.vue +92 -73
  170. package/vue/UiAvatar.d.ts +7 -7
  171. package/vue/UiAvatar.vue +145 -105
  172. package/vue/UiAvatarGroup.d.ts +4 -4
  173. package/vue/UiAvatarGroup.vue +134 -118
  174. package/vue/UiBadge.d.ts +4 -4
  175. package/vue/UiBadge.vue +113 -114
  176. package/vue/UiButton.d.ts +10 -6
  177. package/vue/UiButton.vue +289 -220
  178. package/vue/UiCallout.d.ts +2 -2
  179. package/vue/UiCallout.vue +154 -87
  180. package/vue/UiCheckbox.d.ts +14 -10
  181. package/vue/UiCheckbox.vue +228 -162
  182. package/vue/UiCluster.d.ts +2 -2
  183. package/vue/UiCluster.vue +53 -60
  184. package/vue/UiCombobox.d.ts +36 -32
  185. package/vue/UiCombobox.vue +1005 -416
  186. package/vue/UiContainer.d.ts +2 -2
  187. package/vue/UiContainer.vue +48 -51
  188. package/vue/UiContextMenu.d.ts +6 -4
  189. package/vue/UiContextMenu.vue +205 -116
  190. package/vue/UiDialog.d.ts +11 -9
  191. package/vue/UiDialog.vue +287 -212
  192. package/vue/UiDisclosure.d.ts +8 -6
  193. package/vue/UiDisclosure.vue +248 -159
  194. package/vue/UiEditable.d.ts +16 -12
  195. package/vue/UiEditable.vue +325 -205
  196. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  197. package/vue/UiEditorInsertTableGrid.vue +216 -157
  198. package/vue/UiEditorMentionMenu.d.ts +9 -9
  199. package/vue/UiEditorMentionMenu.vue +265 -222
  200. package/vue/UiEditorSlashMenu.d.ts +7 -7
  201. package/vue/UiEditorSlashMenu.vue +286 -240
  202. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  203. package/vue/UiEditorTableContextMenu.vue +306 -193
  204. package/vue/UiEditorTableOverlay.d.ts +2 -2
  205. package/vue/UiEditorTableOverlay.vue +609 -369
  206. package/vue/UiEditorTableToolbar.d.ts +7 -7
  207. package/vue/UiEditorTableToolbar.vue +443 -268
  208. package/vue/UiEditorToolbar.d.ts +2 -2
  209. package/vue/UiEditorToolbar.vue +134 -121
  210. package/vue/UiFloatingActionButton.d.ts +6 -6
  211. package/vue/UiFloatingActionButton.vue +100 -99
  212. package/vue/UiFormField.d.ts +6 -6
  213. package/vue/UiFormField.vue +112 -80
  214. package/vue/UiGrid.d.ts +2 -2
  215. package/vue/UiGrid.vue +51 -57
  216. package/vue/UiIcon.d.ts +2 -2
  217. package/vue/UiIcon.vue +118 -89
  218. package/vue/UiIconButton.d.ts +11 -11
  219. package/vue/UiIconButton.vue +285 -206
  220. package/vue/UiInput.d.ts +9 -9
  221. package/vue/UiInput.vue +153 -127
  222. package/vue/UiMenu.d.ts +8 -6
  223. package/vue/UiMenu.vue +217 -143
  224. package/vue/UiMenuItem.d.ts +4 -4
  225. package/vue/UiMenuItem.vue +52 -46
  226. package/vue/UiPopover.d.ts +8 -6
  227. package/vue/UiPopover.vue +197 -137
  228. package/vue/UiRadio.d.ts +14 -10
  229. package/vue/UiRadio.vue +183 -117
  230. package/vue/UiRadioGroup.d.ts +14 -12
  231. package/vue/UiRadioGroup.vue +172 -111
  232. package/vue/UiReel.d.ts +3 -3
  233. package/vue/UiReel.vue +77 -77
  234. package/vue/UiSearchResultRow.d.ts +4 -4
  235. package/vue/UiSearchResultRow.vue +124 -115
  236. package/vue/UiSearchShell.d.ts +10 -8
  237. package/vue/UiSearchShell.vue +245 -176
  238. package/vue/UiSelect.d.ts +9 -9
  239. package/vue/UiSelect.vue +162 -134
  240. package/vue/UiSeparator.d.ts +2 -2
  241. package/vue/UiSeparator.vue +22 -27
  242. package/vue/UiSidebar.d.ts +20 -18
  243. package/vue/UiSidebar.vue +312 -224
  244. package/vue/UiStack.d.ts +3 -3
  245. package/vue/UiStack.vue +64 -70
  246. package/vue/UiSwitch.d.ts +12 -8
  247. package/vue/UiSwitch.vue +218 -150
  248. package/vue/UiSwitcher.d.ts +3 -3
  249. package/vue/UiSwitcher.vue +73 -75
  250. package/vue/UiTabs.d.ts +10 -8
  251. package/vue/UiTabs.vue +251 -210
  252. package/vue/UiTextarea.d.ts +11 -11
  253. package/vue/UiTextarea.vue +155 -128
  254. package/vue/UiToastRegion.d.ts +10 -8
  255. package/vue/UiToastRegion.vue +261 -198
  256. package/vue/UiTooltip.d.ts +14 -12
  257. package/vue/UiTooltip.vue +241 -177
  258. package/vue/UiTopBar.vue +51 -42
  259. package/vue/UiTree.d.ts +8 -6
  260. package/vue/UiTree.vue +157 -70
  261. package/vue/UiTreeItem.d.ts +24 -22
  262. package/vue/UiTreeItem.vue +456 -339
  263. package/vue/chunks/UiAffordanceScope.js +9 -16
  264. package/vue/chunks/UiAvatar.js +23 -29
  265. package/vue/chunks/UiAvatarGroup.js +16 -39
  266. package/vue/chunks/UiBadge.js +3 -12
  267. package/vue/chunks/UiButton.js +15 -18
  268. package/vue/chunks/UiCallout.js +8 -17
  269. package/vue/chunks/UiCheckbox.js +37 -40
  270. package/vue/chunks/UiCluster.js +3 -12
  271. package/vue/chunks/UiCombobox.js +224 -266
  272. package/vue/chunks/UiContainer.js +3 -12
  273. package/vue/chunks/UiContextMenu.js +39 -34
  274. package/vue/chunks/UiDialog.js +36 -39
  275. package/vue/chunks/UiDisclosure.js +43 -48
  276. package/vue/chunks/UiEditable.js +55 -57
  277. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  278. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  279. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  280. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  281. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  282. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  283. package/vue/chunks/UiEditorToolbar.js +4 -13
  284. package/vue/chunks/UiFloatingActionButton.js +7 -21
  285. package/vue/chunks/UiFormField.js +15 -12
  286. package/vue/chunks/UiGrid.js +3 -12
  287. package/vue/chunks/UiIcon.js +20 -43
  288. package/vue/chunks/UiIconButton.js +16 -28
  289. package/vue/chunks/UiInput.js +20 -25
  290. package/vue/chunks/UiMenu.js +29 -33
  291. package/vue/chunks/UiMenuItem.js +4 -10
  292. package/vue/chunks/UiPopover.js +28 -29
  293. package/vue/chunks/UiRadio.js +36 -39
  294. package/vue/chunks/UiRadioGroup.js +30 -34
  295. package/vue/chunks/UiReel.js +6 -15
  296. package/vue/chunks/UiSearchResultRow.js +6 -19
  297. package/vue/chunks/UiSearchShell.js +25 -28
  298. package/vue/chunks/UiSelect.js +20 -23
  299. package/vue/chunks/UiSeparator.js +2 -8
  300. package/vue/chunks/UiSidebar.js +39 -44
  301. package/vue/chunks/UiStack.js +6 -15
  302. package/vue/chunks/UiSwitch.js +35 -38
  303. package/vue/chunks/UiSwitcher.js +6 -15
  304. package/vue/chunks/UiTabs.js +47 -85
  305. package/vue/chunks/UiTextarea.js +21 -26
  306. package/vue/chunks/UiToastRegion.js +38 -72
  307. package/vue/chunks/UiTooltip.js +34 -35
  308. package/vue/chunks/UiTopBar.js +1 -1
  309. package/vue/chunks/UiTree.js +20 -15
  310. package/vue/chunks/UiTreeItem.js +85 -102
  311. package/vue/components.css +3994 -3764
  312. package/vue/index.d.ts +1 -0
  313. package/vue/index.js +2 -1
package/vue/UiTree.vue CHANGED
@@ -1,117 +1,204 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from "vue";
4
- import * as controllerModule from "../components/ui-tree/ui-tree.js";
3
+ import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from 'vue'
4
+ import * as controllerModule from '../components/ui-tree/ui-tree.js'
5
5
 
6
- defineOptions({ inheritAttrs: false });
6
+ defineOptions({ inheritAttrs: false })
7
7
 
8
- const props = withDefaults(defineProps<{
9
- hoverExpandDelay?: number | null;
10
- label?: string | null;
11
- maxDepth?: number | null;
12
- }>(), {
13
- hoverExpandDelay: 700,
14
- label: "Tree",
15
- maxDepth: 0,
16
- });
8
+ const props = withDefaults(
9
+ defineProps<{
10
+ hoverExpandDelay?: number
11
+ label?: string
12
+ maxDepth?: number
13
+ }>(),
14
+ {
15
+ hoverExpandDelay: 700,
16
+ label: 'Tree',
17
+ maxDepth: 0,
18
+ },
19
+ )
17
20
  const emit = defineEmits<{
18
- "reorder": [detail: { readonly sourceId: string; readonly targetId: string; readonly position: "before" | "inside" | "after"; readonly sourceType: string; readonly targetType: string; readonly sourceScope: string; readonly targetScope: string; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
19
- "reorder-rejected": [detail: { readonly sourceId: string; readonly targetId: string; readonly position: "before" | "inside" | "after"; readonly reason: "max-depth"; readonly maxDepth: number; readonly resultingDepth: number; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
20
- }>();
21
- const root = ref<HTMLElement | null>(null);
22
- const refs: Record<string, Element | undefined> = {};
21
+ 'update:maxDepth': [value: number]
22
+ reorder: [
23
+ detail: {
24
+ readonly sourceId: string
25
+ readonly targetId: string
26
+ readonly position: 'before' | 'inside' | 'after'
27
+ readonly sourceType: string
28
+ readonly targetType: string
29
+ readonly sourceScope: string
30
+ readonly targetScope: string
31
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
32
+ },
33
+ ]
34
+ 'reorder-rejected': [
35
+ detail: {
36
+ readonly sourceId: string
37
+ readonly targetId: string
38
+ readonly position: 'before' | 'inside' | 'after'
39
+ readonly reason: 'max-depth'
40
+ readonly maxDepth: number
41
+ readonly resultingDepth: number
42
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
43
+ },
44
+ ]
45
+ }>()
46
+
47
+ const root = ref<HTMLElement | null>(null)
23
48
 
24
49
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
25
- const dispatch = (name: string, detail?: unknown): boolean => {
26
- const declared = {"reorder":{"bubbles":true,"composed":true,"cancelable":false},"reorder-rejected":{"bubbles":true,"composed":true,"cancelable":false}} as Record<string, EventInit | undefined>;
50
+ function dispatch(name: string, detail?: unknown): boolean {
51
+ const declared: Record<string, EventInit | undefined> = {
52
+ reorder: { bubbles: true, composed: true, cancelable: false },
53
+ 'reorder-rejected': { bubbles: true, composed: true, cancelable: false },
54
+ }
27
55
  const checks: Record<string, (detail: unknown) => boolean> = {
28
- "reorder": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["sourceId"] === "string" && typeof (detail as Record<string, unknown>)["targetId"] === "string" && ((detail as Record<string, unknown>)["position"] === "before" || (detail as Record<string, unknown>)["position"] === "inside" || (detail as Record<string, unknown>)["position"] === "after") && typeof (detail as Record<string, unknown>)["sourceType"] === "string" && typeof (detail as Record<string, unknown>)["targetType"] === "string" && typeof (detail as Record<string, unknown>)["sourceScope"] === "string" && typeof (detail as Record<string, unknown>)["targetScope"] === "string" && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["sourceId","targetId","position","sourceType","targetType","sourceScope","targetScope","trigger"].includes(key))),
29
- "reorder-rejected": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["sourceId"] === "string" && typeof (detail as Record<string, unknown>)["targetId"] === "string" && ((detail as Record<string, unknown>)["position"] === "before" || (detail as Record<string, unknown>)["position"] === "inside" || (detail as Record<string, unknown>)["position"] === "after") && (detail as Record<string, unknown>)["reason"] === "max-depth" && Number.isInteger((detail as Record<string, unknown>)["maxDepth"]) && Number.isInteger((detail as Record<string, unknown>)["resultingDepth"]) && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["sourceId","targetId","position","reason","maxDepth","resultingDepth","trigger"].includes(key))),
30
- };
56
+ reorder: (detail) =>
57
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
58
+ && typeof (detail as Record<string, unknown>)['sourceId'] === 'string'
59
+ && typeof (detail as Record<string, unknown>)['targetId'] === 'string'
60
+ && ((detail as Record<string, unknown>)['position'] === 'before'
61
+ || (detail as Record<string, unknown>)['position'] === 'inside'
62
+ || (detail as Record<string, unknown>)['position'] === 'after')
63
+ && typeof (detail as Record<string, unknown>)['sourceType'] === 'string'
64
+ && typeof (detail as Record<string, unknown>)['targetType'] === 'string'
65
+ && typeof (detail as Record<string, unknown>)['sourceScope'] === 'string'
66
+ && typeof (detail as Record<string, unknown>)['targetScope'] === 'string'
67
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
68
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
69
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
70
+ && Object.keys(detail as object).every((key) =>
71
+ [
72
+ 'sourceId',
73
+ 'targetId',
74
+ 'position',
75
+ 'sourceType',
76
+ 'targetType',
77
+ 'sourceScope',
78
+ 'targetScope',
79
+ 'trigger',
80
+ ].includes(key)
81
+ ),
82
+ 'reorder-rejected': (detail) =>
83
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
84
+ && typeof (detail as Record<string, unknown>)['sourceId'] === 'string'
85
+ && typeof (detail as Record<string, unknown>)['targetId'] === 'string'
86
+ && ((detail as Record<string, unknown>)['position'] === 'before'
87
+ || (detail as Record<string, unknown>)['position'] === 'inside'
88
+ || (detail as Record<string, unknown>)['position'] === 'after')
89
+ && (detail as Record<string, unknown>)['reason'] === 'max-depth'
90
+ && Number.isInteger((detail as Record<string, unknown>)['maxDepth'])
91
+ && Number.isInteger((detail as Record<string, unknown>)['resultingDepth'])
92
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
93
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
94
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
95
+ && Object.keys(detail as object).every((key) =>
96
+ ['sourceId', 'targetId', 'position', 'reason', 'maxDepth', 'resultingDepth', 'trigger']
97
+ .includes(key)
98
+ ),
99
+ }
31
100
  if (detail !== undefined && checks[name] !== undefined && !checks[name]!(detail)) {
32
- throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
101
+ throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`)
33
102
  }
34
- (emit as (name: string, detail: unknown) => void)(name, detail);
35
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail })) ?? true;
36
- };
103
+ const emitEvent = emit as (name: string, detail: unknown) => void
104
+ emitEvent(name, detail)
105
+ if (detail !== null && typeof detail === 'object' && 'maxDepth' in detail) {
106
+ emitEvent('update:maxDepth', (detail as Record<string, unknown>)['maxDepth'])
107
+ }
108
+ return root.value?.dispatchEvent(
109
+ new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail }),
110
+ ) ?? true
111
+ }
37
112
 
38
113
  function read(name: string): unknown {
39
- return (props as Record<string, unknown>)[name];
114
+ return (props as Record<string, unknown>)[name]
40
115
  }
41
116
 
42
117
  function write(name: string, value: unknown): boolean {
43
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
118
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
44
119
  }
45
120
 
46
- const stops: Array<() => void> = [];
121
+ const stops: Array<() => void> = []
47
122
  const host = {
48
- get element(): Element { return root.value as Element; },
123
+ get element(): Element {
124
+ return root.value as Element
125
+ },
49
126
  state: new Proxy({} as Record<string, unknown>, {
50
- get: (_target, name) => typeof name === "string" ? read(name) : undefined,
51
- set: (_target, name, value) => typeof name === "string" && write(name, value),
127
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
128
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
52
129
  }),
53
- refs: refs as Readonly<Record<string, Element>>,
130
+ refs: {} as Readonly<Record<string, Element>>,
54
131
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
55
132
  get: (_target, name) => {
56
- if (typeof name !== "string" || root.value === null) return undefined;
57
- const form = root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form");
58
- return form?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined;
133
+ if (typeof name !== 'string' || root.value === null) return undefined
134
+ const form = root.value instanceof HTMLFormElement
135
+ ? root.value
136
+ : root.value.querySelector('form')
137
+ return form?.elements.namedItem(name)
138
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
59
139
  },
60
140
  }),
61
141
  signal<T>(initialValue: T) {
62
- const value = shallowRef(initialValue);
142
+ const value = shallowRef(initialValue)
63
143
  return {
64
144
  get: (): T => value.value,
65
- set: (next: T): void => { if (!Object.is(value.value, next)) value.value = next; },
66
- update: (next: (current: T) => T): void => { const updated = next(value.value); if (!Object.is(value.value, updated)) value.value = updated; },
67
- };
145
+ set: (next: T): void => {
146
+ if (!Object.is(value.value, next)) value.value = next
147
+ },
148
+ update: (next: (current: T) => T): void => {
149
+ const updated = next(value.value)
150
+ if (!Object.is(value.value, updated)) value.value = updated
151
+ },
152
+ }
68
153
  },
69
154
  computed<T>(compute: () => T) {
70
- const value = computed(compute);
71
- return { get: (): T => value.value };
155
+ const value = computed(compute)
156
+ return { get: (): T => value.value }
72
157
  },
73
158
  effect(run: () => void | (() => void)): () => void {
74
159
  const stop = watchEffect((onCleanup) => {
75
- const cleanup = run();
76
- if (typeof cleanup === "function") onCleanup(cleanup);
77
- }, { flush: "post" });
78
- stops.push(stop);
79
- return stop;
160
+ const cleanup = run()
161
+ if (typeof cleanup === 'function') onCleanup(cleanup)
162
+ }, { flush: 'post' })
163
+ stops.push(stop)
164
+ return stop
80
165
  },
81
166
  on(event: string, listener: EventListener): () => void {
82
- const element = root.value;
83
- element?.addEventListener(event, listener);
84
- const off = (): void => element?.removeEventListener(event, listener);
85
- stops.push(off);
86
- return off;
167
+ const element = root.value
168
+ element?.addEventListener(event, listener)
169
+ const off = (): void => element?.removeEventListener(event, listener)
170
+ stops.push(off)
171
+ return off
87
172
  },
88
173
  dispatch,
89
- };
174
+ }
90
175
 
91
- let cleanup: void | (() => void);
92
- let ready: Promise<void> | undefined;
176
+ let cleanup: void | (() => void)
177
+ let ready: Promise<void> | undefined
93
178
  onMounted(() => {
94
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
95
- });
179
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
180
+ cleanup = result
181
+ })
182
+ })
96
183
  onBeforeUnmount(() => {
97
- for (const stop of stops.splice(0)) stop();
98
- if (typeof cleanup === "function") cleanup();
99
- });
184
+ for (const stop of stops.splice(0)) stop()
185
+ if (typeof cleanup === 'function') cleanup()
186
+ })
100
187
  </script>
101
188
 
102
189
  <template>
103
- <div data-component="ui-tree" role="tree" v-bind="$attrs" ref="root"><slot></slot></div>
190
+ <div data-component="ui-tree" role="tree" v-bind="$attrs" ref="root"><slot /></div>
104
191
  </template>
105
192
 
106
193
  <style scoped>
107
194
  [data-component~="ui-tree"] {
108
- display: block;
109
- min-inline-size: 0;
110
- padding-inline-start: var(--ui-tree-gutter, 0px);
111
- }
195
+ display: block;
196
+ min-inline-size: 0;
197
+ padding-inline-start: var(--ui-tree-gutter, 0px);
198
+ }
112
199
 
113
- /* A component that sets its display still honours the hidden attribute on its root. */
114
- [data-component~="ui-tree"][hidden] {
115
- display: none;
116
- }
200
+ /* A component that sets its display still honours the hidden attribute on its root. */
201
+ [data-component~="ui-tree"][hidden] {
202
+ display: none;
203
+ }
117
204
  </style>
@@ -1,16 +1,16 @@
1
1
  type __VLS_Props = {
2
- accepts?: string | null;
3
- container?: boolean | null;
4
- disabled?: boolean | null;
5
- dragType?: string | null;
6
- dropDepth?: number | null;
7
- dropScope?: string | null;
8
- expanded?: boolean | null;
9
- itemId?: string | null;
10
- label?: string | null;
11
- selected?: boolean | null;
12
- sortable?: boolean | null;
13
- subtreeDepth?: number | null;
2
+ accepts?: string;
3
+ container?: boolean;
4
+ disabled?: boolean;
5
+ dragType?: string;
6
+ dropDepth?: number;
7
+ dropScope?: string;
8
+ expanded?: boolean;
9
+ itemId?: string;
10
+ label?: string;
11
+ selected?: boolean;
12
+ sortable?: boolean;
13
+ subtreeDepth?: number;
14
14
  };
15
15
  declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
16
16
  type __VLS_Slots = {} & {
@@ -23,28 +23,30 @@ type __VLS_Slots = {} & {
23
23
  default?: (props: typeof __VLS_7) => any;
24
24
  };
25
25
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
26
+ "update:expanded": (value: boolean) => any;
26
27
  expand: (detail: {
27
28
  readonly id: string;
28
29
  readonly expanded: boolean;
29
30
  readonly trigger: "keyboard" | "pointer" | "programmatic";
30
31
  }) => any;
31
32
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
33
+ "onUpdate:expanded"?: ((value: boolean) => any) | undefined;
32
34
  onExpand?: ((detail: {
33
35
  readonly id: string;
34
36
  readonly expanded: boolean;
35
37
  readonly trigger: "keyboard" | "pointer" | "programmatic";
36
38
  }) => any) | undefined;
37
39
  }>, {
38
- label: string | null;
39
- disabled: boolean | null;
40
- selected: boolean | null;
41
- expanded: boolean | null;
42
- accepts: string | null;
43
- container: boolean | null;
44
- dragType: string | null;
45
- dropScope: string | null;
46
- itemId: string | null;
47
- sortable: boolean | null;
40
+ label: string;
41
+ disabled: boolean;
42
+ selected: boolean;
43
+ expanded: boolean;
44
+ accepts: string;
45
+ container: boolean;
46
+ dragType: string;
47
+ dropScope: string;
48
+ itemId: string;
49
+ sortable: boolean;
48
50
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
49
51
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
50
52
  declare const _default: typeof __VLS_export;