@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,6 +1,7 @@
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 UiIcon_default } from "./UiIcon.js";
3
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, watchEffect } from "vue";
4
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderList, toDisplayString } from "vue";
4
5
  import * as controllerModule from "@threadlabs/looma/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js";
5
6
  //#region .build/vue/UiEditorTableToolbar.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["hidden"];
@@ -86,116 +87,20 @@ var UiEditorTableToolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
86
87
  const sections = ref([]);
87
88
  const hasOverflow = ref(false);
88
89
  const overflowOpen = ref(false);
89
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
90
- function dispatch(name, detail) {
91
- const declared = { action: {
92
- bubbles: true,
93
- composed: true,
94
- cancelable: false
95
- } };
96
- const checks = { action: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "align-left" || detail["action"] === "align-center" || detail["action"] === "align-right" || detail["action"] === "background-none" || detail["action"] === "background-gray" || detail["action"] === "background-yellow" || detail["action"] === "background-blue" || detail["action"] === "background-green" || detail["action"] === "background-red" || detail["action"] === "add-row-before" || detail["action"] === "add-row-after" || detail["action"] === "add-column-before" || detail["action"] === "add-column-after" || detail["action"] === "clear-cells" || detail["action"] === "merge-cells" || detail["action"] === "split-cell" || detail["action"] === "delete-row" || detail["action"] === "delete-column" || detail["action"] === "delete-table") && Object.keys(detail).every((key) => ["action"].includes(key)) };
97
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
98
- emit(name, detail);
99
- return root.value?.dispatchEvent(new CustomEvent(name, {
100
- bubbles: true,
101
- composed: true,
102
- ...declared[name],
103
- detail
104
- })) ?? true;
105
- }
106
- function read(name) {
107
- if (name === "alignments") return alignments.value;
108
- if (name === "structure") return structure.value;
109
- if (name === "swatches") return swatches.value;
110
- if (name === "sections") return sections.value;
111
- if (name === "hasOverflow") return hasOverflow.value;
112
- if (name === "overflowOpen") return overflowOpen.value;
113
- return props[name];
114
- }
115
- function write(name, value) {
116
- if (name === "alignments") {
117
- alignments.value = value;
118
- return true;
119
- }
120
- if (name === "structure") {
121
- structure.value = value;
122
- return true;
123
- }
124
- if (name === "swatches") {
125
- swatches.value = value;
126
- return true;
127
- }
128
- if (name === "sections") {
129
- sections.value = value;
130
- return true;
90
+ const isActionDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "align-left" || detail["action"] === "align-center" || detail["action"] === "align-right" || detail["action"] === "background-none" || detail["action"] === "background-gray" || detail["action"] === "background-yellow" || detail["action"] === "background-blue" || detail["action"] === "background-green" || detail["action"] === "background-red" || detail["action"] === "add-row-before" || detail["action"] === "add-row-after" || detail["action"] === "add-column-before" || detail["action"] === "add-column-after" || detail["action"] === "clear-cells" || detail["action"] === "merge-cells" || detail["action"] === "split-cell" || detail["action"] === "delete-row" || detail["action"] === "delete-column" || detail["action"] === "delete-table") && Object.keys(detail).every((key) => ["action"].includes(key));
91
+ const dispatch = createDispatch(root, emit, { checks: { action: isActionDetail } });
92
+ useComponentHost(controllerModule.default, {
93
+ root,
94
+ dispatch,
95
+ props,
96
+ state: {
97
+ alignments,
98
+ structure,
99
+ swatches,
100
+ sections,
101
+ hasOverflow,
102
+ overflowOpen
131
103
  }
132
- if (name === "hasOverflow") {
133
- hasOverflow.value = value;
134
- return true;
135
- }
136
- if (name === "overflowOpen") {
137
- overflowOpen.value = value;
138
- return true;
139
- }
140
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
141
- }
142
- const stops = [];
143
- const host = {
144
- get element() {
145
- return root.value;
146
- },
147
- state: new Proxy({}, {
148
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
149
- set: (_target, name, value) => typeof name === "string" && write(name, value)
150
- }),
151
- refs: {},
152
- elements: new Proxy({}, { get: (_target, name) => {
153
- if (typeof name !== "string" || root.value === null) return void 0;
154
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
155
- } }),
156
- signal(initialValue) {
157
- const value = shallowRef(initialValue);
158
- return {
159
- get: () => value.value,
160
- set: (next) => {
161
- if (!Object.is(value.value, next)) value.value = next;
162
- },
163
- update: (next) => {
164
- const updated = next(value.value);
165
- if (!Object.is(value.value, updated)) value.value = updated;
166
- }
167
- };
168
- },
169
- computed(compute) {
170
- const value = computed(compute);
171
- return { get: () => value.value };
172
- },
173
- effect(run) {
174
- const stop = watchEffect((onCleanup) => {
175
- const cleanup = run();
176
- if (typeof cleanup === "function") onCleanup(cleanup);
177
- }, { flush: "post" });
178
- stops.push(stop);
179
- return stop;
180
- },
181
- on(event, listener) {
182
- const element = root.value;
183
- element?.addEventListener(event, listener);
184
- const off = () => element?.removeEventListener(event, listener);
185
- stops.push(off);
186
- return off;
187
- },
188
- dispatch
189
- };
190
- let cleanup;
191
- onMounted(() => {
192
- Promise.resolve(controllerModule.default(host)).then((result) => {
193
- cleanup = result;
194
- });
195
- });
196
- onBeforeUnmount(() => {
197
- for (const stop of stops.splice(0)) stop();
198
- if (typeof cleanup === "function") cleanup();
199
104
  });
200
105
  return (_ctx, _cache) => {
201
106
  return openBlock(), createElementBlock("div", mergeProps({
@@ -270,6 +175,6 @@ var UiEditorTableToolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
270
175
  ], 16, _hoisted_1);
271
176
  };
272
177
  }
273
- }), [["__scopeId", "data-v-1066cfb2"]]);
178
+ }), [["__scopeId", "data-v-31b70e7c"]]);
274
179
  //#endregion
