@threadlabs/looma 0.6.3 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/components/ui-tree-item/ui-tree-item.html +68 -12
  2. package/components/ui-tree-item/ui-tree-item.js +9 -1
  3. package/dist/index.js +1 -1
  4. package/package.json +2 -2
  5. package/styles/ui-affordance-scope.css +1 -1
  6. package/styles/ui-avatar-group.css +1 -1
  7. package/styles/ui-avatar.css +1 -1
  8. package/styles/ui-badge.css +1 -1
  9. package/styles/ui-button.css +1 -1
  10. package/styles/ui-callout.css +1 -1
  11. package/styles/ui-checkbox.css +1 -1
  12. package/styles/ui-cluster.css +1 -1
  13. package/styles/ui-combobox.css +1 -1
  14. package/styles/ui-container.css +1 -1
  15. package/styles/ui-context-menu.css +1 -1
  16. package/styles/ui-dialog.css +1 -1
  17. package/styles/ui-disclosure.css +1 -1
  18. package/styles/ui-editable.css +1 -1
  19. package/styles/ui-editor-insert-table-grid.css +1 -1
  20. package/styles/ui-editor-mention-menu.css +1 -1
  21. package/styles/ui-editor-slash-menu.css +1 -1
  22. package/styles/ui-editor-table-context-menu.css +1 -1
  23. package/styles/ui-editor-table-overlay.css +1 -1
  24. package/styles/ui-editor-table-toolbar.css +1 -1
  25. package/styles/ui-editor-toolbar.css +1 -1
  26. package/styles/ui-floating-action-button.css +1 -1
  27. package/styles/ui-form-field.css +1 -1
  28. package/styles/ui-grid.css +1 -1
  29. package/styles/ui-icon-button.css +1 -1
  30. package/styles/ui-icon.css +1 -1
  31. package/styles/ui-input.css +1 -1
  32. package/styles/ui-menu-item.css +1 -1
  33. package/styles/ui-menu.css +1 -1
  34. package/styles/ui-popover.css +1 -1
  35. package/styles/ui-radio-group.css +1 -1
  36. package/styles/ui-radio.css +1 -1
  37. package/styles/ui-reel.css +1 -1
  38. package/styles/ui-search-result-row.css +1 -1
  39. package/styles/ui-search-shell.css +1 -1
  40. package/styles/ui-select.css +1 -1
  41. package/styles/ui-separator.css +1 -1
  42. package/styles/ui-sidebar.css +1 -1
  43. package/styles/ui-stack.css +1 -1
  44. package/styles/ui-switch.css +1 -1
  45. package/styles/ui-switcher.css +1 -1
  46. package/styles/ui-tabs.css +1 -1
  47. package/styles/ui-textarea.css +1 -1
  48. package/styles/ui-toast-region.css +1 -1
  49. package/styles/ui-tooltip.css +1 -1
  50. package/styles/ui-top-bar.css +1 -1
  51. package/styles/ui-tree-item.css +75 -12
  52. package/styles/ui-tree.css +1 -1
  53. package/vanilla/UiAffordanceScope.d.ts +1 -1
  54. package/vanilla/UiAffordanceScope.js +1 -1
  55. package/vanilla/UiAvatar.d.ts +1 -1
  56. package/vanilla/UiAvatar.js +1 -1
  57. package/vanilla/UiAvatarGroup.d.ts +1 -1
  58. package/vanilla/UiAvatarGroup.js +1 -1
  59. package/vanilla/UiBadge.d.ts +1 -1
  60. package/vanilla/UiBadge.js +1 -1
  61. package/vanilla/UiButton.d.ts +1 -1
  62. package/vanilla/UiButton.js +1 -1
  63. package/vanilla/UiCallout.d.ts +1 -1
  64. package/vanilla/UiCallout.js +1 -1
  65. package/vanilla/UiCheckbox.d.ts +1 -1
  66. package/vanilla/UiCheckbox.js +1 -1
  67. package/vanilla/UiCluster.d.ts +1 -1
  68. package/vanilla/UiCluster.js +1 -1
  69. package/vanilla/UiCombobox.d.ts +1 -1
  70. package/vanilla/UiCombobox.js +1 -1
  71. package/vanilla/UiContainer.d.ts +1 -1
  72. package/vanilla/UiContainer.js +1 -1
  73. package/vanilla/UiContextMenu.d.ts +1 -1
  74. package/vanilla/UiContextMenu.js +1 -1
  75. package/vanilla/UiDialog.d.ts +1 -1
  76. package/vanilla/UiDialog.js +1 -1
  77. package/vanilla/UiDisclosure.d.ts +1 -1
  78. package/vanilla/UiDisclosure.js +1 -1
  79. package/vanilla/UiEditable.d.ts +1 -1
  80. package/vanilla/UiEditable.js +1 -1
  81. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  82. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  83. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  84. package/vanilla/UiEditorMentionMenu.js +1 -1
  85. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  86. package/vanilla/UiEditorSlashMenu.js +1 -1
  87. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  88. package/vanilla/UiEditorTableContextMenu.js +1 -1
  89. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  90. package/vanilla/UiEditorTableOverlay.js +1 -1
  91. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  92. package/vanilla/UiEditorTableToolbar.js +1 -1
  93. package/vanilla/UiEditorToolbar.d.ts +1 -1
  94. package/vanilla/UiEditorToolbar.js +1 -1
  95. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  96. package/vanilla/UiFloatingActionButton.js +1 -1
  97. package/vanilla/UiFormField.d.ts +1 -1
  98. package/vanilla/UiFormField.js +1 -1
  99. package/vanilla/UiGrid.d.ts +1 -1
  100. package/vanilla/UiGrid.js +1 -1
  101. package/vanilla/UiIcon.d.ts +1 -1
  102. package/vanilla/UiIcon.js +1 -1
  103. package/vanilla/UiIconButton.d.ts +1 -1
  104. package/vanilla/UiIconButton.js +1 -1
  105. package/vanilla/UiInput.d.ts +1 -1
  106. package/vanilla/UiInput.js +1 -1
  107. package/vanilla/UiMenu.d.ts +1 -1
  108. package/vanilla/UiMenu.js +1 -1
  109. package/vanilla/UiMenuItem.d.ts +1 -1
  110. package/vanilla/UiMenuItem.js +1 -1
  111. package/vanilla/UiPopover.d.ts +1 -1
  112. package/vanilla/UiPopover.js +1 -1
  113. package/vanilla/UiRadio.d.ts +1 -1
  114. package/vanilla/UiRadio.js +1 -1
  115. package/vanilla/UiRadioGroup.d.ts +1 -1
  116. package/vanilla/UiRadioGroup.js +1 -1
  117. package/vanilla/UiReel.d.ts +1 -1
  118. package/vanilla/UiReel.js +1 -1
  119. package/vanilla/UiSearchResultRow.d.ts +1 -1
  120. package/vanilla/UiSearchResultRow.js +1 -1
  121. package/vanilla/UiSearchShell.d.ts +1 -1
  122. package/vanilla/UiSearchShell.js +1 -1
  123. package/vanilla/UiSelect.d.ts +1 -1
  124. package/vanilla/UiSelect.js +1 -1
  125. package/vanilla/UiSeparator.d.ts +1 -1
  126. package/vanilla/UiSeparator.js +1 -1
  127. package/vanilla/UiSidebar.d.ts +1 -1
  128. package/vanilla/UiSidebar.js +1 -1
  129. package/vanilla/UiStack.d.ts +1 -1
  130. package/vanilla/UiStack.js +1 -1
  131. package/vanilla/UiSwitch.d.ts +1 -1
  132. package/vanilla/UiSwitch.js +1 -1
  133. package/vanilla/UiSwitcher.d.ts +1 -1
  134. package/vanilla/UiSwitcher.js +1 -1
  135. package/vanilla/UiTabs.d.ts +1 -1
  136. package/vanilla/UiTabs.js +1 -1
  137. package/vanilla/UiTextarea.d.ts +1 -1
  138. package/vanilla/UiTextarea.js +1 -1
  139. package/vanilla/UiToastRegion.d.ts +1 -1
  140. package/vanilla/UiToastRegion.js +1 -1
  141. package/vanilla/UiTooltip.d.ts +1 -1
  142. package/vanilla/UiTooltip.js +1 -1
  143. package/vanilla/UiTopBar.d.ts +1 -1
  144. package/vanilla/UiTopBar.js +1 -1
  145. package/vanilla/UiTree.d.ts +1 -1
  146. package/vanilla/UiTree.js +1 -1
  147. package/vanilla/UiTreeItem.d.ts +1 -1
  148. package/vanilla/UiTreeItem.js +2 -2
  149. package/vue/UiAffordanceScope.vue +8 -84
  150. package/vue/UiAvatar.d.ts +1 -1
  151. package/vue/UiAvatar.vue +9 -106
  152. package/vue/UiAvatarGroup.vue +9 -96
  153. package/vue/UiBadge.vue +1 -1
  154. package/vue/UiButton.vue +1 -1
  155. package/vue/UiCallout.vue +1 -1
  156. package/vue/UiCheckbox.vue +22 -123
  157. package/vue/UiCluster.vue +1 -1
  158. package/vue/UiCombobox.d.ts +1 -1
  159. package/vue/UiCombobox.vue +224 -475
  160. package/vue/UiContainer.vue +1 -1
  161. package/vue/UiContextMenu.vue +34 -141
  162. package/vue/UiDialog.vue +25 -126
  163. package/vue/UiDisclosure.vue +26 -138
  164. package/vue/UiEditable.vue +46 -158
  165. package/vue/UiEditorInsertTableGrid.vue +19 -138
  166. package/vue/UiEditorMentionMenu.vue +17 -124
  167. package/vue/UiEditorSlashMenu.vue +17 -109
  168. package/vue/UiEditorTableContextMenu.vue +34 -122
  169. package/vue/UiEditorTableOverlay.vue +61 -167
  170. package/vue/UiEditorTableToolbar.vue +34 -142
  171. package/vue/UiEditorToolbar.vue +1 -1
  172. package/vue/UiFloatingActionButton.vue +1 -1
  173. package/vue/UiFormField.vue +7 -79
  174. package/vue/UiGrid.vue +1 -1
  175. package/vue/UiIcon.vue +8 -84
  176. package/vue/UiIconButton.vue +7 -79
  177. package/vue/UiInput.vue +7 -79
  178. package/vue/UiMenu.vue +42 -127
  179. package/vue/UiMenuItem.vue +1 -1
  180. package/vue/UiPopover.vue +25 -121
  181. package/vue/UiRadio.vue +22 -123
  182. package/vue/UiRadioGroup.d.ts +1 -1
  183. package/vue/UiRadioGroup.vue +32 -119
  184. package/vue/UiReel.vue +1 -1
  185. package/vue/UiSearchResultRow.vue +1 -1
  186. package/vue/UiSearchShell.vue +25 -121
  187. package/vue/UiSelect.vue +7 -79
  188. package/vue/UiSeparator.vue +1 -1
  189. package/vue/UiSidebar.vue +32 -133
  190. package/vue/UiStack.vue +1 -1
  191. package/vue/UiSwitch.vue +22 -123
  192. package/vue/UiSwitcher.vue +1 -1
  193. package/vue/UiTabs.vue +24 -128
  194. package/vue/UiTextarea.vue +7 -79
  195. package/vue/UiToastRegion.vue +37 -126
  196. package/vue/UiTooltip.vue +25 -124
  197. package/vue/UiTopBar.vue +1 -1
  198. package/vue/UiTree.vue +56 -137
  199. package/vue/UiTreeItem.vue +97 -153
  200. package/vue/chunks/UiAffordanceScope.js +9 -78
  201. package/vue/chunks/UiAvatar.js +13 -89
  202. package/vue/chunks/UiAvatarGroup.js +10 -80
  203. package/vue/chunks/UiBadge.js +1 -1
  204. package/vue/chunks/UiButton.js +1 -1
  205. package/vue/chunks/UiCallout.js +1 -1
  206. package/vue/chunks/UiCheckbox.js +17 -95
  207. package/vue/chunks/UiCluster.js +1 -1
  208. package/vue/chunks/UiCombobox.js +114 -325
  209. package/vue/chunks/UiContainer.js +1 -1
  210. package/vue/chunks/UiContextMenu.js +21 -113
  211. package/vue/chunks/UiDialog.js +20 -99
  212. package/vue/chunks/UiDisclosure.js +22 -112
  213. package/vue/chunks/UiEditable.js +32 -128
  214. package/vue/chunks/UiEditorInsertTableGrid.js +22 -116
  215. package/vue/chunks/UiEditorMentionMenu.js +18 -116
  216. package/vue/chunks/UiEditorSlashMenu.js +15 -101
  217. package/vue/chunks/UiEditorTableContextMenu.js +12 -91
  218. package/vue/chunks/UiEditorTableOverlay.js +29 -120
  219. package/vue/chunks/UiEditorTableToolbar.js +16 -111
  220. package/vue/chunks/UiEditorToolbar.js +1 -1
  221. package/vue/chunks/UiFloatingActionButton.js +1 -1
  222. package/vue/chunks/UiFormField.js +8 -73
  223. package/vue/chunks/UiGrid.js +1 -1
  224. package/vue/chunks/UiIcon.js +9 -78
  225. package/vue/chunks/UiIconButton.js +8 -73
  226. package/vue/chunks/UiInput.js +8 -73
  227. package/vue/chunks/UiMenu.js +25 -111
  228. package/vue/chunks/UiMenuItem.js +1 -1
  229. package/vue/chunks/UiPopover.js +18 -105
  230. package/vue/chunks/UiRadio.js +17 -95
  231. package/vue/chunks/UiRadioGroup.js +23 -105
  232. package/vue/chunks/UiReel.js +1 -1
  233. package/vue/chunks/UiSearchResultRow.js +1 -1
  234. package/vue/chunks/UiSearchShell.js +17 -94
  235. package/vue/chunks/UiSelect.js +8 -73
  236. package/vue/chunks/UiSeparator.js +1 -1
  237. package/vue/chunks/UiSidebar.js +23 -108
  238. package/vue/chunks/UiStack.js +1 -1
  239. package/vue/chunks/UiSwitch.js +17 -95
  240. package/vue/chunks/UiSwitcher.js +1 -1
  241. package/vue/chunks/UiTabs.js +22 -103
  242. package/vue/chunks/UiTextarea.js +8 -73
  243. package/vue/chunks/UiToastRegion.js +27 -112
  244. package/vue/chunks/UiTooltip.js +18 -106
  245. package/vue/chunks/UiTopBar.js +1 -1
  246. package/vue/chunks/UiTree.js +31 -109
  247. package/vue/chunks/UiTreeItem.js +35 -118
  248. package/vue/chunks/host.js +101 -0
  249. package/vue/components.css +759 -707
  250. package/vue/host.ts +154 -0
