@threadlabs/looma 0.4.0 → 0.5.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 (491) hide show
  1. package/README.md +43 -12
  2. package/components/shared/editor.js +69 -0
  3. package/components/shared/input-modality.d.ts +8 -0
  4. package/components/shared/input-modality.js +22 -0
  5. package/components/shared/overlay.js +281 -0
  6. package/components/shared/trigger.js +17 -0
  7. package/components/ui-affordance-scope/ui-affordance-scope.html +22 -0
  8. package/components/ui-affordance-scope/ui-affordance-scope.js +76 -0
  9. package/components/ui-avatar/ui-avatar.html +59 -0
  10. package/components/ui-avatar/ui-avatar.js +47 -0
  11. package/components/ui-avatar-group/ui-avatar-group.html +62 -0
  12. package/components/ui-avatar-group/ui-avatar-group.js +27 -0
  13. package/components/ui-badge/ui-badge.html +94 -0
  14. package/components/ui-button/ui-button.html +226 -0
  15. package/components/ui-callout/ui-callout.html +104 -0
  16. package/components/ui-checkbox/ui-checkbox.html +107 -0
  17. package/components/ui-checkbox/ui-checkbox.js +24 -0
  18. package/components/ui-cluster/ui-cluster.html +49 -0
  19. package/components/ui-combobox/ui-combobox.html +377 -0
  20. package/components/ui-combobox/ui-combobox.js +432 -0
  21. package/components/ui-container/ui-container.html +39 -0
  22. package/components/ui-context-menu/ui-context-menu.html +75 -0
  23. package/components/ui-context-menu/ui-context-menu.js +143 -0
  24. package/components/ui-dialog/ui-dialog.html +178 -0
  25. package/components/ui-dialog/ui-dialog.js +105 -0
  26. package/components/ui-disclosure/ui-disclosure.html +109 -0
  27. package/components/ui-disclosure/ui-disclosure.js +28 -0
  28. package/components/ui-editable/ui-editable.html +163 -0
  29. package/components/ui-editable/ui-editable.js +113 -0
  30. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +97 -0
  31. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +71 -0
  32. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +157 -0
  33. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +50 -0
  34. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +197 -0
  35. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +44 -0
  36. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +164 -0
  37. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +75 -0
  38. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +422 -0
  39. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +119 -0
  40. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +271 -0
  41. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +54 -0
  42. package/components/ui-editor-toolbar/ui-editor-toolbar.html +110 -0
  43. package/components/ui-floating-action-button/ui-floating-action-button.html +83 -0
  44. package/components/ui-form-field/ui-form-field.html +45 -0
  45. package/components/ui-form-field/ui-form-field.js +71 -0
  46. package/components/ui-grid/ui-grid.html +46 -0
  47. package/components/ui-icon/ui-icon.html +34 -0
  48. package/components/ui-icon/ui-icon.js +8 -0
  49. package/components/ui-icon-button/ui-icon-button.html +180 -0
  50. package/components/ui-icon-button/ui-icon-button.js +7 -0
  51. package/components/ui-input/ui-input.html +81 -0
  52. package/components/ui-input/ui-input.js +7 -0
  53. package/components/ui-menu/ui-menu.html +87 -0
  54. package/components/ui-menu/ui-menu.js +114 -0
  55. package/components/ui-menu-item/ui-menu-item.html +37 -0
  56. package/components/ui-popover/ui-popover.html +85 -0
  57. package/components/ui-popover/ui-popover.js +70 -0
  58. package/components/ui-radio/ui-radio.html +57 -0
  59. package/components/ui-radio/ui-radio.js +25 -0
  60. package/components/ui-radio-group/ui-radio-group.html +51 -0
  61. package/components/ui-radio-group/ui-radio-group.js +42 -0
  62. package/components/ui-reel/ui-reel.html +67 -0
  63. package/components/ui-search-result-row/ui-search-result-row.html +101 -0
  64. package/components/ui-search-shell/ui-search-shell.html +142 -0
  65. package/components/ui-search-shell/ui-search-shell.js +60 -0
  66. package/components/ui-select/ui-select.html +87 -0
  67. package/components/ui-select/ui-select.js +16 -0
  68. package/components/ui-separator/ui-separator.html +22 -0
  69. package/components/ui-sidebar/ui-sidebar.html +183 -0
  70. package/components/ui-sidebar/ui-sidebar.js +178 -0
  71. package/components/ui-stack/ui-stack.html +59 -0
  72. package/components/ui-switch/ui-switch.html +95 -0
  73. package/components/ui-switch/ui-switch.js +24 -0
  74. package/components/ui-switcher/ui-switcher.html +65 -0
  75. package/components/ui-tabs/ui-tabs.html +134 -0
  76. package/components/ui-tabs/ui-tabs.js +81 -0
  77. package/components/ui-textarea/ui-textarea.html +80 -0
  78. package/components/ui-textarea/ui-textarea.js +7 -0
  79. package/components/ui-toast-region/ui-toast-region.html +127 -0
  80. package/components/ui-toast-region/ui-toast-region.js +119 -0
  81. package/components/ui-tooltip/ui-tooltip.html +122 -0
  82. package/components/ui-tooltip/ui-tooltip.js +134 -0
  83. package/components/ui-top-bar/ui-top-bar.html +53 -0
  84. package/components/ui-tree/ui-tree.html +29 -0
  85. package/components/ui-tree/ui-tree.js +250 -0
  86. package/components/ui-tree-item/ui-tree-item.html +326 -0
  87. package/components/ui-tree-item/ui-tree-item.js +94 -0
  88. package/dist/index.d.ts +4 -414
  89. package/dist/index.js +55 -657
  90. package/editor/chunks/extensions.js +7267 -0
  91. package/editor/chunks/table-backgrounds.js +51 -0
  92. package/editor/chunks/ui.js +92 -0
  93. package/editor/extensions/callout.d.ts +20 -0
  94. package/editor/extensions/index.d.ts +12 -441
  95. package/editor/extensions/index.js +3 -64
  96. package/editor/extensions/list-behavior.d.ts +7 -0
  97. package/editor/extensions/mention.d.ts +35 -0
  98. package/editor/extensions/preset.d.ts +42 -0
  99. package/editor/extensions/slash-command.d.ts +80 -0
  100. package/editor/extensions/smart-paste.d.ts +13 -0
  101. package/editor/extensions/table-commands.d.ts +114 -0
  102. package/editor/extensions/table-formatting.d.ts +60 -0
  103. package/editor/icons.d.ts +55 -0
  104. package/editor/index.d.ts +8 -6
  105. package/editor/index.js +96 -71
  106. package/editor/insert-table-grid.d.ts +7 -0
  107. package/editor/mention-contract.d.ts +78 -0
  108. package/editor/mention-menu.d.ts +9 -0
  109. package/editor/slash-menu.d.ts +29 -0
  110. package/editor/table-backgrounds.d.ts +43 -0
  111. package/editor/table-context-menu.d.ts +12 -0
  112. package/editor/table-overlay.d.ts +79 -0
  113. package/editor/ui.d.ts +10 -50
  114. package/editor/ui.js +3 -14
  115. package/editor/viewport.d.ts +15 -0
  116. package/package.json +84 -60
  117. package/styles/ui-affordance-scope.css +19 -0
  118. package/styles/ui-avatar-group.css +56 -0
  119. package/styles/ui-avatar.css +47 -0
  120. package/styles/ui-badge.css +91 -0
  121. package/styles/ui-button.css +236 -0
  122. package/styles/ui-callout.css +76 -0
  123. package/styles/ui-checkbox.css +98 -0
  124. package/styles/ui-cluster.css +46 -0
  125. package/styles/ui-combobox.css +213 -0
  126. package/styles/ui-container.css +36 -0
  127. package/styles/ui-context-menu.css +68 -0
  128. package/styles/ui-dialog.css +160 -0
  129. package/styles/ui-disclosure.css +95 -0
  130. package/styles/ui-editable.css +139 -0
  131. package/styles/ui-editor-insert-table-grid.css +65 -0
  132. package/styles/ui-editor-mention-menu.css +121 -0
  133. package/styles/ui-editor-slash-menu.css +179 -0
  134. package/styles/ui-editor-table-context-menu.css +118 -0
  135. package/styles/ui-editor-table-overlay.css +318 -0
  136. package/styles/ui-editor-table-toolbar.css +191 -0
  137. package/styles/ui-editor-toolbar.css +115 -0
  138. package/styles/ui-floating-action-button.css +82 -0
  139. package/styles/ui-form-field.css +36 -0
  140. package/styles/ui-grid.css +43 -0
  141. package/styles/ui-icon-button.css +184 -0
  142. package/styles/ui-icon.css +23 -0
  143. package/styles/ui-input.css +82 -0
  144. package/styles/ui-menu-item.css +34 -0
  145. package/styles/ui-menu.css +80 -0
  146. package/styles/ui-popover.css +76 -0
  147. package/styles/ui-radio-group.css +38 -0
  148. package/styles/ui-radio.css +46 -0
  149. package/styles/ui-reel.css +63 -0
  150. package/styles/ui-search-result-row.css +92 -0
  151. package/styles/ui-search-shell.css +128 -0
  152. package/styles/ui-select.css +86 -0
  153. package/styles/ui-separator.css +16 -0
  154. package/styles/ui-sidebar.css +166 -0
  155. package/styles/ui-stack.css +55 -0
  156. package/styles/ui-switch.css +88 -0
  157. package/styles/ui-switcher.css +61 -0
  158. package/styles/ui-tabs.css +114 -0
  159. package/styles/ui-textarea.css +77 -0
  160. package/styles/ui-toast-region.css +103 -0
  161. package/styles/ui-tooltip.css +113 -0
  162. package/styles/ui-top-bar.css +51 -0
  163. package/styles/ui-tree-item.css +267 -0
  164. package/styles/ui-tree.css +16 -0
  165. package/vanilla/UiAffordanceScope.d.ts +14 -0
  166. package/vanilla/UiAffordanceScope.js +30 -0
  167. package/vanilla/UiAvatar.d.ts +17 -0
  168. package/vanilla/UiAvatar.js +41 -0
  169. package/vanilla/UiAvatarGroup.d.ts +15 -0
  170. package/vanilla/UiAvatarGroup.js +40 -0
  171. package/vanilla/UiBadge.d.ts +15 -0
  172. package/vanilla/UiBadge.js +30 -0
  173. package/vanilla/UiButton.d.ts +16 -0
  174. package/vanilla/UiButton.js +32 -0
  175. package/vanilla/UiCallout.d.ts +14 -0
  176. package/vanilla/UiCallout.js +124 -0
  177. package/vanilla/UiCheckbox.d.ts +19 -0
  178. package/vanilla/UiCheckbox.js +47 -0
  179. package/vanilla/UiCluster.d.ts +15 -0
  180. package/vanilla/UiCluster.js +30 -0
  181. package/vanilla/UiCombobox.d.ts +42 -0
  182. package/vanilla/UiCombobox.js +194 -0
  183. package/vanilla/UiContainer.d.ts +15 -0
  184. package/vanilla/UiContainer.js +30 -0
  185. package/vanilla/UiContextMenu.d.ts +18 -0
  186. package/vanilla/UiContextMenu.js +35 -0
  187. package/vanilla/UiDialog.d.ts +19 -0
  188. package/vanilla/UiDialog.js +53 -0
  189. package/vanilla/UiDisclosure.d.ts +18 -0
  190. package/vanilla/UiDisclosure.js +49 -0
  191. package/vanilla/UiEditable.d.ts +22 -0
  192. package/vanilla/UiEditable.js +59 -0
  193. package/vanilla/UiEditorInsertTableGrid.d.ts +18 -0
  194. package/vanilla/UiEditorInsertTableGrid.js +46 -0
  195. package/vanilla/UiEditorMentionMenu.d.ts +21 -0
  196. package/vanilla/UiEditorMentionMenu.js +63 -0
  197. package/vanilla/UiEditorSlashMenu.d.ts +20 -0
  198. package/vanilla/UiEditorSlashMenu.js +74 -0
  199. package/vanilla/UiEditorTableContextMenu.d.ts +17 -0
  200. package/vanilla/UiEditorTableContextMenu.js +69 -0
  201. package/vanilla/UiEditorTableOverlay.d.ts +16 -0
  202. package/vanilla/UiEditorTableOverlay.js +113 -0
  203. package/vanilla/UiEditorTableToolbar.d.ts +18 -0
  204. package/vanilla/UiEditorTableToolbar.js +121 -0
  205. package/vanilla/UiEditorToolbar.d.ts +14 -0
  206. package/vanilla/UiEditorToolbar.js +30 -0
  207. package/vanilla/UiFloatingActionButton.d.ts +16 -0
  208. package/vanilla/UiFloatingActionButton.js +35 -0
  209. package/vanilla/UiFormField.d.ts +16 -0
  210. package/vanilla/UiFormField.js +54 -0
  211. package/vanilla/UiGrid.d.ts +15 -0
  212. package/vanilla/UiGrid.js +30 -0
  213. package/vanilla/UiIcon.d.ts +14 -0
  214. package/vanilla/UiIcon.js +40 -0
  215. package/vanilla/UiIconButton.d.ts +19 -0
  216. package/vanilla/UiIconButton.js +37 -0
  217. package/vanilla/UiInput.d.ts +18 -0
  218. package/vanilla/UiInput.js +37 -0
  219. package/vanilla/UiMenu.d.ts +19 -0
  220. package/vanilla/UiMenu.js +35 -0
  221. package/vanilla/UiMenuItem.d.ts +15 -0
  222. package/vanilla/UiMenuItem.js +43 -0
  223. package/vanilla/UiPopover.d.ts +18 -0
  224. package/vanilla/UiPopover.js +33 -0
  225. package/vanilla/UiRadio.d.ts +19 -0
  226. package/vanilla/UiRadio.js +48 -0
  227. package/vanilla/UiRadioGroup.d.ts +21 -0
  228. package/vanilla/UiRadioGroup.js +35 -0
  229. package/vanilla/UiReel.d.ts +16 -0
  230. package/vanilla/UiReel.js +34 -0
  231. package/vanilla/UiSearchResultRow.d.ts +15 -0
  232. package/vanilla/UiSearchResultRow.js +82 -0
  233. package/vanilla/UiSearchShell.d.ts +18 -0
  234. package/vanilla/UiSearchShell.js +74 -0
  235. package/vanilla/UiSelect.d.ts +18 -0
  236. package/vanilla/UiSelect.js +42 -0
  237. package/vanilla/UiSeparator.d.ts +14 -0
  238. package/vanilla/UiSeparator.js +28 -0
  239. package/vanilla/UiSidebar.d.ts +24 -0
  240. package/vanilla/UiSidebar.js +47 -0
  241. package/vanilla/UiStack.d.ts +16 -0
  242. package/vanilla/UiStack.js +32 -0
  243. package/vanilla/UiSwitch.d.ts +18 -0
  244. package/vanilla/UiSwitch.js +46 -0
  245. package/vanilla/UiSwitcher.d.ts +16 -0
  246. package/vanilla/UiSwitcher.js +32 -0
  247. package/vanilla/UiTabs.d.ts +18 -0
  248. package/vanilla/UiTabs.js +47 -0
  249. package/vanilla/UiTextarea.d.ts +19 -0
  250. package/vanilla/UiTextarea.js +40 -0
  251. package/vanilla/UiToastRegion.d.ts +20 -0
  252. package/vanilla/UiToastRegion.js +58 -0
  253. package/vanilla/UiTooltip.d.ts +21 -0
  254. package/vanilla/UiTooltip.js +34 -0
  255. package/vanilla/UiTopBar.d.ts +13 -0
  256. package/vanilla/UiTopBar.js +59 -0
  257. package/vanilla/UiTree.d.ts +18 -0
  258. package/vanilla/UiTree.js +31 -0
  259. package/vanilla/UiTreeItem.d.ts +26 -0
  260. package/vanilla/UiTreeItem.js +164 -0
  261. package/vanilla/index.js +48 -0
  262. package/vue/UiAffordanceScope.d.ts +18 -0
  263. package/vue/UiAffordanceScope.js +2 -0
  264. package/vue/UiAffordanceScope.vue +118 -0
  265. package/vue/UiAvatar.d.ts +23 -0
  266. package/vue/UiAvatar.js +2 -0
  267. package/vue/UiAvatar.vue +152 -0
  268. package/vue/UiAvatarGroup.d.ts +20 -0
  269. package/vue/UiAvatarGroup.js +2 -0
  270. package/vue/UiAvatarGroup.vue +167 -0
  271. package/vue/UiBadge.d.ts +20 -0
  272. package/vue/UiBadge.js +2 -0
  273. package/vue/UiBadge.vue +123 -0
  274. package/vue/UiButton.d.ts +22 -0
  275. package/vue/UiButton.js +2 -0
  276. package/vue/UiButton.vue +257 -0
  277. package/vue/UiCallout.d.ts +18 -0
  278. package/vue/UiCallout.js +2 -0
  279. package/vue/UiCallout.vue +104 -0
  280. package/vue/UiCheckbox.d.ts +38 -0
  281. package/vue/UiCheckbox.js +2 -0
  282. package/vue/UiCheckbox.vue +216 -0
  283. package/vue/UiCluster.d.ts +17 -0
  284. package/vue/UiCluster.js +2 -0
  285. package/vue/UiCluster.vue +75 -0
  286. package/vue/UiCombobox.d.ts +255 -0
  287. package/vue/UiCombobox.js +2 -0
  288. package/vue/UiCombobox.vue +466 -0
  289. package/vue/UiContainer.d.ts +17 -0
  290. package/vue/UiContainer.js +2 -0
  291. package/vue/UiContainer.vue +65 -0
  292. package/vue/UiContextMenu.d.ts +50 -0
  293. package/vue/UiContextMenu.js +2 -0
  294. package/vue/UiContextMenu.vue +166 -0
  295. package/vue/UiDialog.d.ts +39 -0
  296. package/vue/UiDialog.js +2 -0
  297. package/vue/UiDialog.vue +273 -0
  298. package/vue/UiDisclosure.d.ts +44 -0
  299. package/vue/UiDisclosure.js +2 -0
  300. package/vue/UiDisclosure.vue +211 -0
  301. package/vue/UiEditable.d.ts +48 -0
  302. package/vue/UiEditable.js +2 -0
  303. package/vue/UiEditable.vue +267 -0
  304. package/vue/UiEditorInsertTableGrid.d.ts +26 -0
  305. package/vue/UiEditorInsertTableGrid.js +2 -0
  306. package/vue/UiEditorInsertTableGrid.vue +210 -0
  307. package/vue/UiEditorMentionMenu.d.ts +44 -0
  308. package/vue/UiEditorMentionMenu.js +2 -0
  309. package/vue/UiEditorMentionMenu.vue +284 -0
  310. package/vue/UiEditorSlashMenu.d.ts +41 -0
  311. package/vue/UiEditorSlashMenu.js +2 -0
  312. package/vue/UiEditorSlashMenu.vue +306 -0
  313. package/vue/UiEditorTableContextMenu.d.ts +19 -0
  314. package/vue/UiEditorTableContextMenu.js +2 -0
  315. package/vue/UiEditorTableContextMenu.vue +252 -0
  316. package/vue/UiEditorTableOverlay.d.ts +66 -0
  317. package/vue/UiEditorTableOverlay.js +2 -0
  318. package/vue/UiEditorTableOverlay.vue +455 -0
  319. package/vue/UiEditorTableToolbar.d.ts +21 -0
  320. package/vue/UiEditorTableToolbar.js +2 -0
  321. package/vue/UiEditorTableToolbar.vue +339 -0
  322. package/vue/UiEditorToolbar.d.ts +18 -0
  323. package/vue/UiEditorToolbar.js +2 -0
  324. package/vue/UiEditorToolbar.vue +138 -0
  325. package/vue/UiFloatingActionButton.d.ts +22 -0
  326. package/vue/UiFloatingActionButton.js +2 -0
  327. package/vue/UiFloatingActionButton.vue +116 -0
  328. package/vue/UiFormField.d.ts +28 -0
  329. package/vue/UiFormField.js +2 -0
  330. package/vue/UiFormField.vue +124 -0
  331. package/vue/UiGrid.d.ts +17 -0
  332. package/vue/UiGrid.js +2 -0
  333. package/vue/UiGrid.vue +72 -0
  334. package/vue/UiIcon.d.ts +8 -0
  335. package/vue/UiIcon.js +2 -0
  336. package/vue/UiIcon.vue +135 -0
  337. package/vue/UiIconButton.d.ts +27 -0
  338. package/vue/UiIconButton.js +2 -0
  339. package/vue/UiIconButton.vue +281 -0
  340. package/vue/UiInput.d.ts +20 -0
  341. package/vue/UiInput.js +2 -0
  342. package/vue/UiInput.vue +177 -0
  343. package/vue/UiMenu.d.ts +52 -0
  344. package/vue/UiMenu.js +2 -0
  345. package/vue/UiMenu.vue +194 -0
  346. package/vue/UiMenuItem.d.ts +20 -0
  347. package/vue/UiMenuItem.js +2 -0
  348. package/vue/UiMenuItem.vue +55 -0
  349. package/vue/UiPopover.d.ts +44 -0
  350. package/vue/UiPopover.js +2 -0
  351. package/vue/UiPopover.vue +188 -0
  352. package/vue/UiRadio.d.ts +38 -0
  353. package/vue/UiRadio.js +2 -0
  354. package/vue/UiRadio.vue +166 -0
  355. package/vue/UiRadioGroup.d.ts +50 -0
  356. package/vue/UiRadioGroup.js +2 -0
  357. package/vue/UiRadioGroup.vue +161 -0
  358. package/vue/UiReel.d.ts +18 -0
  359. package/vue/UiReel.js +2 -0
  360. package/vue/UiReel.vue +93 -0
  361. package/vue/UiSearchResultRow.d.ts +28 -0
  362. package/vue/UiSearchResultRow.js +2 -0
  363. package/vue/UiSearchResultRow.vue +124 -0
  364. package/vue/UiSearchShell.d.ts +42 -0
  365. package/vue/UiSearchShell.js +2 -0
  366. package/vue/UiSearchShell.vue +233 -0
  367. package/vue/UiSelect.d.ts +30 -0
  368. package/vue/UiSelect.js +2 -0
  369. package/vue/UiSelect.vue +183 -0
  370. package/vue/UiSeparator.d.ts +8 -0
  371. package/vue/UiSeparator.js +2 -0
  372. package/vue/UiSeparator.vue +38 -0
  373. package/vue/UiSidebar.d.ts +54 -0
  374. package/vue/UiSidebar.js +2 -0
  375. package/vue/UiSidebar.vue +288 -0
  376. package/vue/UiStack.d.ts +18 -0
  377. package/vue/UiStack.js +2 -0
  378. package/vue/UiStack.vue +85 -0
  379. package/vue/UiSwitch.d.ts +36 -0
  380. package/vue/UiSwitch.js +2 -0
  381. package/vue/UiSwitch.vue +203 -0
  382. package/vue/UiSwitcher.d.ts +18 -0
  383. package/vue/UiSwitcher.js +2 -0
  384. package/vue/UiSwitcher.vue +91 -0
  385. package/vue/UiTabs.d.ts +36 -0
  386. package/vue/UiTabs.js +2 -0
  387. package/vue/UiTabs.vue +269 -0
  388. package/vue/UiTextarea.d.ts +22 -0
  389. package/vue/UiTextarea.js +2 -0
  390. package/vue/UiTextarea.vue +177 -0
  391. package/vue/UiToastRegion.d.ts +48 -0
  392. package/vue/UiToastRegion.js +2 -0
  393. package/vue/UiToastRegion.vue +256 -0
  394. package/vue/UiTooltip.d.ts +50 -0
  395. package/vue/UiTooltip.js +2 -0
  396. package/vue/UiTooltip.vue +230 -0
  397. package/vue/UiTopBar.d.ts +19 -0
  398. package/vue/UiTopBar.js +2 -0
  399. package/vue/UiTopBar.vue +56 -0
  400. package/vue/UiTree.d.ts +62 -0
  401. package/vue/UiTree.js +2 -0
  402. package/vue/UiTree.vue +117 -0
  403. package/vue/UiTreeItem.d.ts +56 -0
  404. package/vue/UiTreeItem.js +2 -0
  405. package/vue/UiTreeItem.vue +418 -0
  406. package/vue/chunks/UiAffordanceScope.js +112 -0
  407. package/vue/chunks/UiAvatar.js +144 -0
  408. package/vue/chunks/UiAvatarGroup.js +142 -0
  409. package/vue/chunks/UiBadge.js +33 -0
  410. package/vue/chunks/UiButton.js +47 -0
  411. package/vue/chunks/UiCallout.js +117 -0
  412. package/vue/chunks/UiCheckbox.js +167 -0
  413. package/vue/chunks/UiCluster.js +33 -0
  414. package/vue/chunks/UiCombobox.js +684 -0
  415. package/vue/chunks/UiContainer.js +33 -0
  416. package/vue/chunks/UiContextMenu.js +153 -0
  417. package/vue/chunks/UiDialog.js +162 -0
  418. package/vue/chunks/UiDisclosure.js +185 -0
  419. package/vue/chunks/UiEditable.js +223 -0
  420. package/vue/chunks/UiEditorInsertTableGrid.js +221 -0
  421. package/vue/chunks/UiEditorMentionMenu.js +245 -0
  422. package/vue/chunks/UiEditorSlashMenu.js +210 -0
  423. package/vue/chunks/UiEditorTableContextMenu.js +201 -0
  424. package/vue/chunks/UiEditorTableOverlay.js +301 -0
  425. package/vue/chunks/UiEditorTableToolbar.js +299 -0
  426. package/vue/chunks/UiEditorToolbar.js +37 -0
  427. package/vue/chunks/UiFloatingActionButton.js +56 -0
  428. package/vue/chunks/UiFormField.js +113 -0
  429. package/vue/chunks/UiGrid.js +33 -0
  430. package/vue/chunks/UiIcon.js +170 -0
  431. package/vue/chunks/UiIconButton.js +141 -0
  432. package/vue/chunks/UiInput.js +136 -0
  433. package/vue/chunks/UiMenu.js +163 -0
  434. package/vue/chunks/UiMenuItem.js +37 -0
  435. package/vue/chunks/UiPopover.js +149 -0
  436. package/vue/chunks/UiRadio.js +164 -0
  437. package/vue/chunks/UiRadioGroup.js +160 -0
  438. package/vue/chunks/UiReel.js +42 -0
  439. package/vue/chunks/UiSearchResultRow.js +63 -0
  440. package/vue/chunks/UiSearchShell.js +152 -0
  441. package/vue/chunks/UiSelect.js +134 -0
  442. package/vue/chunks/UiSeparator.js +24 -0
  443. package/vue/chunks/UiSidebar.js +180 -0
  444. package/vue/chunks/UiStack.js +38 -0
  445. package/vue/chunks/UiSwitch.js +162 -0
  446. package/vue/chunks/UiSwitcher.js +38 -0
  447. package/vue/chunks/UiTabs.js +210 -0
  448. package/vue/chunks/UiTextarea.js +139 -0
  449. package/vue/chunks/UiToastRegion.js +227 -0
  450. package/vue/chunks/UiTooltip.js +163 -0
  451. package/vue/chunks/UiTopBar.js +25 -0
  452. package/vue/chunks/UiTree.js +140 -0
  453. package/vue/chunks/UiTreeItem.js +315 -0
  454. package/vue/chunks/_plugin-vue_export-helper.js +8 -0
  455. package/vue/components.css +4442 -0
  456. package/vue/editor/LoomaEditor.d.ts +171 -0
  457. package/vue/editor/image-delivery.d.ts +61 -0
  458. package/vue/editor/index.d.ts +4 -386
  459. package/vue/editor/index.js +995 -1134
  460. package/vue/editor/primitives.d.ts +23 -0
  461. package/vue/index.d.ts +49 -604
  462. package/vue/index.js +50 -86
  463. package/dist/chunk-MLKGABMK.js +0 -9
  464. package/dist/chunk-RWLYVQY6.js +0 -5719
  465. package/dist/chunk-XDNZIKNI.js +0 -2721
  466. package/dist/declarative-generated.cjs +0 -149
  467. package/dist/declarative-generated.d.cts +0 -16
  468. package/dist/declarative-generated.d.ts +0 -16
  469. package/dist/declarative-generated.js +0 -124
  470. package/dist/declarative.cjs +0 -2750
  471. package/dist/declarative.d.cts +0 -101
  472. package/dist/declarative.d.ts +0 -101
  473. package/dist/declarative.js +0 -15
  474. package/dist/index.cjs +0 -9077
  475. package/dist/index.d.cts +0 -414
  476. package/dist/loader.cjs +0 -8442
  477. package/dist/loader.d.cts +0 -4
  478. package/dist/loader.d.ts +0 -4
  479. package/dist/loader.js +0 -16
  480. package/editor/chunk-EUIH3TBV.js +0 -6826
  481. package/editor/chunk-JK53ENSG.js +0 -29
  482. package/editor/chunk-U36XNFJN.js +0 -2592
  483. package/editor/table-overlay-DZFGHQDt.d.ts +0 -138
  484. package/editor.css +0 -1592
  485. package/layout/index.cjs +0 -356
  486. package/layout/index.d.cts +0 -18
  487. package/layout/index.d.ts +0 -18
  488. package/layout/index.js +0 -341
  489. package/layout.css +0 -191
  490. package/styles.css +0 -940
  491. package/vue/chunk-OX3EACZ7.js +0 -4369
