@threadlabs/looma 0.14.8 → 0.15.1

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 (343) hide show
  1. package/components/shared/icons.js +5 -0
  2. package/components/shared/menu-navigation.js +49 -0
  3. package/components/shared/overlay.js +33 -60
  4. package/components/ui-avatar/ui-avatar.html +19 -2
  5. package/components/ui-avatar/ui-avatar.js +7 -1
  6. package/components/ui-avatar-group/ui-avatar-group.html +8 -3
  7. package/components/ui-avatar-group/ui-avatar-group.js +6 -2
  8. package/components/ui-badge/ui-badge.html +70 -4
  9. package/components/ui-button/ui-button.html +21 -5
  10. package/components/ui-button/ui-button.js +10 -0
  11. package/components/ui-callout/ui-callout.html +13 -5
  12. package/components/ui-checkbox/ui-checkbox.html +11 -0
  13. package/components/ui-cluster/ui-cluster.html +7 -0
  14. package/components/ui-combobox/ui-combobox.html +46 -10
  15. package/components/ui-combobox/ui-combobox.js +5 -5
  16. package/components/ui-context-menu/ui-context-menu.html +33 -5
  17. package/components/ui-context-menu/ui-context-menu.js +26 -17
  18. package/components/ui-dialog/ui-dialog.html +51 -8
  19. package/components/ui-dialog/ui-dialog.js +28 -7
  20. package/components/ui-disclosure/ui-disclosure.html +14 -5
  21. package/components/ui-disclosure/ui-disclosure.js +51 -4
  22. package/components/ui-editable/ui-editable.html +17 -3
  23. package/components/ui-editable/ui-editable.js +7 -0
  24. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +48 -14
  25. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +40 -6
  26. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +22 -9
  27. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +33 -11
  28. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +67 -0
  29. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +33 -30
  30. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +42 -8
  31. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +31 -0
  32. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +75 -0
  33. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +16 -5
  34. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +10 -2
  35. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +5 -5
  36. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -2
  37. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +14 -4
  38. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +2 -2
  39. package/components/ui-editor-toolbar/ui-editor-toolbar.html +1 -1
  40. package/components/ui-editor-toolbar/ui-editor-toolbar.js +46 -0
  41. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  42. package/components/ui-form-field/ui-form-field.html +16 -3
  43. package/components/ui-form-field/ui-form-field.js +1 -1
  44. package/components/ui-grid/ui-grid.html +17 -2
  45. package/components/ui-icon/ui-icon.html +5 -0
  46. package/components/ui-icon-button/ui-icon-button.html +25 -6
  47. package/components/ui-icon-button/ui-icon-button.js +11 -1
  48. package/components/ui-input/ui-input.html +3 -3
  49. package/components/ui-input-group/ui-input-group.html +18 -4
  50. package/components/ui-listbox/ui-listbox.html +81 -0
  51. package/components/ui-listbox/ui-listbox.js +27 -0
  52. package/components/ui-menu/ui-menu.html +33 -5
  53. package/components/ui-menu/ui-menu.js +18 -12
  54. package/components/ui-menu-group/ui-menu-group.html +27 -0
  55. package/components/ui-menu-item/ui-menu-item.html +80 -8
  56. package/components/ui-menu-item/ui-menu-item.js +47 -0
  57. package/components/ui-popover/ui-popover.html +33 -5
  58. package/components/ui-popover/ui-popover.js +9 -1
  59. package/components/ui-radio-group/ui-radio-group.html +13 -1
  60. package/components/ui-search-shell/ui-search-shell.html +6 -6
  61. package/components/ui-search-shell/ui-search-shell.js +21 -5
  62. package/components/ui-select/ui-select.html +14 -4
  63. package/components/ui-switch/ui-switch.html +2 -2
  64. package/components/ui-switcher/ui-switcher.html +8 -1
  65. package/components/ui-switcher/ui-switcher.js +15 -0
  66. package/components/ui-tabs/ui-tabs.html +17 -12
  67. package/components/ui-tabs/ui-tabs.js +43 -7
  68. package/components/ui-textarea/ui-textarea.html +28 -5
  69. package/components/ui-toast/ui-toast.html +88 -0
  70. package/components/ui-toast/ui-toast.js +68 -0
  71. package/components/ui-toast-region/ui-toast-region.html +102 -19
  72. package/components/ui-toast-region/ui-toast-region.js +10 -18
  73. package/components/ui-tooltip/ui-tooltip.html +51 -7
  74. package/components/ui-tooltip/ui-tooltip.js +29 -3
  75. package/components/ui-tree/ui-tree.html +12 -0
  76. package/components/ui-tree/ui-tree.js +191 -12
  77. package/components/ui-tree-item/ui-tree-item.html +87 -8
  78. package/components/ui-tree-item/ui-tree-item.js +3 -1
  79. package/dist/index.js +38 -32
  80. package/editor/chunks/extensions.js +82 -2
  81. package/editor/extensions/table-commands.d.ts +8 -0
  82. package/editor/icons.d.ts +5 -0
  83. package/editor/index.js +7 -2
  84. package/editor/insert-table-grid.d.ts +1 -1
  85. package/editor/mention-menu.d.ts +2 -0
  86. package/editor/slash-menu.d.ts +3 -0
  87. package/editor/table-context-menu.d.ts +1 -1
  88. package/editor/table-overlay.d.ts +2 -2
  89. package/package.json +1 -1
  90. package/styles/ui-avatar-group.css +1 -2
  91. package/styles/ui-avatar.css +11 -1
  92. package/styles/ui-badge.css +73 -1
  93. package/styles/ui-button.css +9 -1
  94. package/styles/ui-callout.css +1 -1
  95. package/styles/ui-checkbox.css +9 -0
  96. package/styles/ui-cluster.css +3 -0
  97. package/styles/ui-combobox.css +38 -7
  98. package/styles/ui-context-menu.css +32 -4
  99. package/styles/ui-dialog.css +42 -5
  100. package/styles/ui-editor-insert-table-grid.css +48 -11
  101. package/styles/ui-editor-mention-menu-item.css +57 -0
  102. package/styles/ui-editor-mention-menu.css +11 -1
  103. package/styles/ui-editor-slash-menu-group.css +21 -0
  104. package/styles/ui-editor-slash-menu-item.css +62 -0
  105. package/styles/ui-editor-slash-menu.css +10 -21
  106. package/styles/ui-editor-table-context-menu.css +1 -1
  107. package/styles/ui-floating-action-button.css +1 -1
  108. package/styles/ui-form-field.css +14 -1
  109. package/styles/ui-grid.css +14 -1
  110. package/styles/ui-icon-button.css +17 -5
  111. package/styles/ui-input-group.css +18 -4
  112. package/styles/ui-input.css +3 -3
  113. package/styles/ui-listbox.css +69 -0
  114. package/styles/ui-menu-group.css +19 -0
  115. package/styles/ui-menu-item.css +48 -9
  116. package/styles/ui-menu.css +32 -4
  117. package/styles/ui-popover.css +28 -4
  118. package/styles/ui-radio-group.css +9 -0
  119. package/styles/ui-search-shell.css +5 -5
  120. package/styles/ui-select.css +14 -4
  121. package/styles/ui-switch.css +2 -2
  122. package/styles/ui-switcher.css +4 -0
  123. package/styles/ui-textarea.css +27 -4
  124. package/styles/ui-toast-region.css +88 -4
  125. package/styles/ui-toast.css +74 -0
  126. package/styles/ui-tooltip.css +46 -6
  127. package/styles/ui-tree-item.css +72 -4
  128. package/styles/ui-tree.css +8 -0
  129. package/tokens.css +3 -0
  130. package/vanilla/UiAvatar.d.ts +2 -0
  131. package/vanilla/UiAvatar.js +8 -1
  132. package/vanilla/UiAvatarGroup.d.ts +2 -0
  133. package/vanilla/UiAvatarGroup.js +1 -1
  134. package/vanilla/UiBadge.d.ts +1 -1
  135. package/vanilla/UiBadge.js +1 -1
  136. package/vanilla/UiButton.d.ts +1 -0
  137. package/vanilla/UiButton.js +22 -6
  138. package/vanilla/UiCallout.d.ts +1 -1
  139. package/vanilla/UiCallout.js +1 -1
  140. package/vanilla/UiCheckbox.d.ts +1 -0
  141. package/vanilla/UiCheckbox.js +12 -9
  142. package/vanilla/UiCluster.d.ts +1 -0
  143. package/vanilla/UiCluster.js +2 -0
  144. package/vanilla/UiCombobox.d.ts +3 -0
  145. package/vanilla/UiCombobox.js +30 -15
  146. package/vanilla/UiContextMenu.d.ts +1 -1
  147. package/vanilla/UiContextMenu.js +1 -1
  148. package/vanilla/UiDialog.d.ts +5 -2
  149. package/vanilla/UiDialog.js +1 -1
  150. package/vanilla/UiDisclosure.d.ts +2 -0
  151. package/vanilla/UiDisclosure.js +32 -18
  152. package/vanilla/UiEditable.d.ts +5 -0
  153. package/vanilla/UiEditable.js +7 -3
  154. package/vanilla/UiEditorInsertTableGrid.js +1 -6
  155. package/vanilla/UiEditorMentionMenu.d.ts +4 -2
  156. package/vanilla/UiEditorMentionMenu.js +49 -31
  157. package/vanilla/UiEditorMentionMenuItem.d.ts +16 -0
  158. package/vanilla/UiEditorMentionMenuItem.js +56 -0
  159. package/vanilla/UiEditorSlashMenu.d.ts +4 -3
  160. package/vanilla/UiEditorSlashMenu.js +59 -46
  161. package/vanilla/UiEditorSlashMenuGroup.d.ts +14 -0
  162. package/vanilla/UiEditorSlashMenuGroup.js +48 -0
  163. package/vanilla/UiEditorSlashMenuItem.d.ts +18 -0
  164. package/vanilla/UiEditorSlashMenuItem.js +57 -0
  165. package/vanilla/UiEditorTableContextMenu.d.ts +5 -2
  166. package/vanilla/UiEditorTableContextMenu.js +1 -2
  167. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  168. package/vanilla/UiEditorTableOverlay.js +5 -5
  169. package/vanilla/UiEditorTableToolbar.d.ts +4 -2
  170. package/vanilla/UiEditorTableToolbar.js +1 -2
  171. package/vanilla/UiEditorToolbar.js +2 -0
  172. package/vanilla/UiGrid.d.ts +1 -0
  173. package/vanilla/UiGrid.js +8 -7
  174. package/vanilla/UiIcon.js +1 -1
  175. package/vanilla/UiIconButton.d.ts +1 -0
  176. package/vanilla/UiIconButton.js +11 -2
  177. package/vanilla/UiListbox.d.ts +20 -0
  178. package/vanilla/UiListbox.js +45 -0
  179. package/vanilla/UiMenu.d.ts +1 -1
  180. package/vanilla/UiMenu.js +1 -1
  181. package/vanilla/UiMenuGroup.d.ts +14 -0
  182. package/vanilla/UiMenuGroup.js +35 -0
  183. package/vanilla/UiMenuItem.d.ts +5 -1
  184. package/vanilla/UiMenuItem.js +91 -30
  185. package/vanilla/UiPopover.d.ts +1 -1
  186. package/vanilla/UiPopover.js +1 -1
  187. package/vanilla/UiRadioGroup.d.ts +1 -0
  188. package/vanilla/UiRadioGroup.js +6 -3
  189. package/vanilla/UiSwitcher.d.ts +1 -0
  190. package/vanilla/UiSwitcher.js +7 -9
  191. package/vanilla/UiTabs.d.ts +1 -0
  192. package/vanilla/UiTabs.js +9 -1
  193. package/vanilla/UiTextarea.d.ts +1 -0
  194. package/vanilla/UiTextarea.js +4 -1
  195. package/vanilla/UiToast.d.ts +16 -0
  196. package/vanilla/UiToast.js +53 -0
  197. package/vanilla/UiToastRegion.d.ts +1 -4
  198. package/vanilla/UiToastRegion.js +3 -11
  199. package/vanilla/UiTooltip.d.ts +1 -1
  200. package/vanilla/UiTooltip.js +1 -1
  201. package/vanilla/UiTree.d.ts +2 -0
  202. package/vanilla/UiTree.js +1 -1
  203. package/vanilla/UiTreeItem.d.ts +1 -0
  204. package/vanilla/UiTreeItem.js +45 -31
  205. package/vanilla/index.js +6 -0
  206. package/vue/UiAvatar.d.ts +4 -0
  207. package/vue/UiAvatar.vue +23 -3
  208. package/vue/UiAvatarGroup.d.ts +3 -0
  209. package/vue/UiAvatarGroup.vue +7 -4
  210. package/vue/UiBadge.d.ts +2 -2
  211. package/vue/UiBadge.vue +74 -2
  212. package/vue/UiButton.d.ts +5 -3
  213. package/vue/UiButton.vue +41 -7
  214. package/vue/UiCallout.d.ts +2 -2
  215. package/vue/UiCallout.vue +3 -2
  216. package/vue/UiCheckbox.d.ts +2 -0
  217. package/vue/UiCheckbox.vue +16 -0
  218. package/vue/UiCluster.d.ts +1 -0
  219. package/vue/UiCluster.vue +5 -0
  220. package/vue/UiCombobox.d.ts +11 -3
  221. package/vue/UiCombobox.vue +60 -11
  222. package/vue/UiContextMenu.d.ts +2 -0
  223. package/vue/UiContextMenu.vue +47 -6
  224. package/vue/UiDialog.d.ts +18 -4
  225. package/vue/UiDialog.vue +86 -11
  226. package/vue/UiDisclosure.d.ts +8 -2
  227. package/vue/UiDisclosure.vue +38 -14
  228. package/vue/UiEditable.d.ts +10 -0
  229. package/vue/UiEditable.vue +14 -2
  230. package/vue/UiEditorInsertTableGrid.vue +52 -15
  231. package/vue/UiEditorMentionMenu.d.ts +24 -2
  232. package/vue/UiEditorMentionMenu.vue +27 -11
  233. package/vue/UiEditorMentionMenuItem.d.ts +24 -0
  234. package/vue/UiEditorMentionMenuItem.js +2 -0
  235. package/vue/UiEditorMentionMenuItem.vue +88 -0
  236. package/vue/UiEditorSlashMenu.d.ts +24 -1
  237. package/vue/UiEditorSlashMenu.vue +33 -33
  238. package/vue/UiEditorSlashMenuGroup.d.ts +18 -0
  239. package/vue/UiEditorSlashMenuGroup.js +2 -0
  240. package/vue/UiEditorSlashMenuGroup.vue +43 -0
  241. package/vue/UiEditorSlashMenuItem.d.ts +26 -0
  242. package/vue/UiEditorSlashMenuItem.js +2 -0
  243. package/vue/UiEditorSlashMenuItem.vue +101 -0
  244. package/vue/UiEditorTableContextMenu.d.ts +9 -3
  245. package/vue/UiEditorTableContextMenu.vue +53 -3
  246. package/vue/UiEditorTableOverlay.d.ts +2 -2
  247. package/vue/UiEditorTableOverlay.vue +8 -6
  248. package/vue/UiEditorTableToolbar.d.ts +7 -3
  249. package/vue/UiEditorTableToolbar.vue +50 -2
  250. package/vue/UiEditorToolbar.vue +14 -1
  251. package/vue/UiFloatingActionButton.vue +1 -1
  252. package/vue/UiFormField.vue +28 -3
  253. package/vue/UiGrid.d.ts +1 -0
  254. package/vue/UiGrid.vue +26 -2
  255. package/vue/UiIcon.vue +16 -0
  256. package/vue/UiIconButton.d.ts +5 -3
  257. package/vue/UiIconButton.vue +40 -6
  258. package/vue/UiInput.vue +10 -3
  259. package/vue/UiInputGroup.vue +32 -11
  260. package/vue/UiListbox.d.ts +33 -0
  261. package/vue/UiListbox.js +2 -0
  262. package/vue/UiListbox.vue +131 -0
  263. package/vue/UiMenu.d.ts +2 -0
  264. package/vue/UiMenu.vue +43 -6
  265. package/vue/UiMenuGroup.d.ts +18 -0
  266. package/vue/UiMenuGroup.js +2 -0
  267. package/vue/UiMenuGroup.vue +39 -0
  268. package/vue/UiMenuItem.d.ts +34 -2
  269. package/vue/UiMenuItem.vue +145 -9
  270. package/vue/UiPopover.d.ts +2 -2
  271. package/vue/UiPopover.vue +44 -5
  272. package/vue/UiRadioGroup.d.ts +2 -0
  273. package/vue/UiRadioGroup.vue +17 -0
  274. package/vue/UiSearchShell.vue +12 -5
  275. package/vue/UiSelect.vue +18 -4
  276. package/vue/UiSwitch.vue +2 -2
  277. package/vue/UiSwitcher.d.ts +1 -0
  278. package/vue/UiSwitcher.vue +22 -1
  279. package/vue/UiTabs.d.ts +6 -2
  280. package/vue/UiTabs.vue +14 -12
  281. package/vue/UiTextarea.d.ts +2 -0
  282. package/vue/UiTextarea.vue +32 -4
  283. package/vue/UiToast.d.ts +34 -0
  284. package/vue/UiToast.js +2 -0
  285. package/vue/UiToast.vue +173 -0
  286. package/vue/UiToastRegion.d.ts +2 -18
  287. package/vue/UiToastRegion.vue +123 -48
  288. package/vue/UiTooltip.d.ts +2 -2
  289. package/vue/UiTooltip.vue +67 -12
  290. package/vue/UiTree.d.ts +10 -0
  291. package/vue/UiTree.vue +27 -0
  292. package/vue/UiTreeItem.d.ts +2 -0
  293. package/vue/UiTreeItem.vue +96 -4
  294. package/vue/chunks/UiAvatar.js +19 -5
  295. package/vue/chunks/UiAvatarGroup.js +10 -4
  296. package/vue/chunks/UiBadge.js +1 -1
  297. package/vue/chunks/UiButton.js +58 -11
  298. package/vue/chunks/UiCallout.js +2 -2
  299. package/vue/chunks/UiCheckbox.js +12 -2
  300. package/vue/chunks/UiCluster.js +5 -3
  301. package/vue/chunks/UiCombobox.js +29 -13
  302. package/vue/chunks/UiContextMenu.js +6 -2
  303. package/vue/chunks/UiDialog.js +25 -8
  304. package/vue/chunks/UiDisclosure.js +36 -12
  305. package/vue/chunks/UiEditable.js +22 -8
  306. package/vue/chunks/UiEditorInsertTableGrid.js +11 -14
  307. package/vue/chunks/UiEditorMentionMenu.js +30 -19
  308. package/vue/chunks/UiEditorMentionMenuItem.js +36 -0
  309. package/vue/chunks/UiEditorSlashMenu.js +33 -35
  310. package/vue/chunks/UiEditorSlashMenuGroup.js +26 -0
  311. package/vue/chunks/UiEditorSlashMenuItem.js +51 -0
  312. package/vue/chunks/UiEditorTableContextMenu.js +39 -5
  313. package/vue/chunks/UiEditorTableOverlay.js +6 -6
  314. package/vue/chunks/UiEditorTableToolbar.js +37 -4
  315. package/vue/chunks/UiEditorToolbar.js +18 -4
  316. package/vue/chunks/UiFloatingActionButton.js +1 -1
  317. package/vue/chunks/UiFormField.js +13 -9
  318. package/vue/chunks/UiGrid.js +6 -2
  319. package/vue/chunks/UiIcon.js +40 -2
  320. package/vue/chunks/UiIconButton.js +35 -4
  321. package/vue/chunks/UiInput.js +1 -1
  322. package/vue/chunks/UiInputGroup.js +1 -1
  323. package/vue/chunks/UiListbox.js +70 -0
  324. package/vue/chunks/UiMenu.js +6 -2
  325. package/vue/chunks/UiMenuGroup.js +25 -0
  326. package/vue/chunks/UiMenuItem.js +128 -7
  327. package/vue/chunks/UiPopover.js +1 -1
  328. package/vue/chunks/UiRadioGroup.js +8 -2
  329. package/vue/chunks/UiSearchShell.js +1 -1
  330. package/vue/chunks/UiSelect.js +1 -1
  331. package/vue/chunks/UiSwitch.js +1 -1
  332. package/vue/chunks/UiSwitcher.js +20 -3
  333. package/vue/chunks/UiTabs.js +4 -3
  334. package/vue/chunks/UiTextarea.js +7 -2
  335. package/vue/chunks/UiToast.js +81 -0
  336. package/vue/chunks/UiToastRegion.js +25 -49
  337. package/vue/chunks/UiTooltip.js +3 -7
  338. package/vue/chunks/UiTree.js +8 -4
  339. package/vue/chunks/UiTreeItem.js +28 -10
  340. package/vue/components.css +1856 -864
  341. package/vue/editor/index.js +263 -2
  342. package/vue/index.d.ts +6 -0
  343. package/vue/index.js +9 -3
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, h, nextTick, onBeforeUnmount, onMounted, reactive, ref, useId, watch } from "vue";
2
2
  import { DEFAULT_MENTION_RESULT_LIMIT, LOOMA_ICONS, createLoomaMentionExtension, createLoomaSlashCommandExtension, getActiveTableUiState, getDefaultEditorExtensions, getVisualViewportRect, handleTableAction, handleTableOverlayAction, measureTableOverlayGeometry, normalizeActiveTableColumnWidths, resolveTableCellAt, shouldShowTextFormattingToolbar } from "@threadlabs/looma/editor";
