@threadlabs/looma 0.6.4 → 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 (247) hide show
  1. package/package.json +2 -2
  2. package/styles/ui-affordance-scope.css +1 -1
  3. package/styles/ui-avatar-group.css +1 -1
  4. package/styles/ui-avatar.css +1 -1
  5. package/styles/ui-badge.css +1 -1
  6. package/styles/ui-button.css +1 -1
  7. package/styles/ui-callout.css +1 -1
  8. package/styles/ui-checkbox.css +1 -1
  9. package/styles/ui-cluster.css +1 -1
  10. package/styles/ui-combobox.css +1 -1
  11. package/styles/ui-container.css +1 -1
  12. package/styles/ui-context-menu.css +1 -1
  13. package/styles/ui-dialog.css +1 -1
  14. package/styles/ui-disclosure.css +1 -1
  15. package/styles/ui-editable.css +1 -1
  16. package/styles/ui-editor-insert-table-grid.css +1 -1
  17. package/styles/ui-editor-mention-menu.css +1 -1
  18. package/styles/ui-editor-slash-menu.css +1 -1
  19. package/styles/ui-editor-table-context-menu.css +1 -1
  20. package/styles/ui-editor-table-overlay.css +1 -1
  21. package/styles/ui-editor-table-toolbar.css +1 -1
  22. package/styles/ui-editor-toolbar.css +1 -1
  23. package/styles/ui-floating-action-button.css +1 -1
  24. package/styles/ui-form-field.css +1 -1
  25. package/styles/ui-grid.css +1 -1
  26. package/styles/ui-icon-button.css +1 -1
  27. package/styles/ui-icon.css +1 -1
  28. package/styles/ui-input.css +1 -1
  29. package/styles/ui-menu-item.css +1 -1
  30. package/styles/ui-menu.css +1 -1
  31. package/styles/ui-popover.css +1 -1
  32. package/styles/ui-radio-group.css +1 -1
  33. package/styles/ui-radio.css +1 -1
  34. package/styles/ui-reel.css +1 -1
  35. package/styles/ui-search-result-row.css +1 -1
  36. package/styles/ui-search-shell.css +1 -1
  37. package/styles/ui-select.css +1 -1
  38. package/styles/ui-separator.css +1 -1
  39. package/styles/ui-sidebar.css +1 -1
  40. package/styles/ui-stack.css +1 -1
  41. package/styles/ui-switch.css +1 -1
  42. package/styles/ui-switcher.css +1 -1
  43. package/styles/ui-tabs.css +1 -1
  44. package/styles/ui-textarea.css +1 -1
  45. package/styles/ui-toast-region.css +1 -1
  46. package/styles/ui-tooltip.css +1 -1
  47. package/styles/ui-top-bar.css +1 -1
  48. package/styles/ui-tree-item.css +1 -1
  49. package/styles/ui-tree.css +1 -1
  50. package/vanilla/UiAffordanceScope.d.ts +1 -1
  51. package/vanilla/UiAffordanceScope.js +1 -1
  52. package/vanilla/UiAvatar.d.ts +1 -1
  53. package/vanilla/UiAvatar.js +1 -1
  54. package/vanilla/UiAvatarGroup.d.ts +1 -1
  55. package/vanilla/UiAvatarGroup.js +1 -1
  56. package/vanilla/UiBadge.d.ts +1 -1
  57. package/vanilla/UiBadge.js +1 -1
  58. package/vanilla/UiButton.d.ts +1 -1
  59. package/vanilla/UiButton.js +1 -1
  60. package/vanilla/UiCallout.d.ts +1 -1
  61. package/vanilla/UiCallout.js +1 -1
  62. package/vanilla/UiCheckbox.d.ts +1 -1
  63. package/vanilla/UiCheckbox.js +1 -1
  64. package/vanilla/UiCluster.d.ts +1 -1
  65. package/vanilla/UiCluster.js +1 -1
  66. package/vanilla/UiCombobox.d.ts +1 -1
  67. package/vanilla/UiCombobox.js +1 -1
  68. package/vanilla/UiContainer.d.ts +1 -1
  69. package/vanilla/UiContainer.js +1 -1
  70. package/vanilla/UiContextMenu.d.ts +1 -1
  71. package/vanilla/UiContextMenu.js +1 -1
  72. package/vanilla/UiDialog.d.ts +1 -1
  73. package/vanilla/UiDialog.js +1 -1
  74. package/vanilla/UiDisclosure.d.ts +1 -1
  75. package/vanilla/UiDisclosure.js +1 -1
  76. package/vanilla/UiEditable.d.ts +1 -1
  77. package/vanilla/UiEditable.js +1 -1
  78. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  79. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  80. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  81. package/vanilla/UiEditorMentionMenu.js +1 -1
  82. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  83. package/vanilla/UiEditorSlashMenu.js +1 -1
  84. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  85. package/vanilla/UiEditorTableContextMenu.js +1 -1
  86. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  87. package/vanilla/UiEditorTableOverlay.js +1 -1
  88. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  89. package/vanilla/UiEditorTableToolbar.js +1 -1
  90. package/vanilla/UiEditorToolbar.d.ts +1 -1
  91. package/vanilla/UiEditorToolbar.js +1 -1
  92. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  93. package/vanilla/UiFloatingActionButton.js +1 -1
  94. package/vanilla/UiFormField.d.ts +1 -1
  95. package/vanilla/UiFormField.js +1 -1
  96. package/vanilla/UiGrid.d.ts +1 -1
  97. package/vanilla/UiGrid.js +1 -1
  98. package/vanilla/UiIcon.d.ts +1 -1
  99. package/vanilla/UiIcon.js +1 -1
  100. package/vanilla/UiIconButton.d.ts +1 -1
  101. package/vanilla/UiIconButton.js +1 -1
  102. package/vanilla/UiInput.d.ts +1 -1
  103. package/vanilla/UiInput.js +1 -1
  104. package/vanilla/UiMenu.d.ts +1 -1
  105. package/vanilla/UiMenu.js +1 -1
  106. package/vanilla/UiMenuItem.d.ts +1 -1
  107. package/vanilla/UiMenuItem.js +1 -1
  108. package/vanilla/UiPopover.d.ts +1 -1
  109. package/vanilla/UiPopover.js +1 -1
  110. package/vanilla/UiRadio.d.ts +1 -1
  111. package/vanilla/UiRadio.js +1 -1
  112. package/vanilla/UiRadioGroup.d.ts +1 -1
  113. package/vanilla/UiRadioGroup.js +1 -1
  114. package/vanilla/UiReel.d.ts +1 -1
  115. package/vanilla/UiReel.js +1 -1
  116. package/vanilla/UiSearchResultRow.d.ts +1 -1
  117. package/vanilla/UiSearchResultRow.js +1 -1
  118. package/vanilla/UiSearchShell.d.ts +1 -1
  119. package/vanilla/UiSearchShell.js +1 -1
  120. package/vanilla/UiSelect.d.ts +1 -1
  121. package/vanilla/UiSelect.js +1 -1
  122. package/vanilla/UiSeparator.d.ts +1 -1
  123. package/vanilla/UiSeparator.js +1 -1
  124. package/vanilla/UiSidebar.d.ts +1 -1
  125. package/vanilla/UiSidebar.js +1 -1
  126. package/vanilla/UiStack.d.ts +1 -1
  127. package/vanilla/UiStack.js +1 -1
  128. package/vanilla/UiSwitch.d.ts +1 -1
  129. package/vanilla/UiSwitch.js +1 -1
  130. package/vanilla/UiSwitcher.d.ts +1 -1
  131. package/vanilla/UiSwitcher.js +1 -1
  132. package/vanilla/UiTabs.d.ts +1 -1
  133. package/vanilla/UiTabs.js +1 -1
  134. package/vanilla/UiTextarea.d.ts +1 -1
  135. package/vanilla/UiTextarea.js +1 -1
  136. package/vanilla/UiToastRegion.d.ts +1 -1
  137. package/vanilla/UiToastRegion.js +1 -1
  138. package/vanilla/UiTooltip.d.ts +1 -1
  139. package/vanilla/UiTooltip.js +1 -1
  140. package/vanilla/UiTopBar.d.ts +1 -1
  141. package/vanilla/UiTopBar.js +1 -1
  142. package/vanilla/UiTree.d.ts +1 -1
  143. package/vanilla/UiTree.js +1 -1
  144. package/vanilla/UiTreeItem.d.ts +1 -1
  145. package/vanilla/UiTreeItem.js +1 -1
  146. package/vue/UiAffordanceScope.vue +8 -84
  147. package/vue/UiAvatar.d.ts +1 -1
  148. package/vue/UiAvatar.vue +9 -106
  149. package/vue/UiAvatarGroup.vue +9 -96
  150. package/vue/UiBadge.vue +1 -1
  151. package/vue/UiButton.vue +1 -1
  152. package/vue/UiCallout.vue +1 -1
  153. package/vue/UiCheckbox.vue +22 -123
  154. package/vue/UiCluster.vue +1 -1
  155. package/vue/UiCombobox.d.ts +1 -1
  156. package/vue/UiCombobox.vue +224 -475
  157. package/vue/UiContainer.vue +1 -1
  158. package/vue/UiContextMenu.vue +34 -141
  159. package/vue/UiDialog.vue +25 -126
  160. package/vue/UiDisclosure.vue +26 -138
  161. package/vue/UiEditable.vue +46 -158
  162. package/vue/UiEditorInsertTableGrid.vue +19 -138
  163. package/vue/UiEditorMentionMenu.vue +17 -124
  164. package/vue/UiEditorSlashMenu.vue +17 -109
  165. package/vue/UiEditorTableContextMenu.vue +34 -122
  166. package/vue/UiEditorTableOverlay.vue +61 -167
  167. package/vue/UiEditorTableToolbar.vue +34 -142
  168. package/vue/UiEditorToolbar.vue +1 -1
  169. package/vue/UiFloatingActionButton.vue +1 -1
  170. package/vue/UiFormField.vue +7 -79
  171. package/vue/UiGrid.vue +1 -1
  172. package/vue/UiIcon.vue +8 -84
  173. package/vue/UiIconButton.vue +7 -79
  174. package/vue/UiInput.vue +7 -79
  175. package/vue/UiMenu.vue +42 -127
  176. package/vue/UiMenuItem.vue +1 -1
  177. package/vue/UiPopover.vue +25 -121
  178. package/vue/UiRadio.vue +22 -123
  179. package/vue/UiRadioGroup.d.ts +1 -1
  180. package/vue/UiRadioGroup.vue +32 -119
  181. package/vue/UiReel.vue +1 -1
  182. package/vue/UiSearchResultRow.vue +1 -1
  183. package/vue/UiSearchShell.vue +25 -121
  184. package/vue/UiSelect.vue +7 -79
  185. package/vue/UiSeparator.vue +1 -1
  186. package/vue/UiSidebar.vue +32 -133
  187. package/vue/UiStack.vue +1 -1
  188. package/vue/UiSwitch.vue +22 -123
  189. package/vue/UiSwitcher.vue +1 -1
  190. package/vue/UiTabs.vue +24 -128
  191. package/vue/UiTextarea.vue +7 -79
  192. package/vue/UiToastRegion.vue +37 -126
  193. package/vue/UiTooltip.vue +25 -124
  194. package/vue/UiTopBar.vue +1 -1
  195. package/vue/UiTree.vue +56 -137
  196. package/vue/UiTreeItem.vue +28 -144
  197. package/vue/chunks/UiAffordanceScope.js +9 -78
  198. package/vue/chunks/UiAvatar.js +13 -89
  199. package/vue/chunks/UiAvatarGroup.js +10 -80
  200. package/vue/chunks/UiBadge.js +1 -1
  201. package/vue/chunks/UiButton.js +1 -1
  202. package/vue/chunks/UiCallout.js +1 -1
  203. package/vue/chunks/UiCheckbox.js +17 -95
  204. package/vue/chunks/UiCluster.js +1 -1
  205. package/vue/chunks/UiCombobox.js +114 -325
  206. package/vue/chunks/UiContainer.js +1 -1
  207. package/vue/chunks/UiContextMenu.js +21 -113
  208. package/vue/chunks/UiDialog.js +20 -99
  209. package/vue/chunks/UiDisclosure.js +22 -112
  210. package/vue/chunks/UiEditable.js +32 -128
  211. package/vue/chunks/UiEditorInsertTableGrid.js +22 -116
  212. package/vue/chunks/UiEditorMentionMenu.js +18 -116
  213. package/vue/chunks/UiEditorSlashMenu.js +15 -101
  214. package/vue/chunks/UiEditorTableContextMenu.js +12 -91
  215. package/vue/chunks/UiEditorTableOverlay.js +29 -120
  216. package/vue/chunks/UiEditorTableToolbar.js +16 -111
  217. package/vue/chunks/UiEditorToolbar.js +1 -1
  218. package/vue/chunks/UiFloatingActionButton.js +1 -1
  219. package/vue/chunks/UiFormField.js +8 -73
  220. package/vue/chunks/UiGrid.js +1 -1
  221. package/vue/chunks/UiIcon.js +9 -78
  222. package/vue/chunks/UiIconButton.js +8 -73
  223. package/vue/chunks/UiInput.js +8 -73
  224. package/vue/chunks/UiMenu.js +25 -111
  225. package/vue/chunks/UiMenuItem.js +1 -1
  226. package/vue/chunks/UiPopover.js +18 -105
  227. package/vue/chunks/UiRadio.js +17 -95
  228. package/vue/chunks/UiRadioGroup.js +23 -105
  229. package/vue/chunks/UiReel.js +1 -1
  230. package/vue/chunks/UiSearchResultRow.js +1 -1
  231. package/vue/chunks/UiSearchShell.js +17 -94
  232. package/vue/chunks/UiSelect.js +8 -73
  233. package/vue/chunks/UiSeparator.js +1 -1
  234. package/vue/chunks/UiSidebar.js +23 -108
  235. package/vue/chunks/UiStack.js +1 -1
  236. package/vue/chunks/UiSwitch.js +17 -95
  237. package/vue/chunks/UiSwitcher.js +1 -1
  238. package/vue/chunks/UiTabs.js +22 -103
  239. package/vue/chunks/UiTextarea.js +8 -73
  240. package/vue/chunks/UiToastRegion.js +27 -112
  241. package/vue/chunks/UiTooltip.js +18 -106
  242. package/vue/chunks/UiTopBar.js +1 -1
  243. package/vue/chunks/UiTree.js +31 -109
  244. package/vue/chunks/UiTreeItem.js +29 -119
  245. package/vue/chunks/host.js +101 -0
  246. package/vue/components.css +706 -706
  247. package/vue/host.ts +154 -0