275
180
  export { UiEditorTableToolbar_default as t };
@@ -23,6 +23,6 @@ var UiEditorToolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
23
23
  }, _ctx.$attrs, { "data-ui-editor-toolbar-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
24
24
  };
25
25
  }
26
- }), [["__scopeId", "data-v-0da1a114"]]);
26
+ }), [["__scopeId", "data-v-b71db5ba"]]);
27
27
  //#endregion
28
28
  export { UiEditorToolbar_default as t };
@@ -37,6 +37,6 @@ var UiFloatingActionButton_default = /*#__PURE__*/ _plugin_vue_export_helper_def
37
37
  }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
38
38
  };
39
39
  }
40
- }), [["__scopeId", "data-v-b66a2428"]]);
40
+ }), [["__scopeId", "data-v-62b77471"]]);
41
41
  //#endregion
42
42
  export { UiFloatingActionButton_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, watchEffect } from "vue";
3
+ import { createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-form-field/ui-form-field.js";
4
5
  //#region .build/vue/UiFormField.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = { class: "label" };
@@ -27,77 +28,11 @@ var UiFormField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
27
28
  setup(__props) {
28
29
  const props = __props;
29
30
  const root = ref(null);
30
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
31
- function dispatch(name, detail) {
32
- return root.value?.dispatchEvent(new CustomEvent(name, {
33
- bubbles: true,
34
- composed: true,
35
- detail
36
- })) ?? true;
37
- }
38
- function read(name) {
39
- return props[name];
40
- }
41
- function write(name, value) {
42
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
43
- }
44
- const stops = [];
45
- const host = {
46
- get element() {
47
- return root.value;
48
- },
49
- state: new Proxy({}, {
50
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
51
- set: (_target, name, value) => typeof name === "string" && write(name, value)
52
- }),
53
- refs: {},
54
- elements: new Proxy({}, { get: (_target, name) => {
55
- if (typeof name !== "string" || root.value === null) return void 0;
56
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
57
- } }),
58
- signal(initialValue) {
59
- const value = shallowRef(initialValue);
60
- return {
61
- get: () => value.value,
62
- set: (next) => {
63
- if (!Object.is(value.value, next)) value.value = next;
64
- },
65
- update: (next) => {
66
- const updated = next(value.value);
67
- if (!Object.is(value.value, updated)) value.value = updated;
68
- }
69
- };
70
- },
71
- computed(compute) {
72
- const value = computed(compute);
73
- return { get: () => value.value };
74
- },
75
- effect(run) {
76
- const stop = watchEffect((onCleanup) => {
77
- const cleanup = run();
78
- if (typeof cleanup === "function") onCleanup(cleanup);
79
- }, { flush: "post" });
80
- stops.push(stop);
81
- return stop;
82
- },
83
- on(event, listener) {
84
- const element = root.value;
85
- element?.addEventListener(event, listener);
86
- const off = () => element?.removeEventListener(event, listener);
87
- stops.push(off);
88
- return off;
89
- },
90
- dispatch
91
- };
92
- let cleanup;
93
- onMounted(() => {
94
- Promise.resolve(controllerModule.default(host)).then((result) => {
95
- cleanup = result;
96
- });
97
- });
98
- onBeforeUnmount(() => {
99
- for (const stop of stops.splice(0)) stop();
100
- if (typeof cleanup === "function") cleanup();
31
+ const dispatch = createDispatch(root);
32
+ useComponentHost(controllerModule.default, {
33
+ root,
34
+ dispatch,
35
+ props
101
36
  });
102
37
  return (_ctx, _cache) => {
103
38
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-form-field" }, _ctx.$attrs, {
@@ -111,6 +46,6 @@ var UiFormField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
111
46
  ], 16);
112
47
  };
113
48
  }
114
- }), [["__scopeId", "data-v-ae3bcdfb"]]);
49
+ }), [["__scopeId", "data-v-605db5c0"]]);
115
50
  //#endregion