@@ -1,64 +1,3 @@
1
- import {
2
- DEFAULT_MENTION_RESULT_LIMIT,
3
- LOOMA_CALLOUT_TONES,
4
- LoomaCallout,
5
- LoomaMentionSuggestionPluginKey,
6
- LoomaSlashCommand,
7
- LoomaSmartPaste,
8
- LoomaTable,
9
- LoomaTableCell,
10
- LoomaTableHeader,
11
- LoomaTableKit,
12
- MAX_MENTION_RESULT_LIMIT,
13
- createLoomaMentionExtension,
14
- createLoomaSlashCommandExtension,
15
- filterLoomaMentionItems,
16
- getActiveTableCellAlignment,
17
- getActiveTableCellBackground,
18
- getActiveTableUiState,
19
- getDefaultEditorExtensions,
20
- getDefaultSlashCommands,
21
- getLoomaTableExtensions,
22
- handleTableAction,
23
- handleTableOverlayAction,
24
- insertTableAtRange,
25
- normalizeActiveTableColumnWidths,
26
- normalizeMentionResultLimit,
27
- setActiveTableCellAlignment,
28
- setActiveTableCellBackground,
29
- shouldShowTextFormattingToolbar
30
- } from "../chunk-EUIH3TBV.js";
31
- import {
32
- TABLE_CELL_BACKGROUND_PRESETS
33
- } from "../chunk-JK53ENSG.js";
34
- export {
35
- DEFAULT_MENTION_RESULT_LIMIT,
36
- LOOMA_CALLOUT_TONES,
37
- LoomaCallout,
38
- LoomaMentionSuggestionPluginKey,
39
- LoomaSlashCommand,
40
- LoomaSmartPaste,
41
- LoomaTable,
42
- LoomaTableCell,
43
- LoomaTableHeader,
44
- LoomaTableKit,
45
- MAX_MENTION_RESULT_LIMIT,
46
- TABLE_CELL_BACKGROUND_PRESETS,
47
- createLoomaMentionExtension,
48
- createLoomaSlashCommandExtension,
49
- filterLoomaMentionItems,
50
- getActiveTableCellAlignment,
51
- getActiveTableCellBackground,
52
- getActiveTableUiState,
53
- getDefaultEditorExtensions,
54
- getDefaultSlashCommands,
55
- getLoomaTableExtensions,
56
- handleTableAction,
57
- handleTableOverlayAction,
58
- insertTableAtRange,
59
- normalizeActiveTableColumnWidths,
60
- normalizeMentionResultLimit,
61
- setActiveTableCellAlignment,
62
- setActiveTableCellBackground,
63
- shouldShowTextFormattingToolbar
64
- };
1
+ import { n as TABLE_CELL_BACKGROUND_PRESETS } from "../chunks/table-backgrounds.js";
2
+ import { C as DEFAULT_MENTION_RESULT_LIMIT, D as LOOMA_CALLOUT_TONES, E as normalizeMentionResultLimit, O as LoomaCallout, S as createLoomaMentionExtension, T as filterLoomaMentionItems, _ as getActiveTableCellBackground, a as handleTableAction, b as LoomaSmartPaste, c as normalizeActiveTableColumnWidths, d as getDefaultEditorExtensions, f as getLoomaTableExtensions, g as getActiveTableCellAlignment, h as LoomaTableHeader, i as getActiveTableUiState, l as shouldShowTextFormattingToolbar, m as LoomaTableCell, n as createLoomaSlashCommandExtension, o as handleTableOverlayAction, p as LoomaTable, r as getDefaultSlashCommands, s as insertTableAtRange, t as LoomaSlashCommand, u as LoomaTableKit, v as setActiveTableCellAlignment, w as MAX_MENTION_RESULT_LIMIT, x as LoomaMentionSuggestionPluginKey, y as setActiveTableCellBackground } from "../chunks/extensions.js";
3
+ export { DEFAULT_MENTION_RESULT_LIMIT, LOOMA_CALLOUT_TONES, LoomaCallout, LoomaMentionSuggestionPluginKey, LoomaSlashCommand, LoomaSmartPaste, LoomaTable, LoomaTableCell, LoomaTableHeader, LoomaTableKit, MAX_MENTION_RESULT_LIMIT, TABLE_CELL_BACKGROUND_PRESETS, createLoomaMentionExtension, createLoomaSlashCommandExtension, filterLoomaMentionItems, getActiveTableCellAlignment, getActiveTableCellBackground, getActiveTableUiState, getDefaultEditorExtensions, getDefaultSlashCommands, getLoomaTableExtensions, handleTableAction, handleTableOverlayAction, insertTableAtRange, normalizeActiveTableColumnWidths, normalizeMentionResultLimit, setActiveTableCellAlignment, setActiveTableCellBackground, shouldShowTextFormattingToolbar };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Looma list behavior extension:
3
+ * - Enter in list/task items keeps the user in the list
4
+ * - Backspace at start of an empty list/task item exits the list
5
+ */
6
+ import { Extension } from "@tiptap/core";
7
+ export declare const LoomaListBehavior: Extension<any, any>;
@@ -0,0 +1,35 @@
1
+ import type { AnyExtension } from "@tiptap/core";
2
+ import { PluginKey } from "@tiptap/pm/state";
3
+ import { type LoomaMentionOptions } from "../mention-contract.js";
4
+ export * from "../mention-contract.js";
5
+ interface MentionPluginState {
6
+ active?: boolean;
7
+ query?: string | null;
8
+ range?: {
9
+ from: number;
10
+ to: number;
11
+ };
12
+ }
13
+ /**
14
+ * Stable key for reading Looma's active mention query and source range.
15
+ * Consumers should treat the keyed value as transient suggestion state rather
16
+ * than document data.
17
+ */
18
+ export declare const LoomaMentionSuggestionPluginKey: PluginKey<MentionPluginState>;
19
+ /**
20
+ * Creates a domain-neutral Tiptap mention node and suggestion lifecycle.
21
+ *
22
+ * Applications provide either a small static list or a bounded async directory
23
+ * provider. Looma owns keyboard selection plus the temporary combobox ARIA
24
+ * attributes on the editor. Every attribute is snapshotted and restored so
25
+ * installing this extension cannot erase accessibility state owned by another
26
+ * extension or by the host application.
27
+ *
28
+ * @ownership The application owns the item provider and rendered menu. The
29
+ * extension owns suggestion state and only borrows editor ARIA attributes.
30
+ * @lifecycle Each suggestion update replaces the published snapshot; exit
31
+ * restores borrowed attributes and invalidates callbacks from the prior range.
32
+ * @failure Provider rejection degrades to an empty result set so Tiptap's
33
+ * suggestion lifecycle cannot become an unhandled promise rejection.
34
+ */
35
+ export declare function createLoomaMentionExtension(options?: LoomaMentionOptions): AnyExtension;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Default Tiptap extension preset for Looma editor.
3
+ * Uses the Vanilla JS Tiptap API; apps provide @tiptap/core and Looma ships the preset extensions.
4
+ */
5
+ import { type AnyExtension } from "@tiptap/core";
6
+ /**
7
+ * Deliberate policy knobs in Looma's default extension set.
8
+ * Consumers needing different schemas should compose an explicit Tiptap list
9
+ * rather than relying on undocumented mutation of the returned extensions.
10
+ */
11
+ export interface DefaultEditorExtensionsOptions {
12
+ /** Placeholder shown only for empty paragraphs, not every empty node type. */
13
+ placeholder?: string;
14
+ /** Passed to Tiptap Link; defaults false to keep editing clicks in the editor. */
15
+ linkOpenOnClick?: boolean;
16
+ /** Passed to Tiptap Image; block images are the default document policy. */
17
+ imageInline?: boolean;
18
+ /** Custom mention extension, the Looma default, or false to omit mentions. */
19
+ mention?: AnyExtension | false;
20
+ }
21
+ /**
22
+ * Complete Looma table schema as one Tiptap extension.
23
+ * Use this in presets that want table, row, header, and cell nodes to remain an
24
+ * atomic policy choice; use `getLoomaTableExtensions` only when ordering or
25
+ * per-extension composition must be explicit.
26
+ *
27
+ * @invariant Installs exactly one compatible table, row, header, and cell node
28
+ * set so a preset cannot accidentally split Looma's persisted table schema.
29
+ */
30
+ export declare const LoomaTableKit: AnyExtension;
31
+ /** Returns a fresh ordered list of the same schema extensions as `LoomaTableKit`. */
32
+ export declare function getLoomaTableExtensions(): AnyExtension[];
33
+ /**
34
+ * Builds Looma's complete, ordered Tiptap extension policy.
35
+ *
36
+ * A fresh array is returned for each editor. Document nodes precede marks and
37
+ * behavior extensions; Looma's table/list policies are installed once; mention
38
+ * can be replaced without coupling UI chrome to an application directory.
39
+ * Use with `new Editor({ extensions: getDefaultEditorExtensions(), ... })` or a
40
+ * framework's Tiptap editor hook.
41
+ */
42
+ export declare function getDefaultEditorExtensions(options?: DefaultEditorExtensionsOptions): AnyExtension[];
@@ -0,0 +1,80 @@
1
+ import { Extension, type Editor, type Range } from "@tiptap/core";
2
+ import type { LoomaIconName } from "../icons.js";
3
+ /** Editor state a slash command may replace and then act upon. */
4
+ export interface LoomaSlashCommandContext {
5
+ editor: Editor;
6
+ range: Range;
7
+ }
8
+ /**
9
+ * One application-extensible command.
10
+ *
11
+ * Commands own their editor mutation, including removal of `context.range`.
12
+ * Keeping that policy in the command lets custom items behave exactly like
13
+ * built-ins without coupling the headless suggestion lifecycle to Tiptap nodes.
14
+ */
15
+ export interface LoomaSlashCommand {
16
+ title: string;
17
+ description: string;
18
+ icon: LoomaIconName;
19
+ keywords: string[];
20
+ command: (context: LoomaSlashCommandContext) => void;
21
+ }
22
+ /**
23
+ * Ephemeral render model published to any slash-menu UI.
24
+ * Replace snapshots rather than merging them: the `select` callback closes over
25
+ * a particular Tiptap range and becomes invalid when the suggestion updates.
26
+ *
27
+ * @lifecycle `select` is valid only until the next snapshot or suggestion exit;
28
+ * retaining it can apply a command to a stale source range.
29
+ */
30
+ export interface LoomaSlashMenuSnapshot {
31
+ active: boolean;
32
+ items: LoomaSlashCommand[];
33
+ selectedIndex: number;
34
+ query: string;
35
+ rect: DOMRect | null;
36
+ select: ((index: number) => void) | null;
37
+ }
38
+ /**
39
+ * Application-owned command inventory and integration callbacks.
40
+ * Replacing `commands` changes search and execution together; the extension
41
+ * never merges domain commands into defaults implicitly. Asset selection stays
42
+ * callback-driven because uploads and persistence are outside editor ownership.
43
+ *
44
+ * @ownership The application owns command objects and callback side effects;
45
+ * the extension only searches the inventory and publishes replacement snapshots.
46
+ */
47
+ export interface LoomaSlashCommandOptions {
48
+ commands: LoomaSlashCommand[];
49
+ onStateChange?: (state: LoomaSlashMenuSnapshot) => void;
50
+ onOpenImagePicker?: () => void;
51
+ }
52
+ /**
53
+ * Builds Looma's default command policy as fresh objects for one editor.
54
+ * The image command delegates asset selection because Looma does not own upload,
55
+ * persistence, or media-library concerns.
56
+ *
57
+ * @ownership Returned command objects belong to the caller and are recreated
58
+ * per call so one editor cannot mutate another editor's command inventory.
59
+ */
60
+ export declare function getDefaultSlashCommands(onOpenImagePicker?: () => void): LoomaSlashCommand[];
61
+ /**
62
+ * Framework-neutral slash-command extension used by the turnkey editor.
63
+ * Consumers embedding Looma into their own Tiptap instance can configure the
64
+ * same behavior and render any menu they choose from `onStateChange`.
65
+ *
66
+ * @ownership The extension owns query and keyboard-selection state; the caller
67
+ * owns the command inventory and every menu snapshot after publication.
68
+ * @lifecycle Snapshot callbacks are valid only for the suggestion range that
69
+ * produced them and are replaced on every update or exit.
70
+ */
71
+ export declare const LoomaSlashCommand: Extension<LoomaSlashCommandOptions, any>;
72
+ /**
73
+ * Creates an independently configured extension instance.
74
+ * Prefer this factory when callbacks or commands are editor-specific; the
75
+ * exported base extension remains a convenient zero-configuration preset.
76
+ *
77
+ * @ownership The caller owns supplied commands and callbacks. The returned
78
+ * extension captures them for one configuration without mutating the inventory.
79
+ */
80
+ export declare function createLoomaSlashCommandExtension(options?: Partial<LoomaSlashCommandOptions>): Extension<LoomaSlashCommandOptions, any>;
@@ -0,0 +1,13 @@
1
+ import { Extension } from "@tiptap/core";
2
+ /**
3
+ * Interprets document markup copied from source-oriented tools before Tiptap's
4
+ * generic VS Code handler can turn it into a literal code block.
5
+ *
6
+ * Source-editor metadata remains authoritative for non-document languages.
7
+ * Explicit code-block context is never reinterpreted.
8
+ *
9
+ * @contract Recognized document markup is sanitized and dispatched as one paste
10
+ * transaction; every unrecognized or code-oriented payload returns control to
11
+ * Tiptap's remaining paste handlers without changing the document.
12
+ */
13
+ export declare const LoomaSmartPaste: Extension<any, any>;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Table overlay action handler — maps boundaryIndex to Tiptap table commands.
3
+ * Use with the table overlay's `action` event: call this from the adapter's handler.
4
+ */
5
+ import type { Editor, Range } from "@tiptap/core";
6
+ import type { TableContextMenuActionEventDetail } from "../table-context-menu.js";
7
+ import type { TableOverlayActionEventDetail } from "../table-overlay.js";
8
+ import { type TableCellAlignment, type TableCellBackground } from "./table-formatting.js";
9
+ /**
10
+ * Bounded initial shape for table insertion.
11
+ * Rows and columns are clamped to 1–10 by `insertTableAtRange` so slash-command
12
+ * or custom UI input cannot create an accidentally unbounded transaction.
13
+ */
14
+ export interface InsertTableAtRangeOptions {
15
+ rows?: number;
16
+ cols?: number;
17
+ withHeaderRow?: boolean;
18
+ }
19
+ /**
20
+ * Command availability calculated from the current ProseMirror selection.
21
+ * Keeping capabilities beside UI state prevents toolbars from duplicating
22
+ * Tiptap's schema/selection rules or optimistically enabling invalid actions.
23
+ */
24
+ export interface TableActionCapabilities {
25
+ canAddRowBefore: boolean;
26
+ canAddRowAfter: boolean;
27
+ canAddColumnBefore: boolean;
28
+ canAddColumnAfter: boolean;
29
+ canDeleteRow: boolean;
30
+ canDeleteColumn: boolean;
31
+ canDeleteTable: boolean;
32
+ canMergeCells: boolean;
33
+ canSplitCell: boolean;
34
+ }
35
+ /**
36
+ * One replaceable snapshot for editor-owned table chrome.
37
+ * Consumers should discard prior capabilities whenever `active` becomes false;
38
+ * they describe the current ProseMirror transaction state, not table schema in
39
+ * general.
40
+ */
41
+ export interface ActiveTableUiState {
42
+ active: boolean;
43
+ showToolbar: boolean;
44
+ cellAlignment: TableCellAlignment;
45
+ cellBackground: TableCellBackground;
46
+ capabilities: TableActionCapabilities;
47
+ }
48
+ /**
49
+ * Text formatting belongs to actual text selections, not table CellSelections.
50
+ *
51
+ * @contract Returns true only for an editable editor with a non-collapsed
52
+ * `TextSelection`; node and cell selections never activate formatting chrome.
53
+ */
54
+ export declare function shouldShowTextFormattingToolbar(editor: Editor, from?: number, to?: number): boolean;
55
+ /**
56
+ * Returns the complete interaction state for the table containing the selection.
57
+ * Inactive defaults are concrete so UI can replace its previous snapshot and
58
+ * cannot accidentally retain enabled controls from a table that lost selection.
59
+ *
60
+ * @contract Capabilities are recalculated from `editor.can()` at call time; an
61
+ * inactive snapshot disables every action and resets authored cell formatting.
62
+ */
63
+ export declare function getActiveTableUiState(editor: Editor): ActiveTableUiState;
64
+ /**
65
+ * Executes a toolbar/context-menu action using Looma's table behavior policy.
66
+ * The boolean is Tiptap's command result, so callers can distinguish a handled
67
+ * action from one rejected by the current schema or selection.
68
+ *
69
+ * @contract The event action becomes one focused Tiptap transaction; UI callers
70
+ * never need to reproduce selection repair or cell-format policy.
71
+ * @failure Returns false when the current selection cannot support the action.
72
+ */
73
+ export declare function handleTableAction(editor: Editor, detail: TableContextMenuActionEventDetail): boolean;
74
+ /**
75
+ * Deletes a slash-command range (or other inline trigger text) and inserts a table.
76
+ * Use this when apps want a stable default `/table` behavior without owning
77
+ * table policy. Deletion and insertion share one focused command chain, so the
78
+ * trigger text cannot remain behind if insertion succeeds.
79
+ *
80
+ * @contract Rows and columns are clamped to 1–10, then range deletion and table
81
+ * insertion succeed or fail together through a single Tiptap command chain.
82
+ */
83
+ export declare function insertTableAtRange(editor: Editor, range: Range, options?: InsertTableAtRangeOptions): boolean;
84
+ /**
85
+ * Reconciles rendered column widths back into table-cell `colwidth` attributes.
86
+ *
87
+ * Browser layout is the source of truth at the end of a pointer resize, but
88
+ * ProseMirror must persist integer widths in the document. The algorithm keeps
89
+ * proportions, enforces a minimum, and distributes rounding error so the final
90
+ * sum still equals the rendered table width. Spanning cells are updated once at
91
+ * their top-left map coordinate rather than once per covered grid position.
92
+ *
93
+ * @invariant Every persisted width is an integer at least `minWidth`, and each
94
+ * spanning cell receives one width per logical column from its top-left origin.
95
+ * @failure Returns false without an active table or measurable columns and does
96
+ * not dispatch when persisted widths already match the rendered geometry.
97
+ */
98
+ export declare function normalizeActiveTableColumnWidths(editor: Editor, tableElement: HTMLTableElement, minWidth?: number): boolean;
99
+ /**
100
+ * Handles a geometry-derived table-overlay intent without exposing ProseMirror
101
+ * positions to UI components.
102
+ *
103
+ * Boundary indices address the visual grid edges measured by the overlay. The
104
+ * helper maps them into the current table transaction, rejects indices that do
105
+ * not represent a legal insertion edge, dispatches once, and restores editor
106
+ * focus. `open-cell-menu` returns handled without editing because menu ownership
107
+ * remains with the application/adapter.
108
+ *
109
+ * @contract A valid structural intent dispatches at most one transaction;
110
+ * `open-cell-menu` acknowledges UI ownership without mutating the document.
111
+ * @failure Missing tables, malformed payloads, and out-of-range boundaries
112
+ * return false before dispatching a transaction.
113
+ */
114
+ export declare function handleTableOverlayAction(editor: Editor, detail: TableOverlayActionEventDetail): boolean;
@@ -0,0 +1,60 @@
1
+ import type { AnyExtension, Editor } from "@tiptap/core";
2
+ export { TABLE_CELL_BACKGROUND_PRESETS } from "../table-backgrounds.js";
3
+ /** Persistable horizontal alignments accepted by Looma table cells. */
4
+ export type TableCellAlignment = "left" | "center" | "right";
5
+ /** CSS color stored in document attrs; null removes authored cell background. */
6
+ export type TableCellBackground = string | null;
7
+ /**
8
+ * Looma's table behavior policy: resizable columns, stable minimum cell width,
9
+ * and no independently resizable trailing column. The narrow handle is also a
10
+ * Tiptap coordinate probe, so changing it affects selection as well as visuals.
11
+ *
12
+ * @invariant The 3px handle, 112px cell minimum, and fixed trailing edge are a
13
+ * coordinated selection-and-resize policy and must be changed together.
14
+ */
15
+ export declare const LoomaTable: AnyExtension;
16
+ /**
17
+ * Header node that round-trips Looma alignment and background attributes.
18
+ *
19
+ * @contract Inherits the base header schema while normalizing authored styles
20
+ * into the same persisted attributes used by body cells.
21
+ */
22
+ export declare const LoomaTableHeader: AnyExtension;
23
+ /**
24
+ * Body-cell node with the same persisted formatting contract as headers.
25
+ *
26
+ * @contract Inherits the base cell schema and shares header parsing/rendering so
27
+ * moving content between header and body cells does not change formatting data.
28
+ */
29
+ export declare const LoomaTableCell: AnyExtension;
30
+ /**
31
+ * Reads formatting from the nearest cell/header ancestor of the selection.
32
+ * Left is the canonical default and is not serialized as an inline style.
33
+ *
34
+ * @contract Returns `left` outside a table cell and for missing, invalid, or
35
+ * explicitly default alignment attributes.
36
+ */
37
+ export declare function getActiveTableCellAlignment(editor: Editor): TableCellAlignment;
38
+ /**
39
+ * Returns the nearest cell/header background, normalized so blank means absent.
40
+ *
41
+ * @contract Returns null outside a table cell and for non-string or whitespace-
42
+ * only attributes, matching the value used to clear persisted background CSS.
43
+ */
44
+ export declare function getActiveTableCellBackground(editor: Editor): TableCellBackground;
45
+ /**
46
+ * Updates the active header or body cell and returns false outside a table cell.
47
+ * Setting left stores null, keeping the document free of redundant default CSS.
48
+ *
49
+ * @contract Focuses and updates only the active header or body cell; unsupported
50
+ * selections return false without creating a transaction.
51
+ */
52
+ export declare function setActiveTableCellAlignment(editor: Editor, alignment: TableCellAlignment): boolean;
53
+ /**
54
+ * Updates the active header or body cell; blank strings normalize to null so
55
+ * clearing formatting removes persisted inline style instead of storing noise.
56
+ *
57
+ * @contract Focuses and updates only the active header or body cell; unsupported
58
+ * selections return false and blank values remove the persisted attribute.
59
+ */
60
+ export declare function setActiveTableCellBackground(editor: Editor, backgroundColor: TableCellBackground): boolean;
@@ -0,0 +1,55 @@
1
+ import { type IconNode } from 'lucide';
2
+ /** The opinionated Lucide set used by Looma's shipped interaction surfaces. */
3
+ export declare const LOOMA_ICONS: {
4
+ 'align-center': IconNode;
5
+ 'align-left': IconNode;
6
+ 'align-right': IconNode;
7
+ bold: IconNode;
8
+ braces: IconNode;
9
+ 'circle-check': IconNode;
10
+ 'circle-x': IconNode;
11
+ 'chevron-down': IconNode;
12
+ 'chevron-left': IconNode;
13
+ 'code-xml': IconNode;
14
+ columns: IconNode;
15
+ ellipsis: IconNode;
16
+ eraser: IconNode;
17
+ 'grip-horizontal': IconNode;
18
+ 'grip-vertical': IconNode;
19
+ 'heading-1': IconNode;
20
+ 'heading-2': IconNode;
21
+ 'heading-3': IconNode;
22
+ highlighter: IconNode;
23
+ image: IconNode;
24
+ info: IconNode;
25
+ italic: IconNode;
26
+ list: IconNode;
27
+ 'list-ordered': IconNode;
28
+ 'list-todo': IconNode;
29
+ merge: IconNode;
30
+ 'notebook-pen': IconNode;
31
+ minus: IconNode;
32
+ 'paint-bucket': IconNode;
33
+ 'panel-bottom': IconNode;
34
+ 'panel-left': IconNode;
35
+ 'panel-right': IconNode;
36
+ 'panel-top': IconNode;
37
+ pilcrow: IconNode;
38
+ plus: IconNode;
39
+ quote: IconNode;
40
+ redo: IconNode;
41
+ rows: IconNode;
42
+ split: IconNode;
43
+ strikethrough: IconNode;
44
+ table: IconNode;
45
+ trash: IconNode;
46
+ 'triangle-alert': IconNode;
47
+ underline: IconNode;
48
+ undo: IconNode;
49
+ };
50
+ /** Stable key selecting an icon from Looma's shipped interaction vocabulary. */
51
+ export type LoomaIconName = keyof typeof LOOMA_ICONS;
52
+ /** Framework-neutral Lucide element tree used to produce Looma icon markup. */
53
+ export type LoomaIconNode = IconNode;
54
+ /** Creates consistent, currentColor-driven SVG markup for framework-neutral components. */
55
+ export declare function loomaIconMarkup(name: LoomaIconName, className?: string): string;
package/editor/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export { A as ActiveCellRect, T as TABLE_CELL_BACKGROUND_OPTIONS, a as TABLE_CELL_BACKGROUND_PRESETS, b as TableCellBackgroundAction, c as TableContextMenuAction, d as TableContextMenuActionEventDetail, e as TableInsertionAction, f as TableOverlayAction, g as TableOverlayActionEventDetail, h as TableOverlayGeometry, d as TableToolbarActionEventDetail, m as measureTableOverlayGeometry, r as resolveTableCellAt } from './table-overlay-DZFGHQDt.js';
2
- export { InsertTableEventDetail, MentionMenuHighlightEventDetail, MentionMenuSelectEventDetail, SlashMenuAnchorRect, SlashMenuHighlightEventDetail, SlashMenuItem, SlashMenuSelectEventDetail } from './ui.js';
3
- export { ActiveTableUiState, DEFAULT_MENTION_RESULT_LIMIT, DefaultEditorExtensionsOptions, InsertTableAtRangeOptions, LOOMA_CALLOUT_TONES, LoomaCallout, LoomaCalloutTone, LoomaMentionItem, LoomaMentionMenuSnapshot, LoomaMentionOptions, LoomaMentionProvider, LoomaMentionProviderContext, LoomaMentionSuggestionPluginKey, LoomaSlashCommand, LoomaSlashCommandContext, LoomaSlashCommand as LoomaSlashCommandItem, LoomaSlashCommandOptions, LoomaSlashMenuSnapshot, LoomaSmartPaste, LoomaTable, LoomaTableCell, LoomaTableHeader, LoomaTableKit, MAX_MENTION_RESULT_LIMIT, TableActionCapabilities, TableCellAlignment, TableCellBackground, createLoomaMentionExtension, createLoomaSlashCommandExtension, filterLoomaMentionItems, getActiveTableCellAlignment, getActiveTableCellBackground, getActiveTableUiState, getDefaultEditorExtensions, getDefaultSlashCommands, getLoomaTableExtensions, handleTableAction, handleTableOverlayAction, insertTableAtRange, normalizeActiveTableColumnWidths, normalizeMentionResultLimit, setActiveTableCellAlignment, setActiveTableCellBackground, shouldShowTextFormattingToolbar } from './extensions/index.js';
4
- import '@threadlabs/looma/core';
5
- import '@tiptap/core';
6
- import '@tiptap/pm/state';
1
+ /**
2
+ * The Looma editor: the editor components' contracts and the Tiptap extensions and commands
3
+ * (also available alone from `./extensions`).
4
+ */
5
+ export * from "./ui.js";
6
+ export * from "./extensions/index.js";
7
+ export { LOOMA_ICONS, loomaIconMarkup, type LoomaIconName, type LoomaIconNode } from "./icons.js";
8
+ export { getVisualViewportRect, type ViewportRect } from "./viewport.js";