@abraca/nuxt 1.9.1 → 2.0.0

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 (434) hide show
  1. package/dist/module.d.mts +4 -3
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +9 -1
  4. package/dist/runtime/components/ADocumentTree.vue +1 -1
  5. package/dist/runtime/components/AEditor.d.vue.ts +26 -1
  6. package/dist/runtime/components/AEditor.vue +153 -4
  7. package/dist/runtime/components/AEditor.vue.d.ts +26 -1
  8. package/dist/runtime/components/AIdentityModal.d.vue.ts +46 -0
  9. package/dist/runtime/components/AIdentityModal.vue +157 -0
  10. package/dist/runtime/components/AIdentityModal.vue.d.ts +46 -0
  11. package/dist/runtime/components/AMnemonicLoginModal.d.vue.ts +35 -0
  12. package/dist/runtime/components/AMnemonicLoginModal.vue +173 -0
  13. package/dist/runtime/components/AMnemonicLoginModal.vue.d.ts +35 -0
  14. package/dist/runtime/components/ANodePanel.d.vue.ts +29 -2
  15. package/dist/runtime/components/ANodePanel.vue +148 -27
  16. package/dist/runtime/components/ANodePanel.vue.d.ts +29 -2
  17. package/dist/runtime/components/ANodePanelHeader.d.vue.ts +64 -0
  18. package/dist/runtime/components/ANodePanelHeader.vue +105 -0
  19. package/dist/runtime/components/ANodePanelHeader.vue.d.ts +64 -0
  20. package/dist/runtime/components/ANodeSettingsPanel.d.vue.ts +49 -0
  21. package/dist/runtime/components/ANodeSettingsPanel.vue +59 -0
  22. package/dist/runtime/components/ANodeSettingsPanel.vue.d.ts +49 -0
  23. package/dist/runtime/components/ANotificationBell.d.vue.ts +26 -0
  24. package/dist/runtime/components/ANotificationBell.vue +55 -0
  25. package/dist/runtime/components/ANotificationBell.vue.d.ts +26 -0
  26. package/dist/runtime/components/AOfflineSync.d.vue.ts +11 -0
  27. package/dist/runtime/components/AOfflineSync.vue +217 -0
  28. package/dist/runtime/components/AOfflineSync.vue.d.ts +11 -0
  29. package/dist/runtime/components/ARecoveryPhraseDisplay.d.vue.ts +26 -0
  30. package/dist/runtime/components/ARecoveryPhraseDisplay.vue +94 -0
  31. package/dist/runtime/components/ARecoveryPhraseDisplay.vue.d.ts +26 -0
  32. package/dist/runtime/components/AServerInfoModal.d.vue.ts +43 -0
  33. package/dist/runtime/components/AServerInfoModal.vue +150 -0
  34. package/dist/runtime/components/AServerInfoModal.vue.d.ts +43 -0
  35. package/dist/runtime/components/ASpaceFormModal.vue +1 -1
  36. package/dist/runtime/components/aware/AAccordion.d.vue.ts +25 -0
  37. package/dist/runtime/components/aware/AAccordion.vue +107 -0
  38. package/dist/runtime/components/aware/AAccordion.vue.d.ts +25 -0
  39. package/dist/runtime/components/aware/AArea.vue +24 -11
  40. package/dist/runtime/components/aware/AAvatar.d.vue.ts +6 -0
  41. package/dist/runtime/components/aware/AAvatar.vue +33 -3
  42. package/dist/runtime/components/aware/AAvatar.vue.d.ts +6 -0
  43. package/dist/runtime/components/aware/AAvatarGroup.d.vue.ts +10 -0
  44. package/dist/runtime/components/aware/AAvatarGroup.vue +30 -0
  45. package/dist/runtime/components/aware/AAvatarGroup.vue.d.ts +10 -0
  46. package/dist/runtime/components/aware/AButton.d.vue.ts +4 -2
  47. package/dist/runtime/components/aware/AButton.vue +46 -14
  48. package/dist/runtime/components/aware/AButton.vue.d.ts +4 -2
  49. package/dist/runtime/components/aware/ACalendar.d.vue.ts +17 -0
  50. package/dist/runtime/components/aware/ACalendar.vue +145 -0
  51. package/dist/runtime/components/aware/ACalendar.vue.d.ts +17 -0
  52. package/dist/runtime/components/aware/ACarousel.d.vue.ts +25 -0
  53. package/dist/runtime/components/aware/ACarousel.vue +39 -0
  54. package/dist/runtime/components/aware/ACarousel.vue.d.ts +25 -0
  55. package/dist/runtime/components/aware/ACheckbox.d.vue.ts +11 -0
  56. package/dist/runtime/components/aware/ACheckbox.vue +74 -0
  57. package/dist/runtime/components/aware/ACheckbox.vue.d.ts +11 -0
  58. package/dist/runtime/components/aware/ACheckboxGroup.d.vue.ts +27 -0
  59. package/dist/runtime/components/aware/ACheckboxGroup.vue +79 -0
  60. package/dist/runtime/components/aware/ACheckboxGroup.vue.d.ts +27 -0
  61. package/dist/runtime/components/aware/ACollapsible.d.vue.ts +25 -0
  62. package/dist/runtime/components/aware/ACollapsible.vue +45 -0
  63. package/dist/runtime/components/aware/ACollapsible.vue.d.ts +25 -0
  64. package/dist/runtime/components/aware/AColorPicker.d.vue.ts +15 -0
  65. package/dist/runtime/components/aware/AColorPicker.vue +48 -0
  66. package/dist/runtime/components/aware/AColorPicker.vue.d.ts +15 -0
  67. package/dist/runtime/components/aware/ACommandPalette.d.vue.ts +33 -0
  68. package/dist/runtime/components/aware/ACommandPalette.vue +123 -0
  69. package/dist/runtime/components/aware/ACommandPalette.vue.d.ts +33 -0
  70. package/dist/runtime/components/aware/AContextMenu.d.vue.ts +25 -0
  71. package/dist/runtime/components/aware/AContextMenu.vue +63 -0
  72. package/dist/runtime/components/aware/AContextMenu.vue.d.ts +25 -0
  73. package/dist/runtime/components/aware/ADrawer.d.vue.ts +25 -0
  74. package/dist/runtime/components/aware/ADrawer.vue +57 -0
  75. package/dist/runtime/components/aware/ADrawer.vue.d.ts +25 -0
  76. package/dist/runtime/components/aware/ADropdownMenu.d.vue.ts +25 -0
  77. package/dist/runtime/components/aware/ADropdownMenu.vue +63 -0
  78. package/dist/runtime/components/aware/ADropdownMenu.vue.d.ts +25 -0
  79. package/dist/runtime/components/aware/AFileUpload.d.vue.ts +27 -0
  80. package/dist/runtime/components/aware/AFileUpload.vue +67 -0
  81. package/dist/runtime/components/aware/AFileUpload.vue.d.ts +27 -0
  82. package/dist/runtime/components/aware/AFollowBar.d.vue.ts +21 -0
  83. package/dist/runtime/components/aware/AFollowBar.vue +62 -0
  84. package/dist/runtime/components/aware/AFollowBar.vue.d.ts +21 -0
  85. package/dist/runtime/components/aware/AFollowScroll.d.vue.ts +7 -0
  86. package/dist/runtime/components/aware/AFollowScroll.vue +17 -0
  87. package/dist/runtime/components/aware/AFollowScroll.vue.d.ts +7 -0
  88. package/dist/runtime/components/aware/AFormSync.d.vue.ts +21 -0
  89. package/dist/runtime/components/aware/AFormSync.vue +52 -0
  90. package/dist/runtime/components/aware/AFormSync.vue.d.ts +21 -0
  91. package/dist/runtime/components/aware/AGlobalFocusLayer.d.vue.ts +3 -0
  92. package/dist/runtime/components/aware/AGlobalFocusLayer.vue +90 -0
  93. package/dist/runtime/components/aware/AGlobalFocusLayer.vue.d.ts +3 -0
  94. package/dist/runtime/components/aware/AHoverItem.d.vue.ts +27 -0
  95. package/dist/runtime/components/aware/AHoverItem.vue +124 -0
  96. package/dist/runtime/components/aware/AHoverItem.vue.d.ts +27 -0
  97. package/dist/runtime/components/aware/AInput.d.vue.ts +12 -2
  98. package/dist/runtime/components/aware/AInput.vue +72 -19
  99. package/dist/runtime/components/aware/AInput.vue.d.ts +12 -2
  100. package/dist/runtime/components/aware/AInputMenu.d.vue.ts +17 -0
  101. package/dist/runtime/components/aware/AInputMenu.vue +138 -0
  102. package/dist/runtime/components/aware/AInputMenu.vue.d.ts +17 -0
  103. package/dist/runtime/components/aware/AInputNumber.d.vue.ts +15 -0
  104. package/dist/runtime/components/aware/AInputNumber.vue +67 -0
  105. package/dist/runtime/components/aware/AInputNumber.vue.d.ts +15 -0
  106. package/dist/runtime/components/aware/AInputTags.d.vue.ts +15 -0
  107. package/dist/runtime/components/aware/AInputTags.vue +67 -0
  108. package/dist/runtime/components/aware/AInputTags.vue.d.ts +15 -0
  109. package/dist/runtime/components/aware/AKeyHint.d.vue.ts +3 -0
  110. package/dist/runtime/components/aware/AKeyHint.vue +23 -0
  111. package/dist/runtime/components/aware/AKeyHint.vue.d.ts +3 -0
  112. package/dist/runtime/components/aware/AMedia.d.vue.ts +19 -0
  113. package/dist/runtime/components/aware/AMedia.vue +85 -0
  114. package/dist/runtime/components/aware/AMedia.vue.d.ts +19 -0
  115. package/dist/runtime/components/aware/AModal.d.vue.ts +33 -0
  116. package/dist/runtime/components/aware/AModal.vue +110 -0
  117. package/dist/runtime/components/aware/AModal.vue.d.ts +33 -0
  118. package/dist/runtime/components/aware/ANavigationMenu.d.vue.ts +25 -0
  119. package/dist/runtime/components/aware/ANavigationMenu.vue +82 -0
  120. package/dist/runtime/components/aware/ANavigationMenu.vue.d.ts +25 -0
  121. package/dist/runtime/components/aware/APagination.d.vue.ts +13 -0
  122. package/dist/runtime/components/aware/APagination.vue +53 -0
  123. package/dist/runtime/components/aware/APagination.vue.d.ts +13 -0
  124. package/dist/runtime/components/aware/APeerCaretLayer.d.vue.ts +10 -0
  125. package/dist/runtime/components/aware/APeerCaretLayer.vue +133 -0
  126. package/dist/runtime/components/aware/APeerCaretLayer.vue.d.ts +10 -0
  127. package/dist/runtime/components/aware/APinInput.d.vue.ts +15 -0
  128. package/dist/runtime/components/aware/APinInput.vue +48 -0
  129. package/dist/runtime/components/aware/APinInput.vue.d.ts +15 -0
  130. package/dist/runtime/components/aware/APopover.d.vue.ts +25 -0
  131. package/dist/runtime/components/aware/APopover.vue +57 -0
  132. package/dist/runtime/components/aware/APopover.vue.d.ts +25 -0
  133. package/dist/runtime/components/aware/APresenceBlobs.d.vue.ts +3 -0
  134. package/dist/runtime/components/aware/APresenceBlobs.vue +69 -0
  135. package/dist/runtime/components/aware/APresenceBlobs.vue.d.ts +3 -0
  136. package/dist/runtime/components/aware/APresenceCursors.d.vue.ts +20 -0
  137. package/dist/runtime/components/aware/APresenceCursors.vue +47 -0
  138. package/dist/runtime/components/aware/APresenceCursors.vue.d.ts +20 -0
  139. package/dist/runtime/components/aware/ARadioGroup.d.vue.ts +27 -0
  140. package/dist/runtime/components/aware/ARadioGroup.vue +86 -0
  141. package/dist/runtime/components/aware/ARadioGroup.vue.d.ts +27 -0
  142. package/dist/runtime/components/aware/AScroll.d.vue.ts +25 -0
  143. package/dist/runtime/components/aware/AScroll.vue +87 -0
  144. package/dist/runtime/components/aware/AScroll.vue.d.ts +25 -0
  145. package/dist/runtime/components/aware/ASelect.d.vue.ts +12 -2
  146. package/dist/runtime/components/aware/ASelect.vue +146 -22
  147. package/dist/runtime/components/aware/ASelect.vue.d.ts +12 -2
  148. package/dist/runtime/components/aware/ASelectMenu.d.vue.ts +17 -0
  149. package/dist/runtime/components/aware/ASelectMenu.vue +139 -0
  150. package/dist/runtime/components/aware/ASelectMenu.vue.d.ts +17 -0
  151. package/dist/runtime/components/aware/ASlideover.d.vue.ts +33 -0
  152. package/dist/runtime/components/aware/ASlideover.vue +110 -0
  153. package/dist/runtime/components/aware/ASlideover.vue.d.ts +33 -0
  154. package/dist/runtime/components/aware/ASlider.d.vue.ts +19 -0
  155. package/dist/runtime/components/aware/ASlider.vue +77 -0
  156. package/dist/runtime/components/aware/ASlider.vue.d.ts +19 -0
  157. package/dist/runtime/components/aware/AStepper.d.vue.ts +25 -0
  158. package/dist/runtime/components/aware/AStepper.vue +82 -0
  159. package/dist/runtime/components/aware/AStepper.vue.d.ts +25 -0
  160. package/dist/runtime/components/aware/ASwitch.d.vue.ts +11 -0
  161. package/dist/runtime/components/aware/ASwitch.vue +75 -0
  162. package/dist/runtime/components/aware/ASwitch.vue.d.ts +11 -0
  163. package/dist/runtime/components/aware/ATable.d.vue.ts +23 -0
  164. package/dist/runtime/components/aware/ATable.vue +97 -0
  165. package/dist/runtime/components/aware/ATable.vue.d.ts +23 -0
  166. package/dist/runtime/components/aware/ATabs.d.vue.ts +27 -0
  167. package/dist/runtime/components/aware/ATabs.vue +128 -0
  168. package/dist/runtime/components/aware/ATabs.vue.d.ts +27 -0
  169. package/dist/runtime/components/aware/ATextarea.d.vue.ts +12 -2
  170. package/dist/runtime/components/aware/ATextarea.vue +72 -19
  171. package/dist/runtime/components/aware/ATextarea.vue.d.ts +12 -2
  172. package/dist/runtime/components/aware/AToggleGroup.d.vue.ts +27 -0
  173. package/dist/runtime/components/aware/AToggleGroup.vue +79 -0
  174. package/dist/runtime/components/aware/AToggleGroup.vue.d.ts +27 -0
  175. package/dist/runtime/components/aware/ATree.d.vue.ts +27 -0
  176. package/dist/runtime/components/aware/ATree.vue +111 -0
  177. package/dist/runtime/components/aware/ATree.vue.d.ts +27 -0
  178. package/dist/runtime/components/chat/AChatPanel.d.vue.ts +6 -6
  179. package/dist/runtime/components/chat/AChatPanel.vue.d.ts +6 -6
  180. package/dist/runtime/components/chat/ANodeChatPanel.d.vue.ts +42 -0
  181. package/dist/runtime/components/chat/ANodeChatPanel.vue +53 -0
  182. package/dist/runtime/components/chat/ANodeChatPanel.vue.d.ts +42 -0
  183. package/dist/runtime/components/docs/ADocsSearch.d.vue.ts +2 -2
  184. package/dist/runtime/components/docs/ADocsSearch.vue.d.ts +2 -2
  185. package/dist/runtime/components/docs/ADocsSearchButton.d.vue.ts +3 -3
  186. package/dist/runtime/components/docs/ADocsSearchButton.vue.d.ts +3 -3
  187. package/dist/runtime/components/editor/AEditorRedoButton.d.vue.ts +26 -0
  188. package/dist/runtime/components/editor/AEditorRedoButton.vue +38 -0
  189. package/dist/runtime/components/editor/AEditorRedoButton.vue.d.ts +26 -0
  190. package/dist/runtime/components/editor/AEditorUndoButton.d.vue.ts +26 -0
  191. package/dist/runtime/components/editor/AEditorUndoButton.vue +38 -0
  192. package/dist/runtime/components/editor/AEditorUndoButton.vue.d.ts +26 -0
  193. package/dist/runtime/components/editor/AIconPickerPopover.d.vue.ts +24 -0
  194. package/dist/runtime/components/editor/AIconPickerPopover.vue +113 -0
  195. package/dist/runtime/components/editor/AIconPickerPopover.vue.d.ts +24 -0
  196. package/dist/runtime/components/editor/ANodeInlineLabel.d.vue.ts +24 -0
  197. package/dist/runtime/components/editor/ANodeInlineLabel.vue +101 -0
  198. package/dist/runtime/components/editor/ANodeInlineLabel.vue.d.ts +24 -0
  199. package/dist/runtime/components/renderers/ADocLoadError.d.vue.ts +3 -0
  200. package/dist/runtime/components/renderers/ADocLoadError.vue +11 -0
  201. package/dist/runtime/components/renderers/ADocLoadError.vue.d.ts +3 -0
  202. package/dist/runtime/components/renderers/ADocLoadingSkeleton.d.vue.ts +3 -0
  203. package/dist/runtime/components/renderers/ADocLoadingSkeleton.vue +5 -0
  204. package/dist/runtime/components/renderers/ADocLoadingSkeleton.vue.d.ts +3 -0
  205. package/dist/runtime/components/renderers/AOverviewRenderer.d.vue.ts +22 -0
  206. package/dist/runtime/components/renderers/AOverviewRenderer.vue +1041 -0
  207. package/dist/runtime/components/renderers/AOverviewRenderer.vue.d.ts +22 -0
  208. package/dist/runtime/components/renderers/AProseRenderer.d.vue.ts +23 -0
  209. package/dist/runtime/components/renderers/AProseRenderer.vue +31 -0
  210. package/dist/runtime/components/renderers/AProseRenderer.vue.d.ts +23 -0
  211. package/dist/runtime/components/renderers/ASheetsRenderer.client.d.vue.ts +19 -0
  212. package/dist/runtime/components/renderers/ASheetsRenderer.client.vue +865 -0
  213. package/dist/runtime/components/renderers/ASheetsRenderer.client.vue.d.ts +19 -0
  214. package/dist/runtime/components/renderers/calendar/ACalendarDayCell.d.vue.ts +14 -0
  215. package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue +45 -15
  216. package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue.d.ts +14 -0
  217. package/dist/runtime/components/renderers/calendar/ACalendarDayView.d.vue.ts +15 -0
  218. package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue +93 -20
  219. package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue.d.ts +15 -0
  220. package/dist/runtime/components/renderers/calendar/ACalendarEventChip.d.vue.ts +9 -0
  221. package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue +31 -2
  222. package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue.d.ts +9 -0
  223. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.d.vue.ts +4 -4
  224. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue.d.ts +4 -4
  225. package/dist/runtime/components/renderers/calendar/ACalendarWeekView.d.vue.ts +15 -0
  226. package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue +94 -21
  227. package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue.d.ts +15 -0
  228. package/dist/runtime/components/renderers/media/MediaTransportBar.d.vue.ts +2 -2
  229. package/dist/runtime/components/renderers/media/MediaTransportBar.vue.d.ts +2 -2
  230. package/dist/runtime/components/renderers/sheets/ASheetsCell.d.vue.ts +45 -0
  231. package/dist/runtime/components/renderers/sheets/ASheetsCell.vue +123 -0
  232. package/dist/runtime/components/renderers/sheets/ASheetsCell.vue.d.ts +45 -0
  233. package/dist/runtime/components/renderers/sheets/ASheetsGrid.d.vue.ts +111 -0
  234. package/dist/runtime/components/renderers/sheets/ASheetsGrid.vue +737 -0
  235. package/dist/runtime/components/renderers/sheets/ASheetsGrid.vue.d.ts +111 -0
  236. package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.d.vue.ts +26 -0
  237. package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.vue +100 -0
  238. package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.vue.d.ts +26 -0
  239. package/dist/runtime/components/renderers/sheets/ASheetsToolbar.d.vue.ts +48 -0
  240. package/dist/runtime/components/renderers/sheets/ASheetsToolbar.vue +243 -0
  241. package/dist/runtime/components/renderers/sheets/ASheetsToolbar.vue.d.ts +48 -0
  242. package/dist/runtime/components/renderers/table/cells/ATableCellColor.d.vue.ts +1 -0
  243. package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue +13 -32
  244. package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue.d.ts +1 -0
  245. package/dist/runtime/components/renderers/timeline/ATimelineBar.d.vue.ts +6 -0
  246. package/dist/runtime/components/renderers/timeline/ATimelineBar.vue +34 -4
  247. package/dist/runtime/components/renderers/timeline/ATimelineBar.vue.d.ts +6 -0
  248. package/dist/runtime/components/renderers/timeline/ATimelineBarArea.d.vue.ts +16 -0
  249. package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue +14 -3
  250. package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue.d.ts +16 -0
  251. package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.d.vue.ts +13 -1
  252. package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue +114 -47
  253. package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue.d.ts +13 -1
  254. package/dist/runtime/components/renderers/timeline/ATimelineMilestone.d.vue.ts +4 -0
  255. package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue +21 -4
  256. package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue.d.ts +4 -0
  257. package/dist/runtime/components/renderers/timeline/ATimelineToolbar.d.vue.ts +2 -2
  258. package/dist/runtime/components/renderers/timeline/ATimelineToolbar.vue.d.ts +2 -2
  259. package/dist/runtime/components/settings/ASettingsSpacesPanel.vue +7 -25
  260. package/dist/runtime/components/shell/ADocPanelSettings.d.vue.ts +3 -3
  261. package/dist/runtime/components/shell/ADocPanelSettings.vue.d.ts +3 -3
  262. package/dist/runtime/components/shell/ASyncStatus.d.vue.ts +1 -1
  263. package/dist/runtime/components/shell/ASyncStatus.vue.d.ts +1 -1
  264. package/dist/runtime/components/shell/AUserMenu.d.vue.ts +2 -2
  265. package/dist/runtime/components/shell/AUserMenu.vue.d.ts +2 -2
  266. package/dist/runtime/components/shell/AWelcomeScreen.d.vue.ts +1 -1
  267. package/dist/runtime/components/shell/AWelcomeScreen.vue.d.ts +1 -1
  268. package/dist/runtime/composables/useAACaret.d.ts +29 -0
  269. package/dist/runtime/composables/useAACaret.js +64 -0
  270. package/dist/runtime/composables/useAAEphemeral.d.ts +32 -0
  271. package/dist/runtime/composables/useAAEphemeral.js +33 -0
  272. package/dist/runtime/composables/useAAField.d.ts +10 -2
  273. package/dist/runtime/composables/useAAField.js +31 -2
  274. package/dist/runtime/composables/useAAFieldValue.d.ts +26 -0
  275. package/dist/runtime/composables/useAAFieldValue.js +32 -0
  276. package/dist/runtime/composables/useAAFocus.d.ts +68 -0
  277. package/dist/runtime/composables/useAAFocus.js +174 -0
  278. package/dist/runtime/composables/useAAFollowAnchor.d.ts +25 -0
  279. package/dist/runtime/composables/useAAFollowAnchor.js +69 -0
  280. package/dist/runtime/composables/useAAFollowPeer.d.ts +29 -0
  281. package/dist/runtime/composables/useAAFollowPeer.js +75 -0
  282. package/dist/runtime/composables/useAAKey.d.ts +22 -0
  283. package/dist/runtime/composables/useAAKey.js +24 -0
  284. package/dist/runtime/composables/useAAPointer.d.ts +30 -0
  285. package/dist/runtime/composables/useAAPointer.js +53 -0
  286. package/dist/runtime/composables/useAAUIState.d.ts +29 -0
  287. package/dist/runtime/composables/useAAUIState.js +28 -0
  288. package/dist/runtime/composables/useAAViewport.d.ts +22 -0
  289. package/dist/runtime/composables/useAAViewport.js +50 -0
  290. package/dist/runtime/composables/useAbraAdmin.d.ts +54 -0
  291. package/dist/runtime/composables/useAbraAdmin.js +115 -0
  292. package/dist/runtime/composables/useAbracadabraAuth.d.ts +8 -0
  293. package/dist/runtime/composables/useAbracadabraAuth.js +8 -0
  294. package/dist/runtime/composables/useAggregatedPresence.d.ts +23 -0
  295. package/dist/runtime/composables/useAggregatedPresence.js +140 -0
  296. package/dist/runtime/composables/useChat.d.ts +16 -2
  297. package/dist/runtime/composables/useChat.js +257 -66
  298. package/dist/runtime/composables/useChatUsers.d.ts +2 -0
  299. package/dist/runtime/composables/useChatUsers.js +2 -1
  300. package/dist/runtime/composables/useDocLookup.d.ts +4 -0
  301. package/dist/runtime/composables/useDocLookup.js +25 -0
  302. package/dist/runtime/composables/useDocSnapshots.d.ts +79 -0
  303. package/dist/runtime/composables/useDocSnapshots.js +234 -0
  304. package/dist/runtime/composables/useEditorDragHandle.d.ts +7 -0
  305. package/dist/runtime/composables/useEditorDragHandle.js +19 -1
  306. package/dist/runtime/composables/useEditorSuggestions.js +26 -1
  307. package/dist/runtime/composables/useEditorToolbar.js +9 -1
  308. package/dist/runtime/composables/useEmailVerification.d.ts +33 -0
  309. package/dist/runtime/composables/useEmailVerification.js +58 -0
  310. package/dist/runtime/composables/useIdentityDoc.js +0 -3
  311. package/dist/runtime/composables/useItemPresence.d.ts +47 -0
  312. package/dist/runtime/composables/useItemPresence.js +73 -0
  313. package/dist/runtime/composables/useResizableWidth.d.ts +24 -0
  314. package/dist/runtime/composables/useResizableWidth.js +87 -0
  315. package/dist/runtime/composables/useServerInfo.d.ts +17 -2
  316. package/dist/runtime/composables/useServerInfo.js +30 -6
  317. package/dist/runtime/composables/useServerSearch.d.ts +36 -0
  318. package/dist/runtime/composables/useServerSearch.js +91 -0
  319. package/dist/runtime/composables/useServerTrash.d.ts +67 -0
  320. package/dist/runtime/composables/useServerTrash.js +128 -0
  321. package/dist/runtime/composables/useSheetsClipboard.d.ts +42 -0
  322. package/dist/runtime/composables/useSheetsClipboard.js +109 -0
  323. package/dist/runtime/composables/useSheetsFormulas.d.ts +38 -0
  324. package/dist/runtime/composables/useSheetsFormulas.js +725 -0
  325. package/dist/runtime/composables/useSheetsSelection.d.ts +68 -0
  326. package/dist/runtime/composables/useSheetsSelection.js +390 -0
  327. package/dist/runtime/composables/useSheetsView.d.ts +31 -0
  328. package/dist/runtime/composables/useSheetsView.js +77 -0
  329. package/dist/runtime/composables/useSpaceConnections.d.ts +43 -0
  330. package/dist/runtime/composables/useSpaceConnections.js +72 -0
  331. package/dist/runtime/composables/useSpaces.d.ts +1 -3
  332. package/dist/runtime/composables/useSpaces.js +2 -5
  333. package/dist/runtime/composables/useTiptapHistory.d.ts +22 -0
  334. package/dist/runtime/composables/useTiptapHistory.js +12 -0
  335. package/dist/runtime/composables/useTreeExpansion.d.ts +28 -0
  336. package/dist/runtime/composables/useTreeExpansion.js +94 -0
  337. package/dist/runtime/composables/useYDoc.js +12 -1
  338. package/dist/runtime/extensions/button.d.ts +3 -0
  339. package/dist/runtime/extensions/button.js +62 -0
  340. package/dist/runtime/extensions/color-swatch.d.ts +2 -0
  341. package/dist/runtime/extensions/color-swatch.js +34 -0
  342. package/dist/runtime/extensions/diff.d.ts +2 -0
  343. package/dist/runtime/extensions/diff.js +40 -0
  344. package/dist/runtime/extensions/divider.d.ts +2 -0
  345. package/dist/runtime/extensions/divider.js +33 -0
  346. package/dist/runtime/extensions/embed.d.ts +2 -0
  347. package/dist/runtime/extensions/embed.js +40 -0
  348. package/dist/runtime/extensions/figure.d.ts +2 -0
  349. package/dist/runtime/extensions/figure.js +49 -0
  350. package/dist/runtime/extensions/math.d.ts +15 -0
  351. package/dist/runtime/extensions/math.js +66 -0
  352. package/dist/runtime/extensions/progress.d.ts +2 -0
  353. package/dist/runtime/extensions/progress.js +43 -0
  354. package/dist/runtime/extensions/quote.d.ts +2 -0
  355. package/dist/runtime/extensions/quote.js +39 -0
  356. package/dist/runtime/extensions/spoiler.d.ts +2 -0
  357. package/dist/runtime/extensions/spoiler.js +36 -0
  358. package/dist/runtime/extensions/stat.d.ts +3 -0
  359. package/dist/runtime/extensions/stat.js +58 -0
  360. package/dist/runtime/extensions/video.d.ts +2 -0
  361. package/dist/runtime/extensions/video.js +40 -0
  362. package/dist/runtime/extensions/views/ButtonGroupView.d.vue.ts +4 -0
  363. package/dist/runtime/extensions/views/ButtonGroupView.vue +25 -0
  364. package/dist/runtime/extensions/views/ButtonGroupView.vue.d.ts +4 -0
  365. package/dist/runtime/extensions/views/ButtonView.d.vue.ts +4 -0
  366. package/dist/runtime/extensions/views/ButtonView.vue +171 -0
  367. package/dist/runtime/extensions/views/ButtonView.vue.d.ts +4 -0
  368. package/dist/runtime/extensions/views/ColorSwatchView.d.vue.ts +4 -0
  369. package/dist/runtime/extensions/views/ColorSwatchView.vue +134 -0
  370. package/dist/runtime/extensions/views/ColorSwatchView.vue.d.ts +4 -0
  371. package/dist/runtime/extensions/views/DiffView.d.vue.ts +4 -0
  372. package/dist/runtime/extensions/views/DiffView.vue +163 -0
  373. package/dist/runtime/extensions/views/DiffView.vue.d.ts +4 -0
  374. package/dist/runtime/extensions/views/DividerView.d.vue.ts +4 -0
  375. package/dist/runtime/extensions/views/DividerView.vue +40 -0
  376. package/dist/runtime/extensions/views/DividerView.vue.d.ts +4 -0
  377. package/dist/runtime/extensions/views/EmbedView.d.vue.ts +4 -0
  378. package/dist/runtime/extensions/views/EmbedView.vue +166 -0
  379. package/dist/runtime/extensions/views/EmbedView.vue.d.ts +4 -0
  380. package/dist/runtime/extensions/views/FigureView.d.vue.ts +4 -0
  381. package/dist/runtime/extensions/views/FigureView.vue +122 -0
  382. package/dist/runtime/extensions/views/FigureView.vue.d.ts +4 -0
  383. package/dist/runtime/extensions/views/FileNodeView.vue +21 -24
  384. package/dist/runtime/extensions/views/MathBlockView.d.vue.ts +4 -0
  385. package/dist/runtime/extensions/views/MathBlockView.vue +151 -0
  386. package/dist/runtime/extensions/views/MathBlockView.vue.d.ts +4 -0
  387. package/dist/runtime/extensions/views/MathInlineView.d.vue.ts +4 -0
  388. package/dist/runtime/extensions/views/MathInlineView.vue +149 -0
  389. package/dist/runtime/extensions/views/MathInlineView.vue.d.ts +4 -0
  390. package/dist/runtime/extensions/views/MetaFieldView.vue +1129 -550
  391. package/dist/runtime/extensions/views/ProgressView.d.vue.ts +4 -0
  392. package/dist/runtime/extensions/views/ProgressView.vue +156 -0
  393. package/dist/runtime/extensions/views/ProgressView.vue.d.ts +4 -0
  394. package/dist/runtime/extensions/views/QuoteView.d.vue.ts +4 -0
  395. package/dist/runtime/extensions/views/QuoteView.vue +128 -0
  396. package/dist/runtime/extensions/views/QuoteView.vue.d.ts +4 -0
  397. package/dist/runtime/extensions/views/SpoilerView.d.vue.ts +4 -0
  398. package/dist/runtime/extensions/views/SpoilerView.vue +62 -0
  399. package/dist/runtime/extensions/views/SpoilerView.vue.d.ts +4 -0
  400. package/dist/runtime/extensions/views/StatGroupView.d.vue.ts +4 -0
  401. package/dist/runtime/extensions/views/StatGroupView.vue +25 -0
  402. package/dist/runtime/extensions/views/StatGroupView.vue.d.ts +4 -0
  403. package/dist/runtime/extensions/views/StatView.d.vue.ts +4 -0
  404. package/dist/runtime/extensions/views/StatView.vue +89 -0
  405. package/dist/runtime/extensions/views/StatView.vue.d.ts +4 -0
  406. package/dist/runtime/extensions/views/VideoView.d.vue.ts +4 -0
  407. package/dist/runtime/extensions/views/VideoView.vue +190 -0
  408. package/dist/runtime/extensions/views/VideoView.vue.d.ts +4 -0
  409. package/dist/runtime/locale.d.ts +133 -0
  410. package/dist/runtime/locale.js +121 -2
  411. package/dist/runtime/plugin-abracadabra.client.js +233 -36
  412. package/dist/runtime/plugin-abracadabra.server.js +0 -1
  413. package/dist/runtime/plugins/core.plugin.js +73 -4
  414. package/dist/runtime/server/plugins/abracadabra-service.js +1 -1
  415. package/dist/runtime/server/utils/rpcHandler.d.ts +74 -0
  416. package/dist/runtime/server/utils/rpcHandler.js +74 -0
  417. package/dist/runtime/server/utils/spaceManager.js +10 -9
  418. package/dist/runtime/types.d.ts +63 -10
  419. package/dist/runtime/utils/awareRingStyle.d.ts +22 -0
  420. package/dist/runtime/utils/awareRingStyle.js +16 -0
  421. package/dist/runtime/utils/caretCoordinates.d.ts +41 -0
  422. package/dist/runtime/utils/caretCoordinates.js +126 -0
  423. package/dist/runtime/utils/content.d.ts +1 -1
  424. package/dist/runtime/utils/docTypes.js +44 -13
  425. package/dist/runtime/utils/domPath.d.ts +42 -0
  426. package/dist/runtime/utils/domPath.js +89 -0
  427. package/dist/runtime/utils/loadKatex.d.ts +1 -0
  428. package/dist/runtime/utils/loadKatex.js +29 -0
  429. package/dist/runtime/utils/lucideIcons.d.ts +16 -0
  430. package/dist/runtime/utils/lucideIcons.js +451 -0
  431. package/dist/runtime/utils/time.d.ts +15 -0
  432. package/dist/runtime/utils/time.js +5 -0
  433. package/dist/types.d.mts +4 -0
  434. package/package.json +27 -16
