@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,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, createElementVNode, defineComponent, mergeProps, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, watchEffect } from "vue";
3
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, toDisplayString } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-editor-mention-menu/ui-editor-mention-menu.js";
4
5
  //#region .build/vue/UiEditorMentionMenu.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = ["aria-busy", "hidden"];
@@ -57,121 +58,22 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
57
58
  const searching = ref(false);
58
59
  const active = ref(0);
59
60
  const prefix = ref("ui-editor-mention-menu");
60
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
61
- function dispatch(name, detail) {
62
- const declared = {
63
- highlight: {
64
- bubbles: true,
65
- composed: true,
66
- cancelable: false
67
- },
68
- select: {
69
- bubbles: true,
70
- composed: true,
71
- cancelable: false
72
- }
73
- };
74
- const checks = {
75
- highlight: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key)),
76
- select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key))
77
- };
78
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
79
- emit(name, detail);
80
- return root.value?.dispatchEvent(new CustomEvent(name, {
81
- bubbles: true,
82
- composed: true,
83
- ...declared[name],
84
- detail
85
- })) ?? true;
86
- }
87
- function read(name) {
88
- if (name === "visible") return visible.value;
89
- if (name === "rows") return rows.value;
90
- if (name === "searching") return searching.value;
91
- if (name === "active") return active.value;
92
- if (name === "prefix") return prefix.value;
93
- return props[name];
94
- }
95
- function write(name, value) {
96
- if (name === "visible") {
97
- visible.value = value;
98
- return true;
61
+ const isHighlightDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key));
62
+ const dispatch = createDispatch(root, emit, { checks: {
63
+ highlight: isHighlightDetail,
64
+ select: isHighlightDetail
65
+ } });
66
+ useComponentHost(controllerModule.default, {
67
+ root,
68
+ dispatch,
69
+ props,
70
+ state: {
71
+ visible,
72
+ rows,
73
+ searching,
74
+ active,
75
+ prefix
99
76
  }
100
- if (name === "rows") {
101
- rows.value = value;
102
- return true;
103
- }
104
- if (name === "searching") {
105
- searching.value = value;
106
- return true;
107
- }
108
- if (name === "active") {
109
- active.value = value;
110
- return true;
111
- }
112
- if (name === "prefix") {
113
- prefix.value = value;
114
- return true;
115
- }
116
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
117
- }
118
- const stops = [];
119
- const host = {
120
- get element() {
121
- return root.value;
122
- },
123
- state: new Proxy({}, {
124
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
125
- set: (_target, name, value) => typeof name === "string" && write(name, value)
126
- }),
127
- refs: {},
128
- elements: new Proxy({}, { get: (_target, name) => {
129
- if (typeof name !== "string" || root.value === null) return void 0;
130
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
131
- } }),
132
- signal(initialValue) {
133
- const value = shallowRef(initialValue);
134
- return {
135
- get: () => value.value,
136
- set: (next) => {
137
- if (!Object.is(value.value, next)) value.value = next;
138
- },
139
- update: (next) => {
140
- const updated = next(value.value);
141
- if (!Object.is(value.value, updated)) value.value = updated;
142
- }
143
- };
144
- },
145
- computed(compute) {
146
- const value = computed(compute);
147
- return { get: () => value.value };
148
- },
149
- effect(run) {
150
- const stop = watchEffect((onCleanup) => {
151
- const cleanup = run();
152
- if (typeof cleanup === "function") onCleanup(cleanup);
153
- }, { flush: "post" });
154
- stops.push(stop);
155
- return stop;
156
- },
157
- on(event, listener) {
158
- const element = root.value;
159
- element?.addEventListener(event, listener);
160
- const off = () => element?.removeEventListener(event, listener);
161
- stops.push(off);
162
- return off;
163
- },
164
- dispatch
165
- };
166
- let cleanup;
167
- onMounted(() => {
168
- Promise.resolve(controllerModule.default(host)).then((result) => {
169
- cleanup = result;
170
- });
171
- });
172
- onBeforeUnmount(() => {
173
- for (const stop of stops.splice(0)) stop();
174
- if (typeof cleanup === "function") cleanup();
175
77
  });
176
78
  return (_ctx, _cache) => {
177
79
  return openBlock(), createElementBlock("div", mergeProps({
@@ -199,6 +101,6 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
199
101
  ], 16, _hoisted_1);
200
102
  };
201
103
  }
202
- }), [["__scopeId", "data-v-2abe407e"]]);
104
+ }), [["__scopeId", "data-v-78edc5f6"]]);
203
105
  //#endregion