@@ -1,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, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, useTemplateRef, watchEffect } from "vue";
3
+ import { Fragment, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderList, toDisplayString, useTemplateRef } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js";
4
5
  //#region .build/vue/UiEditorInsertTableGrid.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = ["hidden"];
@@ -46,122 +47,27 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
46
47
  const cols = ref(8);
47
48
  const hint = ref("");
48
49
  const withHeaderRow = ref(false);
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 = { insert: {
52
- bubbles: true,
53
- composed: true,
54
- cancelable: false
55
- } };
56
- const checks = { insert: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["rows"]) && Number.isInteger(detail["cols"]) && typeof detail["withHeaderRow"] === "boolean" && Object.keys(detail).every((key) => [
57
- "rows",
58
- "cols",
59
- "withHeaderRow"
60
- ].includes(key)) };
61
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
62
- emit(name, detail);
63
- return root.value?.dispatchEvent(new CustomEvent(name, {
64
- bubbles: true,
65
- composed: true,
66
- ...declared[name],
67
- detail
68
- })) ?? true;
69
- }
70
- function read(name) {
71
- if (name === "cells") return cells.value;
72
- if (name === "rows") return rows.value;
73
- if (name === "cols") return cols.value;
74
- if (name === "hint") return hint.value;
75
- if (name === "withHeaderRow") return withHeaderRow.value;
76
- return props[name];
77
- }
78
- function write(name, value) {
79
- if (name === "cells") {
80
- cells.value = value;
81
- return true;
82
- }
83
- if (name === "rows") {
84
- rows.value = value;
85
- return true;
86
- }
87
- if (name === "cols") {
88
- cols.value = value;
89
- return true;
90
- }
91
- if (name === "hint") {
92
- hint.value = value;
93
- return true;
94
- }
95
- if (name === "withHeaderRow") {
96
- withHeaderRow.value = value;
97
- return true;
98
- }
99
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
100
- }
101
- const stops = [];
102
- const host = {
103
- get element() {
104
- return root.value;
105
- },
106
- state: new Proxy({}, {
107
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
108
- set: (_target, name, value) => typeof name === "string" && write(name, value)
109
- }),
50
+ const isInsertDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["rows"]) && Number.isInteger(detail["cols"]) && typeof detail["withHeaderRow"] === "boolean" && Object.keys(detail).every((key) => [
51
+ "rows",
52
+ "cols",
53
+ "withHeaderRow"
54
+ ].includes(key));
55
+ const dispatch = createDispatch(root, emit, { checks: { insert: isInsertDetail } });
56
+ useComponentHost(controllerModule.default, {
57
+ root,
58
+ dispatch,
59
+ props,
110
60
  refs: {
111
- get header() {
112
- return headerElement.value;
113
- },
114
- get insert() {
115
- return insertElement.value;
116
- }
117
- },
118
- elements: new Proxy({}, { get: (_target, name) => {
119
- if (typeof name !== "string" || root.value === null) return void 0;
120
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
121
- } }),
122
- signal(initialValue) {
123
- const value = shallowRef(initialValue);
124
- return {
125
- get: () => value.value,
126
- set: (next) => {
127
- if (!Object.is(value.value, next)) value.value = next;
128
- },
129
- update: (next) => {
130
- const updated = next(value.value);
131
- if (!Object.is(value.value, updated)) value.value = updated;
132
- }
133
- };
134
- },
135
- computed(compute) {
136
- const value = computed(compute);
137
- return { get: () => value.value };
138
- },
139
- effect(run) {
140
- const stop = watchEffect((onCleanup) => {
141
- const cleanup = run();
142
- if (typeof cleanup === "function") onCleanup(cleanup);
143
- }, { flush: "post" });
144
- stops.push(stop);
145
- return stop;
61
+ header: headerElement,
62
+ insert: insertElement
146
63
  },
147
- on(event, listener) {
148
- const element = root.value;
149
- element?.addEventListener(event, listener);
150
- const off = () => element?.removeEventListener(event, listener);
151
- stops.push(off);
152
- return off;
153
- },
154
- dispatch
155
- };
156
- let cleanup;
157
- onMounted(() => {
158
- Promise.resolve(controllerModule.default(host)).then((result) => {
159
- cleanup = result;
160
- });
161
- });
162
- onBeforeUnmount(() => {
163
- for (const stop of stops.splice(0)) stop();
164
- if (typeof cleanup === "function") cleanup();
64
+ state: {
65
+ cells,
66
+ rows,
67
+ cols,
68
+ hint,
69
+ withHeaderRow
70
+ }
165
71
  });
166
72
  return (_ctx, _cache) => {
167
73
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-editor-insert-table-grid" }, _ctx.$attrs, {
@@ -198,6 +104,6 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
198
104
  ], 16, _hoisted_1);
199
105
  };
200
106
  }
201
- }), [["__scopeId", "data-v-00e6602a"]]);
107
+ }), [["__scopeId", "data-v-7b1e476f"]]);
202
108
  //#endregion
203
109
  export { UiEditorInsertTableGrid_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, 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 };