116
51
  export { UiFormField_default as t };
@@ -19,6 +19,6 @@ var UiGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
19
19
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-grid" }, _ctx.$attrs, { "data-ui-grid-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
20
20
  };
21
21
  }
22
- }), [["__scopeId", "data-v-356b2957"]]);
22
+ }), [["__scopeId", "data-v-9635be0b"]]);
23
23
  //#endregion
24
24
  export { UiGrid_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 { Fragment, computed, createCommentVNode, createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, watchEffect } from "vue";
3
+ import { Fragment, createCommentVNode, createElementBlock, defineComponent, mergeProps, openBlock, ref, renderList } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-icon/ui-icon.js";
4
5
  //#region .build/vue/UiIcon.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = {
@@ -34,82 +35,12 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
34
35
  const props = __props;
35
36
  const root = ref(null);
36
37
  const shapes = ref([]);
37
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
38
- function dispatch(name, detail) {
39
- return root.value?.dispatchEvent(new CustomEvent(name, {
40
- bubbles: true,
41
- composed: true,
42
- detail
43
- })) ?? true;
44
- }
45
- function read(name) {
46
- if (name === "shapes") return shapes.value;
47
- return props[name];
48
- }
49
- function write(name, value) {
50
- if (name === "shapes") {
51
- shapes.value = value;
52
- return true;
53
- }
54
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
55
- }
56
- const stops = [];
57
- const host = {
58
- get element() {
59
- return root.value;
60
- },
61
- state: new Proxy({}, {
62
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
63
- set: (_target, name, value) => typeof name === "string" && write(name, value)
64
- }),
65
- refs: {},
66
- elements: new Proxy({}, { get: (_target, name) => {
67
- if (typeof name !== "string" || root.value === null) return void 0;
68
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
69
- } }),
70
- signal(initialValue) {
71
- const value = shallowRef(initialValue);
72
- return {
73
- get: () => value.value,
74
- set: (next) => {
75
- if (!Object.is(value.value, next)) value.value = next;
76
- },
77
- update: (next) => {
78
- const updated = next(value.value);
79
- if (!Object.is(value.value, updated)) value.value = updated;
80
- }
81
- };
82
- },
83
- computed(compute) {
84
- const value = computed(compute);
85
- return { get: () => value.value };
86
- },
87
- effect(run) {
88
- const stop = watchEffect((onCleanup) => {
89
- const cleanup = run();
90
- if (typeof cleanup === "function") onCleanup(cleanup);
91
- }, { flush: "post" });
92
- stops.push(stop);
93
- return stop;
94
- },
95
- on(event, listener) {
96
- const element = root.value;
97
- element?.addEventListener(event, listener);
98
- const off = () => element?.removeEventListener(event, listener);
99
- stops.push(off);
100
- return off;
101
- },
102
- dispatch
103
- };
104
- let cleanup;
105
- onMounted(() => {
106
- Promise.resolve(controllerModule.default(host)).then((result) => {
107
- cleanup = result;
108
- });
109
- });
110
- onBeforeUnmount(() => {
111
- for (const stop of stops.splice(0)) stop();
112
- if (typeof cleanup === "function") cleanup();
38
+ const dispatch = createDispatch(root);
39
+ useComponentHost(controllerModule.default, {
40
+ root,
41
+ dispatch,
42
+ props,
43
+ state: { shapes }
113
44
  });
114
45
  return (_ctx, _cache) => {
115
46
  return openBlock(), createElementBlock("span", mergeProps({
@@ -142,6 +73,6 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
142
73
  }), 128))]))], 16);