204
106
  export { UiEditorMentionMenu_default as t };
@@ -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, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, watchEffect } from "vue";
4
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, toDisplayString } from "vue";
4
5
  import * as controllerModule from "@threadlabs/looma/components/ui-editor-slash-menu/ui-editor-slash-menu.js";
5
6
  //#region .build/vue/UiEditorSlashMenu.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["hidden"];
@@ -46,106 +47,19 @@ var UiEditorSlashMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
46
47
  const root = ref(null);
47
48
  const visible = ref(false);
48
49
  const active = ref(0);
49
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
50
- function dispatch(name, detail) {
51
- const declared = {
52
- highlight: {
53
- bubbles: true,
54
- composed: true,
55
- cancelable: false
56
- },
57
- select: {
58
- bubbles: true,
59
- composed: true,
60
- cancelable: false
61
- }
62
- };
63
- const checks = {
64
- highlight: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key)),
65
- select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].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
- emit(name, detail);
69
- return root.value?.dispatchEvent(new CustomEvent(name, {
70
- bubbles: true,
71
- composed: true,
72
- ...declared[name],
73
- detail
74
- })) ?? true;
75
- }
76
- function read(name) {
77
- if (name === "visible") return visible.value;
78
- if (name === "active") return active.value;
79
- return props[name];
80
- }
81
- function write(name, value) {
82
- if (name === "visible") {
83
- visible.value = value;
84
- return true;
50
+ const isHighlightDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key));
51
+ const dispatch = createDispatch(root, emit, { checks: {
52
+ highlight: isHighlightDetail,
53
+ select: isHighlightDetail
54
+ } });
55
+ useComponentHost(controllerModule.default, {
56
+ root,
57
+ dispatch,
58
+ props,
59
+ state: {
60
+ visible,
61
+ active
85
62
  }
86
- if (name === "active") {
87
- active.value = value;
88
- return true;
89
- }
90
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
91
- }
92
- const stops = [];
93
- const host = {
94
- get element() {
95
- return root.value;
96
- },
97
- state: new Proxy({}, {
98
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
99
- set: (_target, name, value) => typeof name === "string" && write(name, value)
100
- }),
101
- refs: {},
102
- elements: new Proxy({}, { get: (_target, name) => {
103
- if (typeof name !== "string" || root.value === null) return void 0;
104
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
105
- } }),
106
- signal(initialValue) {
107
- const value = shallowRef(initialValue);
108
- return {
109
- get: () => value.value,
110
- set: (next) => {
111
- if (!Object.is(value.value, next)) value.value = next;
112
- },
113
- update: (next) => {
114
- const updated = next(value.value);
115
- if (!Object.is(value.value, updated)) value.value = updated;
116
- }
117
- };
118
- },
119
- computed(compute) {
120
- const value = computed(compute);
121
- return { get: () => value.value };
122
- },
123
- effect(run) {
124
- const stop = watchEffect((onCleanup) => {
125
- const cleanup = run();
126
- if (typeof cleanup === "function") onCleanup(cleanup);
127
- }, { flush: "post" });
128
- stops.push(stop);
129
- return stop;
130
- },
131
- on(event, listener) {
132
- const element = root.value;
133
- element?.addEventListener(event, listener);
134
- const off = () => element?.removeEventListener(event, listener);
135
- stops.push(off);
136
- return off;
137
- },
138
- dispatch
139
- };
140
- let cleanup;
141
- onMounted(() => {
142
- Promise.resolve(controllerModule.default(host)).then((result) => {
143
- cleanup = result;
144
- });
145
- });
146
- onBeforeUnmount(() => {
147
- for (const stop of stops.splice(0)) stop();
148
- if (typeof cleanup === "function") cleanup();
149
63
  });
150
64
  return (_ctx, _cache) => {
151
65
  return openBlock(), createElementBlock("div", mergeProps({
@@ -181,6 +95,6 @@ var UiEditorSlashMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
181
95
  ], 16, _hoisted_1);
182
96
  };
183
97
  }
184
- }), [["__scopeId", "data-v-aeee1d4f"]]);
98
+ }), [["__scopeId", "data-v-346835f7"]]);
185
99
  //#endregion