@@ -136,16 +136,26 @@ async function fetchServerInfo(baseUrl) {
136
136
  }
137
137
  return {};
138
138
  }
139
- async function fetchSpacesInfo(baseUrl) {
139
+ function spaceMetaFromDoc(doc) {
140
+ return {
141
+ id: doc.id,
142
+ name: doc.label ?? "",
143
+ description: doc.description ?? null,
144
+ visibility: doc.public_access === "observer" ? "public" : "private",
145
+ owner_id: doc.owner_id ?? null,
146
+ public_access: doc.public_access ?? null
147
+ };
148
+ }
149
+ async function fetchSpacesInfo(baseUrl, token) {
140
150
  try {
141
- const [spacesRes, hubRes] = await Promise.all([
142
- fetch(`${baseUrl}/spaces`),
143
- fetch(`${baseUrl}/spaces/hub`)
144
- ]);
145
- if (!spacesRes.ok) return null;
146
- const spacesData = await spacesRes.json();
147
- const hubDocId = hubRes.ok ? (await hubRes.json()).doc_id : void 0;
148
- return { spaces: spacesData.spaces, hubDocId };
151
+ const headers = {};
152
+ if (token) headers.Authorization = `Bearer ${token}`;
153
+ const res = await fetch(`${baseUrl}/docs?root=true`, { headers });
154
+ if (!res.ok) return null;
155
+ const data = await res.json();
156
+ const docs = Array.isArray(data) ? data : data.documents ?? [];
157
+ const spaces = docs.filter((d) => d.kind === "space").map(spaceMetaFromDoc);
158
+ return { spaces };
149
159
  } catch {
150
160
  return null;
151
161
  }
@@ -228,6 +238,9 @@ export default defineNuxtPlugin({
228
238
  const userColor = ref("hsl(217, 70%, 75%)");
229
239
  const userColorName = ref("blue");
230
240
  const userNeutralColorName = ref("zinc");
241
+ const userStatusIcon = ref(localStorage.getItem("abracadabra_status_icon") ?? "");
242
+ const userStatusText = ref(localStorage.getItem("abracadabra_status_text") ?? "");
243
+ const userStatusAsAvatar = ref(localStorage.getItem("abracadabra_status_as_avatar") === "1");
231
244
  watch([status, synced], ([s, sy]) => {
232
245
  try {
233
246
  const ready = s === "connected" && sy;
@@ -289,12 +302,10 @@ export default defineNuxtPlugin({
289
302
  }
290
303
  const entry = { url, label };
291
304
  const [info, spacesInfo] = await Promise.all([fetchServerInfo(url), fetchSpacesInfo(url)]);
292
- if (info.index_doc_id) entry.entryDocId = info.index_doc_id;
305
+ if (info.root_doc_id) entry.entryDocId = info.root_doc_id;
293
306
  if (info.name) entry.label = info.name;
294
307
  if (spacesInfo) {
295
- entry.spacesEnabled = true;
296
308
  entry.cachedSpaces = spacesInfo.spaces;
297
- if (spacesInfo.hubDocId) entry.hubDocId = spacesInfo.hubDocId;
298
309
  }
299
310
  savedServers.value = [...savedServers.value, entry];
300
311
  persistServers();
@@ -307,42 +318,59 @@ export default defineNuxtPlugin({
307
318
  const currentServerSpaces = computed(
308
319
  () => savedServers.value.find((s) => s.url === currentServerUrl.value)?.cachedSpaces ?? []
309
320
  );
310
- const currentServerSpacesEnabled = computed(
311
- () => savedServers.value.find((s) => s.url === currentServerUrl.value)?.spacesEnabled ?? false
312
- );
313
321
  async function refreshSpaces() {
314
322
  const url = currentServerUrl.value;
315
323
  if (!url) return;
316
- const spacesInfo = await fetchSpacesInfo(url);
324
+ let spaces = null;
325
+ if (client.value) {
326
+ try {
327
+ const docs = await client.value.listSpaces();
328
+ spaces = docs.map(spaceMetaFromDoc);
329
+ } catch (e) {
330
+ if (import.meta.dev) console.warn("[abracadabra] refreshSpaces: client.listSpaces failed", e);
331
+ }
332
+ }
333
+ if (spaces === null) {
334
+ const spacesInfo = await fetchSpacesInfo(url);
335
+ spaces = spacesInfo?.spaces ?? null;
336
+ }
337
+ if (spaces === null) return;
317
338
  const idx = savedServers.value.findIndex((s) => s.url === url);
318
339
  if (idx !== -1) {
319
- if (spacesInfo) {
320
- savedServers.value[idx] = { ...savedServers.value[idx], spacesEnabled: true, cachedSpaces: spacesInfo.spaces, hubDocId: spacesInfo.hubDocId ?? savedServers.value[idx].hubDocId };
321
- }
340
+ savedServers.value[idx] = { ...savedServers.value[idx], cachedSpaces: spaces };
322
341
  persistServers();
323
342
  }
324
343
  }
325
344
  async function createSpace(opts) {
326
345
  if (!client.value) throw new Error("Not connected");
327
- const result = await client.value.createSpace(opts);
346
+ const doc2 = await client.value.createSpace(opts);
328
347
  await refreshSpaces();
329
- return result;
348
+ return spaceMetaFromDoc(doc2);
330
349
  }
331
350
  async function updateSpace(id, opts) {
332
351
  if (!client.value) throw new Error("Not connected");
333
- const result = await client.value.updateSpace(id, opts);
352
+ await client.value.updateSpace(id, opts);
334
353
  await refreshSpaces();
335
- return result;
336
354
  }
337
355
  async function deleteSpace(id) {
338
356
  if (!client.value) throw new Error("Not connected");
339
357
  await client.value.deleteSpace(id);
340
358
  await refreshSpaces();
341
359
  }
360
+ function publishAwarenessUser() {
361
+ const payload = {
362
+ name: userName.value,
363
+ color: userColor.value,
364
+ publicKey: publicKeyB64.value
365
+ };
366
+ if (userStatusIcon.value) payload.statusIcon = userStatusIcon.value;
367
+ if (userStatusText.value) payload.statusText = userStatusText.value;
368
+ provider.value?.setAwarenessField("user", payload);
369
+ }
342
370
  function setUserName(name) {
343
371
  userName.value = name;
344
372
  localStorage.setItem("abracadabra_username", name);
345
- provider.value?.setAwarenessField("user", { name, color: userColor.value, publicKey: publicKeyB64.value });
373
+ publishAwarenessUser();
346
374
  client.value?.updateMe({ displayName: name }).catch(() => {
347
375
  });
348
376
  }
@@ -354,7 +382,7 @@ export default defineNuxtPlugin({
354
382
  localStorage.setItem("abracadabra_usercolor", colorName);
355
383
  const appConfig = useAppConfig();
356
384
  if (appConfig.ui?.colors) appConfig.ui.colors.primary = toNuxtUIPrimary(colorName);
357
- provider.value?.setAwarenessField("user", { name: userName.value, color: hsl, publicKey: publicKeyB64.value });
385
+ publishAwarenessUser();
358
386
  }
359
387
  function setNeutralColor(colorName) {
360
388
  userNeutralColorName.value = colorName;
@@ -362,6 +390,25 @@ export default defineNuxtPlugin({
362
390
  const appConfig = useAppConfig();
363
391
  if (appConfig.ui?.colors) appConfig.ui.colors.neutral = toNuxtUINeutral(colorName);
364
392
  }
393
+ function setUserStatusIcon(icon) {
394
+ const normalized = icon.replace(/^i-lucide-/, "");
395
+ userStatusIcon.value = normalized;
396
+ if (normalized) localStorage.setItem("abracadabra_status_icon", normalized);
397
+ else localStorage.removeItem("abracadabra_status_icon");
398
+ publishAwarenessUser();
399
+ }
400
+ function setUserStatusText(text) {
401
+ const trimmed = (text ?? "").slice(0, 80);
402
+ userStatusText.value = trimmed;
403
+ if (trimmed) localStorage.setItem("abracadabra_status_text", trimmed);
404
+ else localStorage.removeItem("abracadabra_status_text");
405
+ publishAwarenessUser();
406
+ }
407
+ function setUserStatusAsAvatar(enabled) {
408
+ userStatusAsAvatar.value = enabled;
409
+ if (enabled) localStorage.setItem("abracadabra_status_as_avatar", "1");
410
+ else localStorage.removeItem("abracadabra_status_as_avatar");
411
+ }
365
412
  function setRequirePasskey(enabled) {
366
413
  requirePasskeyOnLogin.value = enabled;
367
414
  localStorage.setItem(REQUIRE_PASSKEY_KEY, enabled ? "1" : "0");
@@ -519,6 +566,67 @@ export default defineNuxtPlugin({
519
566
  localStorage.removeItem(PUBKEY_KEY);
520
567
  window.location.reload();
521
568
  }
569
+ async function logoutServer() {
570
+ addLog("Revoking session on server...", "auth");
571
+ if (client.value) {
572
+ try {
573
+ await client.value.logoutServer();
574
+ } catch (e) {
575
+ if (import.meta.dev) console.warn("[abracadabra] logoutServer failed", e);
576
+ }
577
+ }
578
+ await logout();
579
+ }
580
+ async function logoutAll() {
581
+ addLog("Revoking all sessions for user...", "auth");
582
+ if (client.value) {
583
+ try {
584
+ await client.value.logoutAll();
585
+ } catch (e) {
586
+ if (import.meta.dev) console.warn("[abracadabra] logoutAll failed", e);
587
+ }
588
+ }
589
+ await logout();
590
+ }
591
+ async function requestPasswordReset(opts) {
592
+ if (!client.value) throw new Error("Not connected");
593
+ await client.value.requestPasswordReset(opts);
594
+ addLog("Password reset email requested", "auth");
595
+ }
596
+ async function loginWithPassword(opts) {
597
+ if (!client.value) throw new Error("Not connected");
598
+ await client.value.login(opts);
599
+ addLog(`Logged in as ${opts.username}`, "auth");
600
+ if (_wsp) {
601
+ _wsp.disconnect();
602
+ setTimeout(() => _wsp?.connect(), 300);
603
+ }
604
+ }
605
+ async function registerWithPassword(opts) {
606
+ if (!client.value) throw new Error("Not connected");
607
+ await client.value.register(opts);
608
+ await client.value.login({ username: opts.username, password: opts.password });
609
+ addLog(`Registered + logged in as ${opts.username}`, "auth");
610
+ if (_wsp) {
611
+ _wsp.disconnect();
612
+ setTimeout(() => _wsp?.connect(), 300);
613
+ }
614
+ }
615
+ async function confirmPasswordReset(opts) {
616
+ if (!client.value) throw new Error("Not connected");
617
+ await client.value.confirmPasswordReset(opts);
618
+ addLog("Password reset confirmed", "auth");
619
+ }
620
+ async function changePassword(opts) {
621
+ if (!client.value) throw new Error("Not connected");
622
+ await client.value.changePassword(opts);
623
+ addLog("Password changed", "auth");
624
+ }
625
+ async function setPassword(newPassword) {
626
+ if (!client.value) throw new Error("Not connected");
627
+ await client.value.setPassword(newPassword);
628
+ addLog("Password set", "auth");
629
+ }
522
630
  async function redeemInvite(code) {
523
631
  if (!client.value) throw new Error("Not connected");
524
632
  await client.value.redeemInvite(code);
@@ -679,7 +787,28 @@ export default defineNuxtPlugin({
679
787
  const _client = new AbracadabraClient({ url: serverUrl, persistAuth, storageKey: authStorageKey });
680
788
  client.value = _client;
681
789
  addLog(`Server: ${serverUrl}`, "connection");
682
- if (_client.isTokenValid() && identityState.value === "claimed") {
790
+ let useExistingToken = _client.isTokenValid();
791
+ if (useExistingToken) {
792
+ try {
793
+ await _client.getMe();
794
+ } catch (e) {
795
+ const status2 = e?.status ?? 0;
796
+ if (status2 === 401) {
797
+ const msg = e instanceof Error ? e.message : String(e);
798
+ addLog(`Persisted JWT no longer valid on ${serverUrl} (${msg.slice(0, 80)}) \u2014 re-registering`, "auth");
799
+ try {
800
+ localStorage.removeItem(authStorageKey);
801
+ } catch {
802
+ }
803
+ ;
804
+ _client.token = null;
805
+ useExistingToken = false;
806
+ }
807
+ }
808
+ }
809
+ if (useExistingToken && identityState.value === "claimed") {
810
+ addLog("Resumed session from persisted token", "auth");
811
+ } else if (useExistingToken) {
683
812
  addLog("Resumed session from persisted token", "auth");
684
813
  } else if (identityState.value === "claimed" && !requirePasskeyOnLogin.value) {
685
814
  identityState.value = "needsReauth";
@@ -710,18 +839,20 @@ export default defineNuxtPlugin({
710
839
  }
711
840
  _client.updateMe({ displayName: userName.value }).catch(() => {
712
841
  });
713
- const [info, spacesInfo] = await Promise.all([
842
+ const [info, spaceDocs] = await Promise.all([
714
843
  fetchServerInfo(serverUrl),
715
- fetchSpacesInfo(serverUrl)
844
+ _client.listSpaces().catch((e) => {
845
+ if (import.meta.dev) console.warn("[abracadabra] init: client.listSpaces failed", e);
846
+ return null;
847
+ })
716
848
  ]);
849
+ const spacesInfo = spaceDocs ? { spaces: spaceDocs.map(spaceMetaFromDoc) } : null;
717
850
  const idx = savedServers.value.findIndex((s) => s.url === serverUrl);
718
851
  if (idx >= 0) {
719
852
  const updates = {};
720
853
  if (info.name && info.name !== savedServers.value[idx].label) updates.label = info.name;
721
854
  if (spacesInfo) {
722
- updates.spacesEnabled = true;
723
855
  updates.cachedSpaces = spacesInfo.spaces;
724
- if (spacesInfo.hubDocId) updates.hubDocId = spacesInfo.hubDocId;
725
856
  }
726
857
  if (Object.keys(updates).length) {
727
858
  savedServers.value[idx] = { ...savedServers.value[idx], ...updates };
@@ -729,9 +860,9 @@ export default defineNuxtPlugin({
729
860
  }
730
861
  }
731
862
  const server = savedServers.value.find((s) => s.url === serverUrl);
732
- const docId = configEntryDocId ?? server?.hubDocId ?? spacesInfo?.hubDocId ?? server?.cachedSpaces?.[0]?.doc_id ?? spacesInfo?.spaces?.[0]?.doc_id ?? server?.entryDocId ?? info.index_doc_id ?? void 0;
863
+ const docId = configEntryDocId ?? server?.entryDocId ?? server?.cachedSpaces?.[0]?.id ?? spacesInfo?.spaces?.[0]?.id ?? void 0;
733
864
  if (!docId) {
734
- connectionError.value = "No entry document found. Configure entryDocId or ensure the server has spaces or an index document.";
865
+ connectionError.value = "No entry document found. Configure entryDocId or ensure the server has spaces.";
735
866
  addLog("No entry document \u2014 cannot connect", "system");
736
867
  try {
737
868
  const imports = await import("#imports");
@@ -888,12 +1019,38 @@ export default defineNuxtPlugin({
888
1019
  }
889
1020
  }
890
1021
  });
891
- _provider.setAwarenessField("user", { name: userName.value, color: userColor.value, publicKey: publicKeyB64.value });
1022
+ {
1023
+ const initial = {
1024
+ name: userName.value,
1025
+ color: userColor.value,
1026
+ publicKey: publicKeyB64.value
1027
+ };
1028
+ if (userStatusIcon.value) initial.statusIcon = userStatusIcon.value;
1029
+ if (userStatusText.value) initial.statusText = userStatusText.value;
1030
+ _provider.setAwarenessField("user", initial);
1031
+ }
892
1032
  _provider.on("unsyncedChanges", ({ number }) => {
893
1033
  unsyncedChanges.value = number;
894
1034
  });
895
1035
  _provider.attach();
896
1036
  provider.value = _provider;
1037
+ try {
1038
+ const onPointerLeave = (e) => {
1039
+ if (e.relatedTarget !== null) return;
1040
+ try {
1041
+ _provider.awareness?.setLocalStateField("hover", null);
1042
+ } catch {
1043
+ }
1044
+ };
1045
+ document.addEventListener("pointerleave", onPointerLeave);
1046
+ window.addEventListener("beforeunload", () => {
1047
+ try {
1048
+ _provider.awareness?.setLocalState(null);
1049
+ } catch {
1050
+ }
1051
+ });
1052
+ } catch {
1053
+ }
897
1054
  try {
898
1055
  const { FileBlobStore } = await import("@abraca/dabra");
899
1056
  const blobStore = new FileBlobStore(serverUrl, _client);
@@ -911,9 +1068,16 @@ export default defineNuxtPlugin({
911
1068
  isReady.value = true;
912
1069
  }, () => null);
913
1070
  watch(
914
- [userName, userColor, publicKeyB64],
1071
+ [userName, userColor, publicKeyB64, userStatusIcon, userStatusText],
915
1072
  () => {
916
- _provider.setAwarenessField("user", { name: userName.value, color: userColor.value, publicKey: publicKeyB64.value });
1073
+ const payload = {
1074
+ name: userName.value,
1075
+ color: userColor.value,
1076
+ publicKey: publicKeyB64.value
1077
+ };
1078
+ if (userStatusIcon.value) payload.statusIcon = userStatusIcon.value;
1079
+ if (userStatusText.value) payload.statusText = userStatusText.value;
1080
+ _provider.setAwarenessField("user", payload);
917
1081
  },
918
1082
  { immediate: true }
919
1083
  );
@@ -938,6 +1102,9 @@ export default defineNuxtPlugin({
938
1102
  userColorName,
939
1103
  userNeutralColorName,
940
1104
  userCount,
1105
+ userStatusIcon,
1106
+ userStatusText,
1107
+ userStatusAsAvatar,
941
1108
  publicKeyB64,
942
1109
  connectionError,
943
1110
  identityState,
@@ -951,7 +1118,6 @@ export default defineNuxtPlugin({
951
1118
  currentServerUrl,
952
1119
  savedServers,
953
1120
  currentServerSpaces,
954
- currentServerSpacesEnabled,
955
1121
  pendingInviteCode,
956
1122
  registry,
957
1123
  addLog,
@@ -959,10 +1125,21 @@ export default defineNuxtPlugin({
959
1125
  setUserColor,
960
1126
  setNeutralColor,
961
1127
  setRequirePasskey,
1128
+ setUserStatusIcon,
1129
+ setUserStatusText,
1130
+ setUserStatusAsAvatar,
962
1131
  claimAccount,
963
1132
  loginWithHardware,
1133
+ loginWithPassword,
1134
+ registerWithPassword,
964
1135
  logout,
965
1136
  reconnect,
1137
+ logoutServer,
1138
+ logoutAll,
1139
+ requestPasswordReset,
1140
+ confirmPasswordReset,
1141
+ changePassword,
1142
+ setPassword,
966
1143
  addServer,
967
1144
  removeServer,
968
1145
  switchServer,
@@ -985,6 +1162,26 @@ export default defineNuxtPlugin({
985
1162
  watch(abra.status, (s) => console.log("[abracadabra] status \u2192", s));
986
1163
  watch(abra.synced, (s) => console.log("[abracadabra] synced \u2192", s));
987
1164
  }
1165
+ function _kickConnection() {
1166
+ if (!_wsp) return;
1167
+ if (identityState.value === "connectionBlocked") {
1168
+ unblockConnection();
1169
+ return;
1170
+ }
1171
+ if (status.value === "disconnected") {
1172
+ authFailureCount = 0;
1173
+ connectionError.value = null;
1174
+ try {
1175
+ _wsp.connect();
1176
+ } catch {
1177
+ }
1178
+ }
1179
+ }
1180
+ window.addEventListener("focus", _kickConnection);
1181
+ window.addEventListener("online", _kickConnection);
1182
+ document.addEventListener("visibilitychange", () => {
1183
+ if (document.visibilityState === "visible") _kickConnection();
1184
+ });
988
1185
  loadServers();
989
1186
  const storedServer = localStorage.getItem(CURRENT_SERVER_KEY);
990
1187
  const initialUrl = storedServer && savedServers.value.some((s) => s.url === storedServer) ? storedServer : currentServerUrl.value || savedServers.value[0]?.url || defaultUrl;
@@ -39,7 +39,6 @@ export default defineNuxtPlugin({
39
39
  currentServerUrl: ref(""),
40
40
  savedServers: ref([]),
41
41
  currentServerSpaces: computed(() => []),
42
- currentServerSpacesEnabled: computed(() => false),
43
42
  // Misc
44
43
  pendingInviteCode: ref(null),
45
44
  logs: ref([]),
@@ -1,4 +1,22 @@
1
1
  import { DOC_TYPES } from "../utils/docTypes.js";
2
+ import { useRuntimeConfig } from "#imports";
3
+ const OPTIONAL_BUILTIN_EXTENSIONS = /* @__PURE__ */ new Set([
4
+ "divider",
5
+ "quote",
6
+ "figure",
7
+ "embed",
8
+ "video",
9
+ "stat",
10
+ "statGroup",
11
+ "button",
12
+ "buttonGroup",
13
+ "progress",
14
+ "spoiler",
15
+ "colorSwatch",
16
+ "mathBlock",
17
+ "mathInline",
18
+ "diff"
19
+ ]);
2
20
  async function loadClientExtensions() {
3
21
  const [
4
22
  { default: TaskList },
@@ -41,7 +59,19 @@ async function loadClientExtensions() {
41
59
  { SelectionDrag },
42
60
  { Field, FieldGroup },
43
61
  { CodePreview },
44
- { CodeTree }
62
+ { CodeTree },
63
+ { Divider },
64
+ { Quote },
65
+ { Figure },
66
+ { Embed },
67
+ { Video },
68
+ { Stat, StatGroup },
69
+ { Button, ButtonGroup },
70
+ { Progress },
71
+ { Spoiler },
72
+ { ColorSwatch },
73
+ { MathBlock, MathInline },
74
+ { Diff }
45
75
  ] = await Promise.all([
46
76
  import("@tiptap/extension-task-list"),
47
77
  import("@tiptap/extension-task-item"),
@@ -83,7 +113,19 @@ async function loadClientExtensions() {
83
113
  import("../extensions/selection-drag.js"),
84
114
  import("../extensions/field.js"),
85
115
  import("../extensions/code-preview.js"),
86
- import("../extensions/code-tree.js")
116
+ import("../extensions/code-tree.js"),
117
+ import("../extensions/divider.js"),
118
+ import("../extensions/quote.js"),
119
+ import("../extensions/figure.js"),
120
+ import("../extensions/embed.js"),
121
+ import("../extensions/video.js"),
122
+ import("../extensions/stat.js"),
123
+ import("../extensions/button.js"),
124
+ import("../extensions/progress.js"),
125
+ import("../extensions/spoiler.js"),
126
+ import("../extensions/color-swatch.js"),
127
+ import("../extensions/math.js"),
128
+ import("../extensions/diff.js")
87
129
  ]);
88
130
  const lowlight = createLowlight(common);
89
131
  const extensions = [
@@ -140,7 +182,23 @@ async function loadClientExtensions() {
140
182
  FieldGroup,
141
183
  // Advanced code blocks
142
184
  CodePreview,
143
- CodeTree
185
+ CodeTree,
186
+ // Visual blocks
187
+ Divider,
188
+ Quote,
189
+ Figure,
190
+ Embed,
191
+ Video,
192
+ Stat,
193
+ StatGroup,
194
+ Button,
195
+ ButtonGroup,
196
+ Progress,
197
+ Spoiler,
198
+ ColorSwatch,
199
+ MathBlock,
200
+ MathInline,
201
+ Diff
144
202
  ];
145
203
  try {
146
204
  const emojiPkg = "@tiptap/extension-emoji";
@@ -210,7 +268,18 @@ export const corePlugin = {
210
268
  ])
211
269
  ),
212
270
  extensions() {
213
- return _cachedClient ?? [];
271
+ if (!_cachedClient) return [];
272
+ let disabled = [];
273
+ try {
274
+ disabled = useRuntimeConfig().public?.abracadabra?.disabledBuiltins ?? [];
275
+ } catch {
276
+ }
277
+ if (!disabled.length) return _cachedClient;
278
+ return _cachedClient.filter((ext) => {
279
+ const name = ext?.name;
280
+ if (!name || !OPTIONAL_BUILTIN_EXTENSIONS.has(name)) return true;
281
+ return !disabled.includes(name);
282
+ });
214
283
  },
215
284
  serverExtensions() {
216
285
  if (_cachedServer) return _cachedServer;
@@ -70,7 +70,7 @@ export default defineNitroPlugin(async (nitroApp) => {
70
70
  if (!rootDocId) {
71
71
  try {
72
72
  const info = await $fetch(`${config.public?.abracadabra?.url}/info`);
73
- rootDocId = info?.index_doc_id ?? "";
73
+ rootDocId = info?.root_doc_id ?? "";
74
74
  } catch {
75
75
  }
76
76
  }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Server-side RPC v1 handler registry for `@abraca/nuxt`.
3
+ *
4
+ * Wraps `provider.rpc.handle(...)` from `@abraca/dabra` with a Nuxt-flavoured
5
+ * shape: schema validation (Zod-compatible — anything with `.parse()`),
6
+ * structured logging, and lifecycle hooks. Handlers register against the
7
+ * service provider's root-doc subscription, which is where service-role
8
+ * runners advertise capabilities.
9
+ *
10
+ * Usage from a Nitro plugin:
11
+ *
12
+ * export default defineNitroPlugin((nitroApp) => {
13
+ * nitroApp.hooks.hook('abracadabra:before-runners', () => {
14
+ * registerServerPlugin({
15
+ * name: 'my-plugin',
16
+ * serverRunners: [
17
+ * defineRpcRunner({
18
+ * handlers: [
19
+ * defineRpcHandler({
20
+ * method: 'ai.summarize@1',
21
+ * schema: z.object({ docId: z.string() }),
22
+ * async handler(args, ctx) {
23
+ * return await summarize(args.docId)
24
+ * },
25
+ * }),
26
+ * ],
27
+ * }),
28
+ * ],
29
+ * })
30
+ * })
31
+ * })
32
+ */
33
+ import type { RpcHandlerContext } from '@abraca/dabra';
34
+ import { RpcError as RpcErrorClass } from '@abraca/dabra';
35
+ import type { ServerRunnerDefinition, ServerRunnerContext } from '../../types.js';
36
+ /** Anything with a `.parse(value): T` method — Zod, Valibot, ArkType, … */
37
+ export interface RpcSchema<T> {
38
+ parse(value: unknown): T;
39
+ }
40
+ export interface RpcHandlerDefinition<TArgs = unknown, TResult = unknown> {
41
+ /** Method name. Convention: `<namespace>.<verb>@<version>`, e.g. `ai.summarize@1`. */
42
+ method: string;
43
+ /** Optional schema for `args`. Validation failure → `SCHEMA` error result. */
44
+ schema?: RpcSchema<TArgs>;
45
+ /**
46
+ * The actual handler. Throw an `RpcError` for typed failures; any other
47
+ * thrown value becomes `INTERNAL`. Returning an async generator turns each
48
+ * `yield` into a `rpc:progress` frame; the generator's return value is the
49
+ * final result.
50
+ */
51
+ handler: (args: TArgs, ctx: RpcHandlerContext) => TResult | Promise<TResult> | AsyncGenerator<unknown, TResult, void>;
52
+ }
53
+ /**
54
+ * Define a single RPC handler. The return value is consumed by
55
+ * `defineRpcRunner({ handlers })`.
56
+ */
57
+ export declare function defineRpcHandler<TArgs, TResult>(def: RpcHandlerDefinition<TArgs, TResult>): RpcHandlerDefinition<TArgs, TResult>;
58
+ export interface RpcRunnerOptions {
59
+ /** Optional unique runner name (defaults to `abracadabra:rpc`). */
60
+ name?: string;
61
+ handlers: RpcHandlerDefinition<any, any>[];
62
+ /** Called once before any handler is registered. */
63
+ onStart?: (ctx: ServerRunnerContext) => void | Promise<void>;
64
+ }
65
+ /**
66
+ * Define a server runner that wires every handler to the root provider's
67
+ * RPC client and unregisters them on shutdown.
68
+ *
69
+ * Returns a `ServerRunnerDefinition` you can list under
70
+ * `AbracadabraPlugin.serverRunners`.
71
+ */
72
+ export declare function defineRpcRunner(options: RpcRunnerOptions): ServerRunnerDefinition;
73
+ export { RpcErrorClass as RpcError };
74
+ export type { RpcHandler, RpcHandlerContext } from '@abraca/dabra';