143
74
  };
144
75
  }
145
- }), [["__scopeId", "data-v-b2b50d17"]]);
76
+ }), [["__scopeId", "data-v-7b1048a0"]]);
146
77
  //#endregion
147
78
  export { UiIcon_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, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
3
+ import { computed, createElementBlock, defineComponent, mergeProps, openBlock, ref, renderSlot } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-icon-button/ui-icon-button.js";
4
5
  //#region .build/vue/UiIconButton.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = [
@@ -39,77 +40,11 @@ var UiIconButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
39
40
  props.size && `size size=${props.size}`,
40
41
  props.round && "round"
41
42
  ].filter(Boolean).join(" "));
42
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
43
- function dispatch(name, detail) {
44
- return root.value?.dispatchEvent(new CustomEvent(name, {
45
- bubbles: true,
46
- composed: true,
47
- detail
48
- })) ?? true;
49
- }
50
- function read(name) {
51
- return props[name];
52
- }
53
- function write(name, value) {
54
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
55
- }
56
- const stops = [];
57
- const host = {
58
- get element() {
59
- return root.value;
60
- },
61
- state: new Proxy({}, {
62
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
63
- set: (_target, name, value) => typeof name === "string" && write(name, value)
64
- }),
65
- refs: {},
66
- elements: new Proxy({}, { get: (_target, name) => {
67
- if (typeof name !== "string" || root.value === null) return void 0;
68
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
69
- } }),
70
- signal(initialValue) {
71
- const value = shallowRef(initialValue);
72
- return {
73
- get: () => value.value,
74
- set: (next) => {
75
- if (!Object.is(value.value, next)) value.value = next;
76
- },
77
- update: (next) => {
78
- const updated = next(value.value);
79
- if (!Object.is(value.value, updated)) value.value = updated;
80
- }
81
- };
82
- },
83
- computed(compute) {
84
- const value = computed(compute);
85
- return { get: () => value.value };
86
- },
87
- effect(run) {
88
- const stop = watchEffect((onCleanup) => {
89
- const cleanup = run();
90
- if (typeof cleanup === "function") onCleanup(cleanup);
91
- }, { flush: "post" });
92
- stops.push(stop);
93
- return stop;
94
- },
95
- on(event, listener) {
96
- const element = root.value;
97
- element?.addEventListener(event, listener);
98
- const off = () => element?.removeEventListener(event, listener);
99
- stops.push(off);
100
- return off;
101
- },
102
- dispatch
103
- };
104
- let cleanup;
105
- onMounted(() => {
106
- Promise.resolve(controllerModule.default(host)).then((result) => {
107
- cleanup = result;
108
- });
109
- });
110
- onBeforeUnmount(() => {
111
- for (const stop of stops.splice(0)) stop();
112
- if (typeof cleanup === "function") cleanup();
43
+ const dispatch = createDispatch(root);
44
+ useComponentHost(controllerModule.default, {
45
+ root,
46
+ dispatch,
47
+ props
113
48
  });
114
49
  return (_ctx, _cache) => {
115
50
  return openBlock(), createElementBlock("button", mergeProps({
@@ -124,6 +59,6 @@ var UiIconButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
124
59
  }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
125
60
  };
126
61
  }
127
- }), [["__scopeId", "data-v-80722d12"]]);
62
+ }), [["__scopeId", "data-v-23aa723d"]]);
128
63
  //#endregion