186
100
  export { UiEditorSlashMenu_default as t };
@@ -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-context-menu/ui-editor-table-context-menu.js";
5
6
  //#region .build/vue/UiEditorTableContextMenu.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["hidden"];
@@ -45,96 +46,16 @@ var UiEditorTableContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_d
45
46
  const root = ref(null);
46
47
  const swatches = ref([]);
47
48
  const sections = ref([]);
48
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
49
- function dispatch(name, detail) {
50
- const declared = { action: {
51
- bubbles: true,
52
- composed: true,
53
- cancelable: false
54
- } };
55
- 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)) };
56
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
57
- emit(name, detail);
58
- return root.value?.dispatchEvent(new CustomEvent(name, {
59
- bubbles: true,
60
- composed: true,
61
- ...declared[name],
62
- detail
63
- })) ?? true;
64
- }
65
- function read(name) {
66
- if (name === "swatches") return swatches.value;
67
- if (name === "sections") return sections.value;
68
- return props[name];
69
- }
70
- function write(name, value) {
71
- if (name === "swatches") {
72
- swatches.value = value;
73
- return true;
74
- }
75
- if (name === "sections") {
76
- sections.value = value;
77
- return true;
49
+ 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));
50
+ const dispatch = createDispatch(root, emit, { checks: { action: isActionDetail } });
51
+ useComponentHost(controllerModule.default, {
52
+ root,
53
+ dispatch,
54
+ props,
55
+ state: {
56
+ swatches,
57
+ sections
78
58
  }
79
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
80
- }
81
- const stops = [];
82
- const host = {
83
- get element() {
84
- return root.value;
85
- },
86
- state: new Proxy({}, {
87
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
88
- set: (_target, name, value) => typeof name === "string" && write(name, value)
89
- }),
90
- refs: {},
91
- elements: new Proxy({}, { get: (_target, name) => {
92
- if (typeof name !== "string" || root.value === null) return void 0;
93
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
94
- } }),
95
- signal(initialValue) {
96
- const value = shallowRef(initialValue);
97
- return {
98
- get: () => value.value,
99
- set: (next) => {
100
- if (!Object.is(value.value, next)) value.value = next;
101
- },
102
- update: (next) => {
103
- const updated = next(value.value);
104
- if (!Object.is(value.value, updated)) value.value = updated;
105
- }
106
- };
107
- },
108
- computed(compute) {
109
- const value = computed(compute);
110
- return { get: () => value.value };
111
- },
112
- effect(run) {
113
- const stop = watchEffect((onCleanup) => {
114
- const cleanup = run();
115
- if (typeof cleanup === "function") onCleanup(cleanup);
116
- }, { flush: "post" });
117
- stops.push(stop);
118
- return stop;
119
- },
120
- on(event, listener) {
121
- const element = root.value;
122
- element?.addEventListener(event, listener);
123
- const off = () => element?.removeEventListener(event, listener);
124
- stops.push(off);
125
- return off;
126
- },
127
- dispatch
128
- };
129
- let cleanup;
130
- onMounted(() => {
131
- Promise.resolve(controllerModule.default(host)).then((result) => {
132
- cleanup = result;
133
- });
134
- });
135
- onBeforeUnmount(() => {
136
- for (const stop of stops.splice(0)) stop();
137
- if (typeof cleanup === "function") cleanup();
138
59
  });
139
60
  return (_ctx, _cache) => {
140
61
  return openBlock(), createElementBlock("div", mergeProps({
@@ -172,6 +93,6 @@ var UiEditorTableContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_d
172
93
  }), 128))], 16, _hoisted_1);