3
- import { EditorInsertTableGrid, EditorMentionMenu, EditorSlashMenu, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, IconButton, Popover, Tooltip } from "@threadlabs/looma/vue";
3
+ import { EditorInsertTableGrid, EditorMentionMenu, EditorSlashMenu, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, IconButton, Menu, MenuItem, Popover, Tooltip } from "@threadlabs/looma/vue";
4
4
  import { BubbleMenu, EditorContent, useEditor } from "@tiptap/vue-3";
5
5
  import { Plugin, PluginKey, TextSelection } from "@tiptap/pm/state";
6
6
  import { Extension } from "@tiptap/core";
@@ -185,6 +185,12 @@ var EMPTY_DOCUMENT = {
185
185
  };
186
186
  var editorInstanceSequence = 0;
187
187
  var EMPTY_CAPABILITIES = {
188
+ canToggleHeaderRow: false,
189
+ canToggleHeaderColumn: false,
190
+ canMoveRowUp: false,
191
+ canMoveRowDown: false,
192
+ canMoveColumnLeft: false,
193
+ canMoveColumnRight: false,
188
194
  canAddRowBefore: false,
189
195
  canAddRowAfter: false,
190
196
  canAddColumnBefore: false,
@@ -198,6 +204,22 @@ var EMPTY_CAPABILITIES = {
198
204
  function sameDocument(left, right) {
199
205
  return JSON.stringify(left) === JSON.stringify(right);
200
206
  }
207
+ function validLinkHref(value) {
208
+ const href = value.trim();
209
+ if (!href || /[\u0000-\u001f\u007f]/.test(href)) return null;
210
+ if (/^(\/|#|\?)/.test(href)) return href;
211
+ try {
212
+ const url = new URL(href);
213
+ return [
214
+ "http:",
215
+ "https:",
216
+ "mailto:",
217
+ "tel:"
218
+ ].includes(url.protocol) ? href : null;
219
+ } catch {
220
+ return null;
221
+ }
222
+ }
201
223
  function managedMenuAnchorRect(rect) {
202
224
  if (!rect) return null;
203
225
  return {
@@ -314,6 +336,16 @@ var LoomaEditor = defineComponent({
314
336
  const root = ref(null);
315
337
  const fileInput = ref(null);
316
338
  const tablePickerAnchorId = `looma-editor-table-picker-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
339
+ const blockActionAnchorId = `ui-block-tools-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
340
+ let blockActionTarget = null;
341
+ const linkAnchorId = `looma-editor-link-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
342
+ const linkUrlInput = ref(null);
343
+ const linkOpen = ref(false);
344
+ const linkHref = ref("");
345
+ const linkText = ref("");
346
+ const linkNewTab = ref(true);
347
+ const linkError = ref("");
348
+ let linkSelection = null;
317
349
  const toolbarScope = `looma-editor-tool-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
318
350
  const tooltipFor = ref("");
319
351
  const tooltipLabel = ref("");
@@ -382,8 +414,11 @@ var LoomaEditor = defineComponent({
382
414
  toolbarOpen: false,
383
415
  overlayOpen: false,
384
416
  menuOpen: false,
417
+ menuScope: "cell",
385
418
  alignment: "left",
386
419
  background: null,
420
+ headerRow: false,
421
+ headerColumn: false,
387
422
  rows: 0,
388
423
  cols: 0,
389
424
  geometry: null,
@@ -451,6 +486,112 @@ var LoomaEditor = defineComponent({
451
486
  emit("update", value);
452
487
  }
453
488
  });
489
+ const openLinkEditor = () => {
490
+ const instance = editor.value;
491
+ if (!instance || !props.editable) return;
492
+ const current = instance.state.selection;
493
+ const preserved = lastFocusedSelection?.text && lastFocusedSelection.from !== lastFocusedSelection.to ? lastFocusedSelection : null;
494
+ const from = current.empty && preserved ? preserved.from : current.from;
495
+ const to = current.empty && preserved ? preserved.to : current.to;
496
+ const empty = from === to;
497
+ const existing = instance.isActive("link");
498
+ linkSelection = {
499
+ from,
500
+ to,
501
+ existing
502
+ };
503
+ const attrs = existing ? instance.getAttributes("link") : {};
504
+ linkHref.value = typeof attrs.href === "string" ? attrs.href : "";
505
+ linkNewTab.value = attrs.target !== "_self";
506
+ linkText.value = empty && !existing ? "" : instance.state.doc.textBetween(from, to);
507
+ linkError.value = "";
508
+ linkOpen.value = true;
509
+ nextTick(() => linkUrlInput.value?.focus());
510
+ };
511
+ const saveLink = () => {
512
+ const instance = editor.value;
513
+ const selection = linkSelection;
514
+ if (!instance || !selection) return;
515
+ const href = validLinkHref(linkHref.value);
516
+ if (!href) {
517
+ linkError.value = "Enter an http, https, mailto, tel, or relative URL.";
518
+ linkUrlInput.value?.focus();
519
+ return;
520
+ }
521
+ const attrs = {
522
+ href,
523
+ target: linkNewTab.value ? "_blank" : "_self",
524
+ rel: linkNewTab.value ? "noopener noreferrer" : null
525
+ };
526
+ const chain = instance.chain().focus().setTextSelection({
527
+ from: selection.from,
528
+ to: selection.to
529
+ });
530
+ if (selection.from === selection.to && !selection.existing) {
531
+ const text = linkText.value.trim();
532
+ if (!text) {
533
+ linkError.value = "Enter link text.";
534
+ return;
535
+ }
536
+ chain.insertContent({
537
+ type: "text",
538
+ text,
539
+ marks: [{
540
+ type: "link",
541
+ attrs
542
+ }]
543
+ }).run();
544
+ } else {
545
+ if (selection.existing && selection.from === selection.to) chain.extendMarkRange("link");
546
+ chain.setLink(attrs).run();
547
+ }
548
+ linkOpen.value = false;
549
+ };
550
+ const removeLink = () => {
551
+ const instance = editor.value;
552
+ const selection = linkSelection;
553
+ if (!instance || !selection?.existing) return;
554
+ instance.chain().focus().setTextSelection({
555
+ from: selection.from,
556
+ to: selection.to
557
+ }).extendMarkRange("link").unsetLink().run();
558
+ linkOpen.value = false;
559
+ };
560
+ const captureBlockAction = () => {
561
+ const instance = editor.value;
562
+ const head = instance?.state.selection.$head;
563
+ const position = head && head.depth > 0 ? head.before(1) : null;
564
+ blockActionTarget = position === null ? null : {
565
+ position,
566
+ node: instance?.state.doc.nodeAt(position) ?? null
567
+ };
568
+ };
569
+ const runBlockAction = (value) => {
570
+ const instance = editor.value;
571
+ const target = blockActionTarget;
572
+ if (!instance || !target || !props.editable) return;
573
+ const { state } = instance;
574
+ const { position } = target;
575
+ const block = state.doc.nodeAt(position);
576
+ if (!block || block !== target.node) return;
577
+ const end = position + block.nodeSize;
578
+ const transaction = state.tr;
579
+ let focusAt = end + 1;
580
+ if (value === "insert-below") transaction.insert(end, state.schema.nodes.paragraph.create());
581
+ else if (value === "duplicate") transaction.insert(end, block);
582
+ else if (value === "delete") {
583
+ if (state.doc.childCount === 1) {
584
+ transaction.replaceWith(position, end, state.schema.nodes.paragraph.create());
585
+ focusAt = 1;
586
+ } else {
587
+ transaction.delete(position, end);
588
+ focusAt = Math.min(position + 1, transaction.doc.content.size);
589
+ }
590
+ } else return;
591
+ transaction.setSelection(TextSelection.near(transaction.doc.resolve(Math.min(focusAt, transaction.doc.content.size))));
592
+ instance.view.dispatch(transaction);
593
+ instance.commands.focus();
594
+ };
454
595
  watch(() => props.editable, (editable) => editor.value?.setEditable(editable));
455
596
  watch(() => props.label, (label) => {
456
597
  editor.value?.setOptions({ editorProps: { attributes: {
@@ -495,8 +636,11 @@ var LoomaEditor = defineComponent({
495
636
  tableUi.toolbarOpen = false;
496
637
  tableUi.overlayOpen = false;
497
638
  tableUi.menuOpen = false;
639
+ tableUi.menuScope = "cell";
498
640
  tableUi.alignment = "left";
499
641
  tableUi.background = null;
642
+ tableUi.headerRow = false;
643
+ tableUi.headerColumn = false;
500
644
  tableUi.geometry = null;
501
645
  tableUi.capabilities = { ...EMPTY_CAPABILITIES };
502
646
  overlayTableElement = null;
@@ -542,6 +686,8 @@ var LoomaEditor = defineComponent({
542
686
  tableUi.overlayOpen = !mobile.value;
543
687
  tableUi.alignment = selectedTableIsActive ? state.cellAlignment : "left";
544
688
  tableUi.background = selectedTableIsActive ? state.cellBackground : null;
689
+ tableUi.headerRow = selectedTableIsActive && state.headerRow;
690
+ tableUi.headerColumn = selectedTableIsActive && state.headerColumn;
545
691
  tableUi.capabilities = selectedTableIsActive ? state.capabilities : { ...EMPTY_CAPABILITIES };
546
692
  const selectedCell = selectedTableIsActive ? selectedTableCellElement(instance) : null;
547
693
  const geometry = measureTableOverlayGeometry(table, selectedCell, hoveredTableCell && table.contains(hoveredTableCell) ? hoveredTableCell : null);
@@ -737,6 +883,7 @@ var LoomaEditor = defineComponent({
737
883
  event.preventDefault();
738
884
  if (selectedTableCellElement(instance) !== cell && !cell.classList.contains("selectedCell")) instance.chain().focus().setTextSelection(instance.view.posAtDOM(cell, 0) + 1).run();
739
885
  updateTableUi();
886
+ tableUi.menuScope = "cell";
740
887
  tableUi.menuOpen = true;
741
888
  tableUi.menuStyle = {
742
889
  top: `${event.clientY}px`,
@@ -762,6 +909,17 @@ var LoomaEditor = defineComponent({
762
909
  if (cell && selectedCell !== cell && !cell.classList.contains("selectedCell")) instance.chain().focus().setTextSelection(instance.view.posAtDOM(cell, 0) + 1).run();
763
910
  else instance.commands.focus();
764
911
  updateTableUi();
912
+ tableUi.menuScope = "cell";
913
+ tableUi.menuStyle = {
914
+ top: `${detail.anchor.bottom + 4}px`,
915
+ left: `${detail.anchor.right}px`
916
+ };
917
+ tableUi.menuOpen = true;
918
+ return;
919
+ }
920
+ if (detail.action === "open-row-menu" || detail.action === "open-column-menu") {
921
+ updateTableUi();
922
+ tableUi.menuScope = detail.action === "open-row-menu" ? "row" : "column";
765
923
  tableUi.menuStyle = {
766
924
  top: `${detail.anchor.bottom + 4}px`,
767
925
  left: `${detail.anchor.right}px`
@@ -841,6 +999,20 @@ var LoomaEditor = defineComponent({
841
999
  commandButton("Strike", "strikethrough", instance.isActive("strike"), !instance.can().toggleStrike(), () => instance.chain().focus().toggleStrike().run()),
842
1000
  commandButton("Highlight", "highlighter", instance.isActive("highlight"), !instance.can().toggleHighlight(), () => instance.chain().focus().toggleHighlight().run()),
843
1001
  commandButton("Inline code", "code-xml", instance.isActive("code"), !instance.can().toggleCode(), () => instance.chain().focus().toggleCode().run()),
1002
+ h(IconButton, {
1003
+ id: linkAnchorId,
1004
+ class: "looma-editor__toolbar-button",
1005
+ label: "Link",
1006
+ size: "sm",
1007
+ variant: "ghost",
1008
+ "aria-expanded": linkOpen.value ? "true" : "false",
1009
+ "aria-pressed": instance.isActive("link") ? "true" : "false",
1010
+ "data-active": instance.isActive("link") ? "true" : "false",
1011
+ onPointerenter: () => showTool(linkAnchorId, "Link", false),
1012
+ onPointerleave: hideTool,
1013
+ onFocusin: () => showTool(linkAnchorId, "Link", true),
1014
+ onFocusout: hideTool
1015
+ }, () => loomaIcon("link")),
844
1016
  h("span", {
845
1017
  class: "divider",
846
1018
  "aria-hidden": "true"
@@ -852,6 +1024,17 @@ var LoomaEditor = defineComponent({
852
1024
  commandButton("Numbered list", "list-ordered", instance.isActive("orderedList"), false, () => instance.chain().focus().toggleOrderedList().run()),
853
1025
  commandButton("Blockquote", "quote", instance.isActive("blockquote"), !instance.can().toggleBlockquote(), () => instance.chain().focus().toggleBlockquote().run()),
854
1026
  commandButton("Code block", "braces", instance.isActive("codeBlock"), !instance.can().toggleCodeBlock(), () => instance.chain().focus().toggleCodeBlock().run()),
1027
+ h(IconButton, {
1028
+ id: blockActionAnchorId,
1029
+ class: "looma-editor__toolbar-button",
1030
+ label: "Block actions",
1031
+ size: "sm",
1032
+ variant: "ghost",
1033
+ onPointerenter: () => showTool(blockActionAnchorId, "Block actions", false),
1034
+ onPointerleave: hideTool,
1035
+ onFocusin: () => showTool(blockActionAnchorId, "Block actions", true),
1036
+ onFocusout: hideTool
1037
+ }, () => loomaIcon("ellipsis")),
855
1038
  h("span", {
856
1039
  class: "divider",
857
1040
  "aria-hidden": "true"
@@ -909,6 +1092,12 @@ var LoomaEditor = defineComponent({
909
1092
  ...tableUi.capabilities.canAddRowAfter ? ["add-row-after"] : [],
910
1093
  ...tableUi.capabilities.canAddColumnBefore ? ["add-column-before"] : [],
911
1094
  ...tableUi.capabilities.canAddColumnAfter ? ["add-column-after"] : [],
1095
+ ...tableUi.capabilities.canToggleHeaderRow ? ["toggle-header-row"] : [],
1096
+ ...tableUi.capabilities.canToggleHeaderColumn ? ["toggle-header-column"] : [],
1097
+ ...tableUi.capabilities.canMoveRowUp ? ["move-row-up"] : [],
1098
+ ...tableUi.capabilities.canMoveRowDown ? ["move-row-down"] : [],
1099
+ ...tableUi.capabilities.canMoveColumnLeft ? ["move-column-left"] : [],
1100
+ ...tableUi.capabilities.canMoveColumnRight ? ["move-column-right"] : [],
912
1101
  ...tableUi.capabilities.canMergeCells ? ["merge-cells"] : [],
913
1102
  ...tableUi.capabilities.canSplitCell ? ["split-cell"] : [],
914
1103
  ...tableUi.capabilities.canDeleteRow ? ["delete-row"] : [],
@@ -919,6 +1108,8 @@ var LoomaEditor = defineComponent({
919
1108
  open: true,
920
1109
  cellAlignment: tableUi.alignment,
921
1110
  cellBackground: tableUi.background ?? void 0,
1111
+ headerRow: tableUi.headerRow,
1112
+ headerColumn: tableUi.headerColumn,
922
1113
  actions: tableActions,
923
1114
  onAction: runTableAction
924
1115
  };
@@ -1012,6 +1203,73 @@ var LoomaEditor = defineComponent({
1012
1203
  class: "looma-editor__drop-overlay",
1013
1204
  "aria-hidden": "true"
1014
1205
  }, [loomaIcon("image"), h("span", "Drop image to upload")]) : null,
1206
+ h(Popover, {
1207
+ class: "looma-editor__link-popover",
1208
+ open: linkOpen.value,
1209
+ for: linkAnchorId,
1210
+ placement: mobile.value ? "top-start" : "bottom-start",
1211
+ onOpen: openLinkEditor,
1212
+ onClose: () => {
1213
+ linkOpen.value = false;
1214
+ }
1215
+ }, () => h("form", {
1216
+ class: "looma-editor__link-form",
1217
+ "aria-label": "Edit link",
1218
+ onSubmit: (event) => {
1219
+ event.preventDefault();
1220
+ saveLink();
1221
+ }
1222
+ }, [
1223
+ linkSelection?.from === linkSelection?.to && !linkSelection?.existing ? h("label", [h("span", "Text"), h("input", {
1224
+ value: linkText.value,
1225
+ onInput: (event) => {
1226
+ linkText.value = event.target.value;
1227
+ linkError.value = "";
1228
+ }
1229
+ })]) : null,
1230
+ h("label", [h("span", "URL"), h("input", {
1231
+ ref: linkUrlInput,
1232
+ type: "text",
1233
+ inputmode: "url",
1234
+ value: linkHref.value,
1235
+ "aria-invalid": linkError.value ? "true" : void 0,
1236
+ onInput: (event) => {
1237
+ linkHref.value = event.target.value;
1238
+ linkError.value = "";
1239
+ }
1240
+ })]),
1241
+ h("label", { class: "looma-editor__link-new-tab" }, [h("input", {
1242
+ type: "checkbox",
1243
+ checked: linkNewTab.value,
1244
+ onChange: (event) => {
1245
+ linkNewTab.value = event.target.checked;
1246
+ }
1247
+ }), h("span", "Open in new tab")]),
1248
+ linkError.value ? h("p", {
1249
+ class: "looma-editor__link-error",
1250
+ role: "alert"
1251
+ }, linkError.value) : null,
1252
+ validLinkHref(linkHref.value) ? h("a", {
1253
+ class: "looma-editor__link-preview",
1254
+ href: validLinkHref(linkHref.value),
1255
+ target: "_blank",
1256
+ rel: "noopener noreferrer"
1257
+ }, "Preview link") : null,
1258
+ h("div", { class: "looma-editor__link-actions" }, [linkSelection?.existing ? h("button", {
1259
+ type: "button",
1260
+ onClick: removeLink
1261
+ }, "Remove link") : null, h("button", { type: "submit" }, "Save link")])
1262
+ ])),
1263
+ h(Menu, {
1264
+ for: blockActionAnchorId,
1265
+ placement: mobile.value ? "top-start" : "bottom-start",
1266
+ onOpen: captureBlockAction,
1267
+ onSelect: ({ value }) => runBlockAction(value)
1268
+ }, () => [
1269
+ h(MenuItem, { value: "insert-below" }, () => "Insert paragraph below"),
1270
+ h(MenuItem, { value: "duplicate" }, () => "Duplicate block"),
1271
+ h(MenuItem, { value: "delete" }, () => "Delete block")
1272
+ ]),
1015
1273
  h(Popover, {
1016
1274
  class: "looma-editor__table-picker-popover",
1017
1275
  open: tablePickerOpen.value,
@@ -1079,7 +1337,10 @@ var LoomaEditor = defineComponent({
1079
1337
  ref: tableMenuShell,
1080
1338
  class: "looma-editor__table-menu-shell",
1081
1339
  style: tableUi.menuStyle
1082
- }, [h(EditorTableContextMenu, tableProps)]) : null
1340
+ }, [h(EditorTableContextMenu, {
1341
+ ...tableProps,
1342
+ scope: tableUi.menuScope
1343
+ })]) : null
1083
1344
  ]);
1084
1345
  };
1085
1346
  }
package/vue/index.d.ts CHANGED
@@ -21,7 +21,10 @@ export { default as Disclosure } from "./UiDisclosure.js";
21
21
  export { default as Editable } from "./UiEditable.js";
22
22
  export { default as EditorInsertTableGrid } from "./UiEditorInsertTableGrid.js";
23
23
  export { default as EditorMentionMenu } from "./UiEditorMentionMenu.js";
24
+ export { default as EditorMentionMenuItem } from "./UiEditorMentionMenuItem.js";
24
25
  export { default as EditorSlashMenu } from "./UiEditorSlashMenu.js";
26
+ export { default as EditorSlashMenuGroup } from "./UiEditorSlashMenuGroup.js";
27
+ export { default as EditorSlashMenuItem } from "./UiEditorSlashMenuItem.js";
25
28
  export { default as EditorTableContextMenu } from "./UiEditorTableContextMenu.js";
26
29
  export { default as EditorTableOverlay } from "./UiEditorTableOverlay.js";
27
30
  export { default as EditorTableToolbar } from "./UiEditorTableToolbar.js";
@@ -35,7 +38,9 @@ export { default as Input } from "./UiInput.js";
35
38
  export { default as InputGroup } from "./UiInputGroup.js";
36
39
  export { default as List } from "./UiList.js";
37
40
  export { default as ListItem } from "./UiListItem.js";
41
+ export { default as Listbox } from "./UiListbox.js";
38
42
  export { default as Menu } from "./UiMenu.js";
43
+ export { default as MenuGroup } from "./UiMenuGroup.js";
39
44
  export { default as MenuItem } from "./UiMenuItem.js";
40
45
  export { default as Meter } from "./UiMeter.js";
41
46
  export { default as NavItem } from "./UiNavItem.js";
@@ -60,6 +65,7 @@ export { default as Table } from "./UiTable.js";
60
65
  export { default as Tabs } from "./UiTabs.js";
61
66
  export { default as Text } from "./UiText.js";
62
67
  export { default as Textarea } from "./UiTextarea.js";
68
+ export { default as Toast } from "./UiToast.js";
63
69
  export { default as ToastRegion } from "./UiToastRegion.js";
64
70
  export { default as Tooltip } from "./UiTooltip.js";
65
71
  export { default as TopBar } from "./UiTopBar.js";
package/vue/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { t as UiActionBar_default } from "./chunks/UiActionBar.js";
2
2
  import { t as UiAffordanceScope_default } from "./chunks/UiAffordanceScope.js";
3
+ import { t as UiIcon_default } from "./chunks/UiIcon.js";
3
4
  import { t as UiAvatar_default } from "./chunks/UiAvatar.js";
4
5
  import { t as UiAvatarGroup_default } from "./chunks/UiAvatarGroup.js";
5
6
  import { t as UiBadge_default } from "./chunks/UiBadge.js";
6
- import { t as UiIcon_default } from "./chunks/UiIcon.js";
7
7
  import { t as UiBreadcrumbItem_default } from "./chunks/UiBreadcrumbItem.js";
8
8
  import { t as UiBreadcrumbs_default } from "./chunks/UiBreadcrumbs.js";
9
+ import { t as UiSpinner_default } from "./chunks/UiSpinner.js";
9
10
  import { t as UiButton_default } from "./chunks/UiButton.js";
10
11
  import { t as UiCallout_default } from "./chunks/UiCallout.js";
11
12
  import { t as UiCard_default } from "./chunks/UiCard.js";
@@ -23,7 +24,10 @@ import { t as UiDisclosure_default } from "./chunks/UiDisclosure.js";
23
24
  import { t as UiEditable_default } from "./chunks/UiEditable.js";
24
25
  import { t as UiEditorInsertTableGrid_default } from "./chunks/UiEditorInsertTableGrid.js";
25
26
  import { t as UiEditorMentionMenu_default } from "./chunks/UiEditorMentionMenu.js";
27
+ import { t as UiEditorMentionMenuItem_default } from "./chunks/UiEditorMentionMenuItem.js";
26
28
  import { t as UiEditorSlashMenu_default } from "./chunks/UiEditorSlashMenu.js";
29
+ import { t as UiEditorSlashMenuGroup_default } from "./chunks/UiEditorSlashMenuGroup.js";
30
+ import { t as UiEditorSlashMenuItem_default } from "./chunks/UiEditorSlashMenuItem.js";
27
31
  import { t as UiEditorTableContextMenu_default } from "./chunks/UiEditorTableContextMenu.js";
28
32
  import { t as UiEditorTableOverlay_default } from "./chunks/UiEditorTableOverlay.js";
29
33
  import { t as UiEditorTableToolbar_default } from "./chunks/UiEditorTableToolbar.js";
@@ -36,7 +40,9 @@ import { t as UiInput_default } from "./chunks/UiInput.js";
36
40
  import { t as UiInputGroup_default } from "./chunks/UiInputGroup.js";
37
41
  import { t as UiList_default } from "./chunks/UiList.js";
38
42
  import { t as UiListItem_default } from "./chunks/UiListItem.js";
43
+ import { t as UiListbox_default } from "./chunks/UiListbox.js";
39
44
  import { t as UiMenu_default } from "./chunks/UiMenu.js";
45
+ import { t as UiMenuGroup_default } from "./chunks/UiMenuGroup.js";
40
46
  import { t as UiMenuItem_default } from "./chunks/UiMenuItem.js";
41
47
  import { t as UiMeter_default } from "./chunks/UiMeter.js";
42
48
  import { t as UiNavItem_default } from "./chunks/UiNavItem.js";
@@ -52,7 +58,6 @@ import { t as UiSection_default } from "./chunks/UiSection.js";
52
58
  import { t as UiSelect_default } from "./chunks/UiSelect.js";
53
59
  import { t as UiSeparator_default } from "./chunks/UiSeparator.js";
54
60
  import { t as UiSidebar_default } from "./chunks/UiSidebar.js";
55
- import { t as UiSpinner_default } from "./chunks/UiSpinner.js";
56
61
  import { t as UiStack_default } from "./chunks/UiStack.js";
57
62
  import { t as UiStatusMessage_default } from "./chunks/UiStatusMessage.js";
58
63
  import { t as UiSwitch_default } from "./chunks/UiSwitch.js";
@@ -61,9 +66,10 @@ import { t as UiTable_default } from "./chunks/UiTable.js";
61
66
  import { t as UiTabs_default } from "./chunks/UiTabs.js";
62
67
  import { t as UiText_default } from "./chunks/UiText.js";
63
68
  import { t as UiTextarea_default } from "./chunks/UiTextarea.js";
69
+ import { t as UiToast_default } from "./chunks/UiToast.js";
64
70
  import { t as UiToastRegion_default } from "./chunks/UiToastRegion.js";
65
71
  import { t as UiTopBar_default } from "./chunks/UiTopBar.js";
66
72
  import { t as UiTree_default } from "./chunks/UiTree.js";
67
73
  import { t as UiTreeItem_default } from "./chunks/UiTreeItem.js";
68
74
  import { trackInputModality } from "@threadlabs/looma/components/shared/input-modality.js";
69
- export { UiActionBar_default as ActionBar, UiAffordanceScope_default as AffordanceScope, UiAvatar_default as Avatar, UiAvatarGroup_default as AvatarGroup, UiBadge_default as Badge, UiBreadcrumbItem_default as BreadcrumbItem, UiBreadcrumbs_default as Breadcrumbs, UiButton_default as Button, UiCallout_default as Callout, UiCard_default as Card, UiCheckbox_default as Checkbox, UiCluster_default as Cluster, UiCombobox_default as Combobox, UiContainer_default as Container, UiContextMenu_default as ContextMenu, UiCover_default as Cover, UiDescriptionItem_default as DescriptionItem, UiDescriptionList_default as DescriptionList, UiDialog_default as Dialog, UiDisclosure_default as Disclosure, UiEditable_default as Editable, UiEditorInsertTableGrid_default as EditorInsertTableGrid, UiEditorMentionMenu_default as EditorMentionMenu, UiEditorSlashMenu_default as EditorSlashMenu, UiEditorTableContextMenu_default as EditorTableContextMenu, UiEditorTableOverlay_default as EditorTableOverlay, UiEditorTableToolbar_default as EditorTableToolbar, UiEditorToolbar_default as EditorToolbar, UiFloatingActionButton_default as FloatingActionButton, UiFormField_default as FormField, UiGrid_default as Grid, UiIcon_default as Icon, UiIconButton_default as IconButton, UiInput_default as Input, UiInputGroup_default as InputGroup, UiList_default as List, UiListItem_default as ListItem, UiMenu_default as Menu, UiMenuItem_default as MenuItem, UiMeter_default as Meter, UiNavItem_default as NavItem, UiPageHeader_default as PageHeader, UiPopover_default as Popover, UiRadio_default as Radio, UiRadioGroup_default as RadioGroup, UiReel_default as Reel, UiScrollArea_default as ScrollArea, UiSearchResultRow_default as SearchResultRow, UiSearchShell_default as SearchShell, UiSection_default as Section, UiSelect_default as Select, UiSeparator_default as Separator, UiSidebar_default as Sidebar, UiSpinner_default as Spinner, UiStack_default as Stack, UiStatusMessage_default as StatusMessage, UiSwitch_default as Switch, UiSwitcher_default as Switcher, UiTable_default as Table, UiTabs_default as Tabs, UiText_default as Text, UiTextarea_default as Textarea, UiToastRegion_default as ToastRegion, UiTooltip_default as Tooltip, UiTopBar_default as TopBar, UiTree_default as Tree, UiTreeItem_default as TreeItem, trackInputModality };
75
+ export { UiActionBar_default as ActionBar, UiAffordanceScope_default as AffordanceScope, UiAvatar_default as Avatar, UiAvatarGroup_default as AvatarGroup, UiBadge_default as Badge, UiBreadcrumbItem_default as BreadcrumbItem, UiBreadcrumbs_default as Breadcrumbs, UiButton_default as Button, UiCallout_default as Callout, UiCard_default as Card, UiCheckbox_default as Checkbox, UiCluster_default as Cluster, UiCombobox_default as Combobox, UiContainer_default as Container, UiContextMenu_default as ContextMenu, UiCover_default as Cover, UiDescriptionItem_default as DescriptionItem, UiDescriptionList_default as DescriptionList, UiDialog_default as Dialog, UiDisclosure_default as Disclosure, UiEditable_default as Editable, UiEditorInsertTableGrid_default as EditorInsertTableGrid, UiEditorMentionMenu_default as EditorMentionMenu, UiEditorMentionMenuItem_default as EditorMentionMenuItem, UiEditorSlashMenu_default as EditorSlashMenu, UiEditorSlashMenuGroup_default as EditorSlashMenuGroup, UiEditorSlashMenuItem_default as EditorSlashMenuItem, UiEditorTableContextMenu_default as EditorTableContextMenu, UiEditorTableOverlay_default as EditorTableOverlay, UiEditorTableToolbar_default as EditorTableToolbar, UiEditorToolbar_default as EditorToolbar, UiFloatingActionButton_default as FloatingActionButton, UiFormField_default as FormField, UiGrid_default as Grid, UiIcon_default as Icon, UiIconButton_default as IconButton, UiInput_default as Input, UiInputGroup_default as InputGroup, UiList_default as List, UiListItem_default as ListItem, UiListbox_default as Listbox, UiMenu_default as Menu, UiMenuGroup_default as MenuGroup, UiMenuItem_default as MenuItem, UiMeter_default as Meter, UiNavItem_default as NavItem, UiPageHeader_default as PageHeader, UiPopover_default as Popover, UiRadio_default as Radio, UiRadioGroup_default as RadioGroup, UiReel_default as Reel, UiScrollArea_default as ScrollArea, UiSearchResultRow_default as SearchResultRow, UiSearchShell_default as SearchShell, UiSection_default as Section, UiSelect_default as Select, UiSeparator_default as Separator, UiSidebar_default as Sidebar, UiSpinner_default as Spinner, UiStack_default as Stack, UiStatusMessage_default as StatusMessage, UiSwitch_default as Switch, UiSwitcher_default as Switcher, UiTable_default as Table, UiTabs_default as Tabs, UiText_default as Text, UiTextarea_default as Textarea, UiToast_default as Toast, UiToastRegion_default as ToastRegion, UiTooltip_default as Tooltip, UiTopBar_default as TopBar, UiTree_default as Tree, UiTreeItem_default as TreeItem, trackInputModality };