129
64
  export { UiIconButton_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, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, shallowRef, vModelDynamic, watchEffect, withDirectives } from "vue";
3
+ import { computed, createElementBlock, defineComponent, mergeProps, openBlock, ref, vModelDynamic, withDirectives } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-input/ui-input.js";
4
5
  //#region .build/vue/UiInput.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = [
@@ -42,77 +43,11 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
42
43
  set: (value) => emit("update:modelValue", value)
43
44
  });
44
45
  const root = ref(null);
45
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
46
- function dispatch(name, detail) {
47
- return root.value?.dispatchEvent(new CustomEvent(name, {
48
- bubbles: true,
49
- composed: true,
50
- detail
51
- })) ?? true;
52
- }
53
- function read(name) {
54
- return props[name];
55
- }
56
- function write(name, value) {
57
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
58
- }
59
- const stops = [];
60
- const host = {
61
- get element() {
62
- return root.value;
63
- },
64
- state: new Proxy({}, {
65
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
66
- set: (_target, name, value) => typeof name === "string" && write(name, value)
67
- }),
68
- refs: {},
69
- elements: new Proxy({}, { get: (_target, name) => {
70
- if (typeof name !== "string" || root.value === null) return void 0;
71
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
72
- } }),
73
- signal(initialValue) {
74
- const value = shallowRef(initialValue);
75
- return {
76
- get: () => value.value,
77
- set: (next) => {
78
- if (!Object.is(value.value, next)) value.value = next;
79
- },
80
- update: (next) => {
81
- const updated = next(value.value);
82
- if (!Object.is(value.value, updated)) value.value = updated;
83
- }
84
- };
85
- },
86
- computed(compute) {
87
- const value = computed(compute);
88
- return { get: () => value.value };
89
- },
90
- effect(run) {
91
- const stop = watchEffect((onCleanup) => {
92
- const cleanup = run();
93
- if (typeof cleanup === "function") onCleanup(cleanup);
94
- }, { flush: "post" });
95
- stops.push(stop);
96
- return stop;
97
- },
98
- on(event, listener) {
99
- const element = root.value;
100
- element?.addEventListener(event, listener);
101
- const off = () => element?.removeEventListener(event, listener);
102
- stops.push(off);
103
- return off;
104
- },
105
- dispatch
106
- };
107
- let cleanup;
108
- onMounted(() => {
109
- Promise.resolve(controllerModule.default(host)).then((result) => {
110
- cleanup = result;
111
- });
112
- });
113
- onBeforeUnmount(() => {
114
- for (const stop of stops.splice(0)) stop();
115
- if (typeof cleanup === "function") cleanup();
46
+ const dispatch = createDispatch(root);
47
+ useComponentHost(controllerModule.default, {
48
+ root,
49
+ dispatch,
50
+ props
116
51
  });
117
52
  return (_ctx, _cache) => {
118
53
  return withDirectives((openBlock(), createElementBlock("input", mergeProps({ "data-component": "ui-input" }, _ctx.$attrs, {
@@ -126,6 +61,6 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
126
61
  }), null, 16, _hoisted_1)), [[vModelDynamic, model.value]]);
127
62
  };
128
63
  }
129
- }), [["__scopeId", "data-v-f00d6a51"]]);
64
+ }), [["__scopeId", "data-v-0c0dde58"]]);
130
65
  //#endregion
131
66
  export { UiInput_default as t };