173
94
  };
174
95
  }
175
- }), [["__scopeId", "data-v-9cbdf038"]]);
96
+ }), [["__scopeId", "data-v-a938b94a"]]);
176
97
  //#endregion
177
98
  export { UiEditorTableContextMenu_default as t };
@@ -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-overlay/ui-editor-table-overlay.js";
5
6
  //#region .build/vue/UiEditorTableOverlay.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["hidden"];
@@ -55,125 +56,33 @@ var UiEditorTableOverlay_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
55
56
  const hovered = ref(null);
56
57
  const active = ref(null);
57
58
  const activeKey = ref("");
58
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
59
- function dispatch(name, detail) {
60
- const declared = { action: {
61
- bubbles: true,
62
- composed: true,
63
- cancelable: false
64
- } };
65
- const checks = { action: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "add-row-before" || detail["action"] === "add-row-after" || detail["action"] === "add-column-before" || detail["action"] === "add-column-after") && Number.isInteger(detail["boundaryIndex"]) && Object.keys(detail).every((key) => ["action", "boundaryIndex"].includes(key)) || detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "select-row" || detail["action"] === "select-column") && Number.isInteger(detail["rowIndex"]) && Number.isInteger(detail["columnIndex"]) && Object.keys(detail).every((key) => [
66
- "action",
67
- "rowIndex",
68
- "columnIndex"
69
- ].includes(key)) || detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["action"] === "open-cell-menu" && Number.isInteger(detail["rowIndex"]) && Number.isInteger(detail["columnIndex"]) && detail["anchor"] !== null && typeof detail["anchor"] === "object" && !Array.isArray(detail["anchor"]) && typeof detail["anchor"]["left"] === "number" && Number.isFinite(detail["anchor"]["left"]) && typeof detail["anchor"]["top"] === "number" && Number.isFinite(detail["anchor"]["top"]) && typeof detail["anchor"]["right"] === "number" && Number.isFinite(detail["anchor"]["right"]) && typeof detail["anchor"]["bottom"] === "number" && Number.isFinite(detail["anchor"]["bottom"]) && Object.keys(detail["anchor"]).every((key) => [
70
- "left",
71
- "top",
72
- "right",
73
- "bottom"
74
- ].includes(key)) && Object.keys(detail).every((key) => [
75
- "action",
76
- "rowIndex",
77
- "columnIndex",
78
- "anchor"
79
- ].includes(key)) };
80
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
81
- emit(name, detail);
82
- return root.value?.dispatchEvent(new CustomEvent(name, {
83
- bubbles: true,
84
- composed: true,
85
- ...declared[name],
86
- detail
87
- })) ?? true;
88
- }
89
- function read(name) {
90
- if (name === "rows") return rows.value;
91
- if (name === "cols") return cols.value;
92
- if (name === "hovered") return hovered.value;
93
- if (name === "active") return active.value;
94
- if (name === "activeKey") return activeKey.value;
95
- return props[name];
96
- }
97
- function write(name, value) {
98
- if (name === "rows") {
99
- rows.value = value;
100
- return true;
101
- }
102
- if (name === "cols") {
103
- cols.value = value;
104
- return true;
105
- }
106
- if (name === "hovered") {
107
- hovered.value = value;
108
- return true;
109
- }
110
- if (name === "active") {
111
- active.value = value;
112
- return true;
59
+ const isActionDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "add-row-before" || detail["action"] === "add-row-after" || detail["action"] === "add-column-before" || detail["action"] === "add-column-after") && Number.isInteger(detail["boundaryIndex"]) && Object.keys(detail).every((key) => ["action", "boundaryIndex"].includes(key)) || detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["action"] === "select-row" || detail["action"] === "select-column") && Number.isInteger(detail["rowIndex"]) && Number.isInteger(detail["columnIndex"]) && Object.keys(detail).every((key) => [
60
+ "action",
61
+ "rowIndex",
62
+ "columnIndex"
63
+ ].includes(key)) || detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["action"] === "open-cell-menu" && Number.isInteger(detail["rowIndex"]) && Number.isInteger(detail["columnIndex"]) && detail["anchor"] !== null && typeof detail["anchor"] === "object" && !Array.isArray(detail["anchor"]) && typeof detail["anchor"]["left"] === "number" && Number.isFinite(detail["anchor"]["left"]) && typeof detail["anchor"]["top"] === "number" && Number.isFinite(detail["anchor"]["top"]) && typeof detail["anchor"]["right"] === "number" && Number.isFinite(detail["anchor"]["right"]) && typeof detail["anchor"]["bottom"] === "number" && Number.isFinite(detail["anchor"]["bottom"]) && Object.keys(detail["anchor"]).every((key) => [
64
+ "left",
65
+ "top",
66
+ "right",
67
+ "bottom"
68
+ ].includes(key)) && Object.keys(detail).every((key) => [
69
+ "action",
70
+ "rowIndex",
71
+ "columnIndex",
72
+ "anchor"
73
+ ].includes(key));
74
+ const dispatch = createDispatch(root, emit, { checks: { action: isActionDetail } });
75
+ useComponentHost(controllerModule.default, {
76
+ root,
77
+ dispatch,
78
+ props,
79
+ state: {
80
+ rows,
81
+ cols,
82
+ hovered,
83
+ active,
84
+ activeKey
113
85
  }
114
- if (name === "activeKey") {
115
- activeKey.value = value;
116
- return true;
117
- }
118
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
119
- }
120
- const stops = [];
121
- const host = {
122
- get element() {
123
- return root.value;
124
- },
125
- state: new Proxy({}, {
126
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
127
- set: (_target, name, value) => typeof name === "string" && write(name, value)
128
- }),
129
- refs: {},
130
- elements: new Proxy({}, { get: (_target, name) => {
131
- if (typeof name !== "string" || root.value === null) return void 0;
132
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
133
- } }),
134
- signal(initialValue) {
135
- const value = shallowRef(initialValue);
136
- return {
137
- get: () => value.value,
138
- set: (next) => {
139
- if (!Object.is(value.value, next)) value.value = next;
140
- },
141
- update: (next) => {
142
- const updated = next(value.value);
143
- if (!Object.is(value.value, updated)) value.value = updated;
144
- }
145
- };
146
- },
147
- computed(compute) {
148
- const value = computed(compute);
149
- return { get: () => value.value };
150
- },
151
- effect(run) {
152
- const stop = watchEffect((onCleanup) => {
153
- const cleanup = run();
154
- if (typeof cleanup === "function") onCleanup(cleanup);
155
- }, { flush: "post" });
156
- stops.push(stop);
157
- return stop;
158
- },
159
- on(event, listener) {
160
- const element = root.value;
161
- element?.addEventListener(event, listener);
162
- const off = () => element?.removeEventListener(event, listener);
163
- stops.push(off);
164
- return off;
165
- },
166
- dispatch
167
- };
168
- let cleanup;
169
- onMounted(() => {
170
- Promise.resolve(controllerModule.default(host)).then((result) => {
171
- cleanup = result;
172
- });
173
- });
174
- onBeforeUnmount(() => {
175
- for (const stop of stops.splice(0)) stop();
176
- if (typeof cleanup === "function") cleanup();
177
86
  });
178
87
  return (_ctx, _cache) => {
179
88
  return openBlock(), createElementBlock("div", mergeProps({
@@ -272,6 +181,6 @@ var UiEditorTableOverlay_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
272
181
  ], 16, _hoisted_1);
273
182
  };
274
183
  }
275
- }), [["__scopeId", "data-v-d5963c35"]]);
184
+ }), [["__scopeId", "data-v-61a70a30"]]);
276
185
  //#endregion
277
186
  export { UiEditorTableOverlay_default as t };