@@ -1,7 +1,8 @@
1
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
1
2
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
3
  import { t as UiBadge_default } from "./UiBadge.js";
3
4
  import { t as UiTooltip_default } from "./UiTooltip.js";
4
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, useTemplateRef, watchEffect, withCtx } from "vue";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, useTemplateRef, withCtx } from "vue";
5
6
  import * as controllerModule from "@threadlabs/looma/components/ui-combobox/ui-combobox.js";
6
7
  //#region .build/vue/UiCombobox.vue?vue&type=script&setup=true&lang.ts
7
8
  var _hoisted_1 = ["data-ui-combobox-state"];
@@ -174,338 +175,126 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
174
175
  `validationStatus=${encodeURIComponent(validationStatus.value)}`,
175
176
  props.multiple && "multiple"
176
177
  ].filter(Boolean).join(" "));
177
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
178
- function dispatch(name, detail) {
179
- const declared = {
180
- "query-change": {
181
- bubbles: true,
182
- composed: true,
183
- cancelable: false
184
- },
185
- "value-change": {
186
- bubbles: true,
187
- composed: true,
188
- cancelable: false
189
- },
190
- "free-entry": {
191
- bubbles: true,
192
- composed: true,
193
- cancelable: false
194
- },
195
- "create-entry": {
196
- bubbles: true,
197
- composed: true,
198
- cancelable: false
199
- },
200
- "validation-change": {
201
- bubbles: true,
202
- composed: true,
203
- cancelable: false
204
- },
205
- "options-change": {
206
- bubbles: true,
207
- composed: true,
208
- cancelable: false
209
- },
210
- "add-item": {
211
- bubbles: true,
212
- composed: true,
213
- cancelable: false
214
- },
215
- "remove-item": {
216
- bubbles: true,
217
- composed: true,
218
- cancelable: false
219
- },
220
- "create-item": {
221
- bubbles: true,
222
- composed: true,
223
- cancelable: false
224
- }
225
- };
226
- const checks = {
227
- "query-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
228
- "query",
229
- "display",
230
- "trigger"
231
- ].includes(key)),
232
- "value-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
233
- "id",
234
- "value",
235
- "label",
236
- "group",
237
- "disabled"
238
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
239
- "value",
240
- "query",
241
- "option",
242
- "kind",
243
- "trigger"
244
- ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
245
- "id",
246
- "value",
247
- "label",
248
- "group",
249
- "disabled"
250
- ].includes(key))),
251
- "free-entry": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
252
- "id",
253
- "value",
254
- "label",
255
- "group",
256
- "disabled"
257
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
258
- "value",
259
- "query",
260
- "option",
261
- "kind",
262
- "trigger"
263
- ].includes(key)),
264
- "create-entry": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
265
- "id",
266
- "value",
267
- "label",
268
- "group",
269
- "disabled"
270
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
271
- "value",
272
- "query",
273
- "option",
274
- "kind",
275
- "trigger"
276
- ].includes(key)),
277
- "validation-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["status"] === "pristine" || detail["status"] === "pending" || detail["status"] === "valid" || detail["status"] === "warning" || detail["status"] === "error") && typeof detail["touched"] === "boolean" && typeof detail["dirty"] === "boolean" && Array.isArray(detail["issues"]) && detail["issues"].every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["message"] === "string" && (item["path"] === void 0 || Array.isArray(item["path"]) && item["path"].every((item) => true)) && (item["severity"] === void 0 || item["severity"] === "error" || item["severity"] === "warning") && Object.keys(item).every((key) => [
278
- "message",
279
- "path",
280
- "severity"
281
- ].includes(key))) && (detail["output"] === void 0 || true) && Object.keys(detail).every((key) => [
282
- "status",
283
- "touched",
284
- "dirty",
285
- "issues",
286
- "output"
287
- ].includes(key)),
288
- "options-change": (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
289
- "id",
290
- "value",
291
- "label",
292
- "group",
293
- "disabled"
294
- ].includes(key))),
295
- "add-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
296
- "id",
297
- "value",
298
- "label",
299
- "group",
300
- "disabled"
301
- ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
302
- "item",
303
- "index",
304
- "trigger"
305
- ].includes(key)),
306
- "remove-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
307
- "id",
308
- "value",
309
- "label",
310
- "group",
311
- "disabled"
312
- ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
313
- "item",
314
- "index",
315
- "trigger"
316
- ].includes(key)),
317
- "create-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["query", "trigger"].includes(key))
318
- };
319
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
320
- const emitEvent = emit;
321
- emitEvent(name, detail);
322
- if (detail !== null && typeof detail === "object" && "query" in detail) emitEvent("update:query", detail["query"]);
323
- if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
324
- return root.value?.dispatchEvent(new CustomEvent(name, {
325
- bubbles: true,
326
- composed: true,
327
- ...declared[name],
328
- detail
329
- })) ?? true;
330
- }
331
- function read(name) {
332
- if (name === "internalItems") return internalItems.value;
333
- if (name === "raw") return raw.value;
334
- if (name === "display") return display.value;
335
- if (name === "selected") return selected.value;
336
- if (name === "expanded") return expanded.value;
337
- if (name === "rows") return rows.value;
338
- if (name === "active") return active.value;
339
- if (name === "loading") return loading.value;
340
- if (name === "helpOpen") return helpOpen.value;
341
- if (name === "lookupError") return lookupError.value;
342
- if (name === "validation") return validation.value;
343
- if (name === "uid") return uid.value;
344
- if (name === "groups") return groups.value;
345
- if (name === "creatable") return creatable.value;
346
- if (name === "createIndex") return createIndex.value;
347
- if (name === "message") return message.value;
348
- if (name === "statusText") return statusText.value;
349
- if (name === "validationStatus") return validationStatus.value;
350
- return props[name];
351
- }
352
- function write(name, value) {
353
- if (name === "internalItems") {
354
- internalItems.value = value;
355
- return true;
356
- }
357
- if (name === "raw") {
358
- raw.value = value;
359
- return true;
360
- }
361
- if (name === "display") {
362
- display.value = value;
363
- return true;
364
- }
365
- if (name === "selected") {
366
- selected.value = value;
367
- return true;
368
- }
369
- if (name === "expanded") {
370
- expanded.value = value;
371
- return true;
372
- }
373
- if (name === "rows") {
374
- rows.value = value;
375
- return true;
376
- }
377
- if (name === "active") {
378
- active.value = value;
379
- return true;
380
- }
381
- if (name === "loading") {
382
- loading.value = value;
383
- return true;
384
- }
385
- if (name === "helpOpen") {
386
- helpOpen.value = value;
387
- return true;
388
- }
389
- if (name === "lookupError") {
390
- lookupError.value = value;
391
- return true;
392
- }
393
- if (name === "validation") {
394
- validation.value = value;
395
- return true;
396
- }
397
- if (name === "uid") {
398
- uid.value = value;
399
- return true;
400
- }
401
- if (name === "groups") {
402
- groups.value = value;
403
- return true;
404
- }
405
- if (name === "creatable") {
406
- creatable.value = value;
407
- return true;
408
- }
409
- if (name === "createIndex") {
410
- createIndex.value = value;
411
- return true;
412
- }
413
- if (name === "message") {
414
- message.value = value;
415
- return true;
416
- }
417
- if (name === "statusText") {
418
- statusText.value = value;
419
- return true;
420
- }
421
- if (name === "validationStatus") {
422
- validationStatus.value = value;
423
- return true;
424
- }
425
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
426
- }
427
- const stops = [];
428
- const host = {
429
- get element() {
430
- return root.value;
178
+ const isQueryChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
179
+ "query",
180
+ "display",
181
+ "trigger"
182
+ ].includes(key));
183
+ const isValueChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
184
+ "id",
185
+ "value",
186
+ "label",
187
+ "group",
188
+ "disabled"
189
+ ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
190
+ "value",
191
+ "query",
192
+ "option",
193
+ "kind",
194
+ "trigger"
195
+ ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
196
+ "id",
197
+ "value",
198
+ "label",
199
+ "group",
200
+ "disabled"
201
+ ].includes(key)));
202
+ const isFreeEntryDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
203
+ "id",
204
+ "value",
205
+ "label",
206
+ "group",
207
+ "disabled"
208
+ ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
209
+ "value",
210
+ "query",
211
+ "option",
212
+ "kind",
213
+ "trigger"
214
+ ].includes(key));
215
+ const isValidationChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["status"] === "pristine" || detail["status"] === "pending" || detail["status"] === "valid" || detail["status"] === "warning" || detail["status"] === "error") && typeof detail["touched"] === "boolean" && typeof detail["dirty"] === "boolean" && Array.isArray(detail["issues"]) && detail["issues"].every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["message"] === "string" && (item["path"] === void 0 || Array.isArray(item["path"]) && item["path"].every((item) => true)) && (item["severity"] === void 0 || item["severity"] === "error" || item["severity"] === "warning") && Object.keys(item).every((key) => [
216
+ "message",
217
+ "path",
218
+ "severity"
219
+ ].includes(key))) && (detail["output"] === void 0 || true) && Object.keys(detail).every((key) => [
220
+ "status",
221
+ "touched",
222
+ "dirty",
223
+ "issues",
224
+ "output"
225
+ ].includes(key));
226
+ const isOptionsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
227
+ "id",
228
+ "value",
229
+ "label",
230
+ "group",
231
+ "disabled"
232
+ ].includes(key)));
233
+ const isAddItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
234
+ "id",
235
+ "value",
236
+ "label",
237
+ "group",
238
+ "disabled"
239
+ ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
240
+ "item",
241
+ "index",
242
+ "trigger"
243
+ ].includes(key));
244
+ const isCreateItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["query", "trigger"].includes(key));
245
+ const dispatch = createDispatch(root, emit, {
246
+ checks: {
247
+ "query-change": isQueryChangeDetail,
248
+ "value-change": isValueChangeDetail,
249
+ "free-entry": isFreeEntryDetail,
250
+ "create-entry": isFreeEntryDetail,
251
+ "validation-change": isValidationChangeDetail,
252
+ "options-change": isOptionsChangeDetail,
253
+ "add-item": isAddItemDetail,
254
+ "remove-item": isAddItemDetail,
255
+ "create-item": isCreateItemDetail
431
256
  },
432
- state: new Proxy({}, {
433
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
434
- set: (_target, name, value) => typeof name === "string" && write(name, value)
435
- }),
257
+ modeled: ["query", "value"]
258
+ });
259
+ const { host, ready } = useComponentHost(controllerModule.default, {
260
+ root,
261
+ dispatch,
262
+ props,
436
263
  refs: {
437
- get field() {
438
- return fieldElement.value;
439
- },
440
- get input() {
441
- return inputElement.value;
442
- },
443
- get popup() {
444
- return popupElement.value;
445
- },
446
- get listbox() {
447
- return listboxElement.value;
448
- },
449
- get options() {
450
- return optionsElement.value;
451
- }
452
- },
453
- elements: new Proxy({}, { get: (_target, name) => {
454
- if (typeof name !== "string" || root.value === null) return void 0;
455
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
456
- } }),
457
- signal(initialValue) {
458
- const value = shallowRef(initialValue);
459
- return {
460
- get: () => value.value,
461
- set: (next) => {
462
- if (!Object.is(value.value, next)) value.value = next;
463
- },
464
- update: (next) => {
465
- const updated = next(value.value);
466
- if (!Object.is(value.value, updated)) value.value = updated;
467
- }
468
- };
264
+ field: fieldElement,
265
+ input: inputElement,
266
+ popup: popupElement,
267
+ listbox: listboxElement,
268
+ options: optionsElement
469
269
  },
470
- computed(compute) {
471
- const value = computed(compute);
472
- return { get: () => value.value };
473
- },
474
- effect(run) {
475
- const stop = watchEffect((onCleanup) => {
476
- const cleanup = run();
477
- if (typeof cleanup === "function") onCleanup(cleanup);
478
- }, { flush: "post" });
479
- stops.push(stop);
480
- return stop;
481
- },
482
- on(event, listener) {
483
- const element = root.value;
484
- element?.addEventListener(event, listener);
485
- const off = () => element?.removeEventListener(event, listener);
486
- stops.push(off);
487
- return off;
488
- },
489
- dispatch
490
- };
491
- let cleanup;
492
- let ready;
493
- onMounted(() => {
494
- ready = Promise.resolve(controllerModule.default(host)).then((result) => {
495
- cleanup = result;
496
- });
497
- });
498
- onBeforeUnmount(() => {
499
- for (const stop of stops.splice(0)) stop();
500
- if (typeof cleanup === "function") cleanup();
270
+ state: {
271
+ internalItems,
272
+ raw,
273
+ display,
274
+ selected,
275
+ expanded,
276
+ rows,
277
+ active,
278
+ loading,
279
+ helpOpen,
280
+ lookupError,
281
+ validation,
282
+ uid,
283
+ groups,
284
+ creatable,
285
+ createIndex,
286
+ message,
287
+ statusText,
288
+ validationStatus
289
+ }
501
290
  });
502
291
  __expose({
503
292
  validate: async (...args) => {
504
- await ready;
293
+ await ready();
505
294
  return controllerModule["validate"](host, ...args);
506
295
  },
507
296
  focusInput: async (...args) => {
508
- await ready;
297
+ await ready();
509
298
  return controllerModule["focusInput"](host, ...args);
510
299
  }
511
300
  });
@@ -662,6 +451,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
662
451
  ], 16, _hoisted_1);
663
452
  };
664
453
  }
665
- }), [["__scopeId", "data-v-f1d9bb8a"]]);
454
+ }), [["__scopeId", "data-v-aef83c81"]]);
666
455
  //#endregion
667
456
  export { UiCombobox_default as t };
@@ -19,6 +19,6 @@ var UiContainer_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
19
19
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-container" }, _ctx.$attrs, { "data-ui-container-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
20
20
  };
21
21
  }
22
- }), [["__scopeId", "data-v-4c7bb81d"]]);
22
+ }), [["__scopeId", "data-v-89d8ad17"]]);
23
23
  //#endregion
24
24
  export { UiContainer_default as t };
@@ -1,5 +1,6 @@
1
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
1
2
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
+ import { createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, useTemplateRef } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-context-menu/ui-context-menu.js";
4
5
  //#region .build/vue/UiContextMenu.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = {
@@ -32,119 +33,26 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
32
33
  const root = ref(null);
33
34
  const menuElement = useTemplateRef("menu");
34
35
  const internalOpen = ref(false);
35
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
36
- function dispatch(name, detail) {
37
- const declared = {
38
- open: {
39
- bubbles: true,
40
- composed: true,
41
- cancelable: false
42
- },
43
- close: {
44
- bubbles: true,
45
- composed: true,
46
- cancelable: false
47
- },
48
- select: {
49
- bubbles: true,
50
- composed: true,
51
- cancelable: false
52
- }
53
- };
54
- const checks = {
55
- open: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
56
- "open",
57
- "reason",
58
- "trigger"
59
- ].includes(key)),
60
- close: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
61
- "open",
62
- "reason",
63
- "trigger"
64
- ].includes(key)),
65
- select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key))
66
- };
67
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
68
- const emitEvent = emit;
69
- emitEvent(name, detail);
70
- if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
71
- return root.value?.dispatchEvent(new CustomEvent(name, {
72
- bubbles: true,
73
- composed: true,
74
- ...declared[name],
75
- detail
76
- })) ?? true;
77
- }
78
- function read(name) {
79
- if (name === "internalOpen") return internalOpen.value;
80
- return props[name];
81
- }
82
- function write(name, value) {
83
- if (name === "internalOpen") {
84
- internalOpen.value = value;
85
- return true;
86
- }
87
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
88
- }
89
- const stops = [];
90
- const host = {
91
- get element() {
92
- return root.value;
93
- },
94
- state: new Proxy({}, {
95
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
96
- set: (_target, name, value) => typeof name === "string" && write(name, value)
97
- }),
98
- refs: { get menu() {
99
- return menuElement.value;
100
- } },
101
- elements: new Proxy({}, { get: (_target, name) => {
102
- if (typeof name !== "string" || root.value === null) return void 0;
103
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
104
- } }),
105
- signal(initialValue) {
106
- const value = shallowRef(initialValue);
107
- return {
108
- get: () => value.value,
109
- set: (next) => {
110
- if (!Object.is(value.value, next)) value.value = next;
111
- },
112
- update: (next) => {
113
- const updated = next(value.value);
114
- if (!Object.is(value.value, updated)) value.value = updated;
115
- }
116
- };
36
+ const isOpenDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
37
+ "open",
38
+ "reason",
39
+ "trigger"
40
+ ].includes(key));
41
+ const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key));
42
+ const dispatch = createDispatch(root, emit, {
43
+ checks: {
44
+ open: isOpenDetail,
45
+ close: isOpenDetail,
46
+ select: isSelectDetail
117
47
  },
118
- computed(compute) {
119
- const value = computed(compute);
120
- return { get: () => value.value };
121
- },
122
- effect(run) {
123
- const stop = watchEffect((onCleanup) => {
124
- const cleanup = run();
125
- if (typeof cleanup === "function") onCleanup(cleanup);
126
- }, { flush: "post" });
127
- stops.push(stop);
128
- return stop;
129
- },
130
- on(event, listener) {
131
- const element = root.value;
132
- element?.addEventListener(event, listener);
133
- const off = () => element?.removeEventListener(event, listener);
134
- stops.push(off);
135
- return off;
136
- },
137
- dispatch
138
- };
139
- let cleanup;
140
- onMounted(() => {
141
- Promise.resolve(controllerModule.default(host)).then((result) => {
142
- cleanup = result;
143
- });
48
+ modeled: ["open"]
144
49
  });
145
- onBeforeUnmount(() => {
146
- for (const stop of stops.splice(0)) stop();
147
- if (typeof cleanup === "function") cleanup();
50
+ useComponentHost(controllerModule.default, {
51
+ root,
52
+ dispatch,
53
+ props,
54
+ refs: { menu: menuElement },
55
+ state: { internalOpen }
148
56
  });
149
57
  return (_ctx, _cache) => {
150
58
  return openBlock(), createElementBlock("span", mergeProps({ "data-component": "ui-context-menu" }, _ctx.$attrs, {
@@ -153,6 +61,6 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
153
61
  }), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)], 16);
154
62
  };
155
63
  }
156
- }), [["__scopeId", "data-v-39e418e5"]]);
64
+ }), [["__scopeId", "data-v-607c2847"]]);
157
65
  //#endregion
158
66
  export { UiContextMenu_default as t };