@abraca/nuxt 0.2.0 → 1.5.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.
- package/dist/module.d.mts +72 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +139 -3
- package/dist/runtime/assets/editor.css +1 -0
- package/dist/runtime/components/AAccountSwitcherModal.d.vue.ts +10 -0
- package/dist/runtime/components/AAccountSwitcherModal.vue +158 -0
- package/dist/runtime/components/AAccountSwitcherModal.vue.d.ts +10 -0
- package/dist/runtime/components/AClaimAccountModal.d.vue.ts +10 -0
- package/dist/runtime/components/AClaimAccountModal.vue +230 -0
- package/dist/runtime/components/AClaimAccountModal.vue.d.ts +10 -0
- package/dist/runtime/components/ACollaborationUsers.vue +1 -0
- package/dist/runtime/components/AColorPicker.vue +4 -2
- package/dist/runtime/components/ACommandPalette.vue +8 -3
- package/dist/runtime/components/AConnectServerModal.d.vue.ts +12 -0
- package/dist/runtime/components/AConnectServerModal.vue +200 -0
- package/dist/runtime/components/AConnectServerModal.vue.d.ts +12 -0
- package/dist/runtime/components/AConnectionStatus.vue +1 -0
- package/dist/runtime/components/ADocPickModal.d.vue.ts +13 -0
- package/dist/runtime/components/ADocPickModal.vue +71 -0
- package/dist/runtime/components/ADocPickModal.vue.d.ts +13 -0
- package/dist/runtime/components/ADocRenderer.d.vue.ts +29 -0
- package/dist/runtime/components/ADocRenderer.vue +105 -0
- package/dist/runtime/components/ADocRenderer.vue.d.ts +29 -0
- package/dist/runtime/components/ADocTypeSelect.vue +8 -4
- package/dist/runtime/components/ADocumentTree.d.vue.ts +3 -3
- package/dist/runtime/components/ADocumentTree.vue +196 -29
- package/dist/runtime/components/ADocumentTree.vue.d.ts +3 -3
- package/dist/runtime/components/AEditor.d.vue.ts +9 -4
- package/dist/runtime/components/AEditor.vue +118 -8
- package/dist/runtime/components/AEditor.vue.d.ts +9 -4
- package/dist/runtime/components/AFloatingWindow.d.vue.ts +54 -2
- package/dist/runtime/components/AFloatingWindow.vue +15 -14
- package/dist/runtime/components/AFloatingWindow.vue.d.ts +54 -2
- package/dist/runtime/components/AIconPicker.vue +10 -2
- package/dist/runtime/components/AInviteRedeemModal.d.vue.ts +10 -0
- package/dist/runtime/components/AInviteRedeemModal.vue +122 -0
- package/dist/runtime/components/AInviteRedeemModal.vue.d.ts +10 -0
- package/dist/runtime/components/ANodePanel.vue +109 -62
- package/dist/runtime/components/ANotifications.vue +37 -8
- package/dist/runtime/components/APermissionGuard.vue +4 -1
- package/dist/runtime/components/APresence.vue +15 -3
- package/dist/runtime/components/AProvider.d.vue.ts +0 -1
- package/dist/runtime/components/AProvider.vue +24 -5
- package/dist/runtime/components/AProvider.vue.d.ts +0 -1
- package/dist/runtime/components/ARoleBadge.vue +1 -0
- package/dist/runtime/components/ASpaceFormModal.d.vue.ts +16 -0
- package/dist/runtime/components/ASpaceFormModal.vue +182 -0
- package/dist/runtime/components/ASpaceFormModal.vue.d.ts +16 -0
- package/dist/runtime/components/AVoiceBar.vue +60 -16
- package/dist/runtime/components/AVoiceTile.vue +5 -1
- package/dist/runtime/components/AWindowLayer.vue +1 -0
- package/dist/runtime/components/aware/AArea.d.vue.ts +1 -1
- package/dist/runtime/components/aware/AArea.vue +3 -2
- package/dist/runtime/components/aware/AArea.vue.d.ts +1 -1
- package/dist/runtime/components/aware/AAvatar.vue +87 -16
- package/dist/runtime/components/aware/AButton.vue +7 -2
- package/dist/runtime/components/aware/ACursorLabel.vue +6 -1
- package/dist/runtime/components/aware/ADocBadge.vue +6 -1
- package/dist/runtime/components/aware/AFacepile.vue +15 -3
- package/dist/runtime/components/aware/AInput.vue +8 -3
- package/dist/runtime/components/aware/ASelect.vue +3 -2
- package/dist/runtime/components/aware/ATextarea.vue +8 -3
- package/dist/runtime/components/aware/AUserList.vue +10 -2
- package/dist/runtime/components/chat/AChatAgentStatus.d.vue.ts +15 -0
- package/dist/runtime/components/chat/AChatAgentStatus.vue +95 -0
- package/dist/runtime/components/chat/AChatAgentStatus.vue.d.ts +15 -0
- package/dist/runtime/components/chat/AChatDocLink.d.vue.ts +18 -0
- package/dist/runtime/components/chat/AChatDocLink.vue +29 -0
- package/dist/runtime/components/chat/AChatDocLink.vue.d.ts +18 -0
- package/dist/runtime/components/chat/AChatDocQuote.d.vue.ts +26 -0
- package/dist/runtime/components/chat/AChatDocQuote.vue +47 -0
- package/dist/runtime/components/chat/AChatDocQuote.vue.d.ts +26 -0
- package/dist/runtime/components/chat/AChatInput.d.vue.ts +45 -0
- package/dist/runtime/components/chat/AChatInput.vue +219 -0
- package/dist/runtime/components/chat/AChatInput.vue.d.ts +45 -0
- package/dist/runtime/components/chat/AChatList.d.vue.ts +59 -0
- package/dist/runtime/components/chat/AChatList.vue +184 -0
- package/dist/runtime/components/chat/AChatList.vue.d.ts +59 -0
- package/dist/runtime/components/chat/AChatMemberList.d.vue.ts +24 -0
- package/dist/runtime/components/chat/AChatMemberList.vue +97 -0
- package/dist/runtime/components/chat/AChatMemberList.vue.d.ts +24 -0
- package/dist/runtime/components/chat/AChatMessages.d.vue.ts +31 -0
- package/dist/runtime/components/chat/AChatMessages.vue +161 -0
- package/dist/runtime/components/chat/AChatMessages.vue.d.ts +31 -0
- package/dist/runtime/components/chat/AChatPanel.d.vue.ts +84 -0
- package/dist/runtime/components/chat/AChatPanel.vue +89 -0
- package/dist/runtime/components/chat/AChatPanel.vue.d.ts +84 -0
- package/dist/runtime/components/chat/AChatTypingIndicator.d.vue.ts +11 -0
- package/dist/runtime/components/chat/AChatTypingIndicator.vue +58 -0
- package/dist/runtime/components/chat/AChatTypingIndicator.vue.d.ts +11 -0
- package/dist/runtime/components/editor/AColorPalettePopover.d.vue.ts +23 -0
- package/dist/runtime/components/editor/AColorPalettePopover.vue +71 -0
- package/dist/runtime/components/editor/AColorPalettePopover.vue.d.ts +23 -0
- package/dist/runtime/components/editor/ADocLinkPopover.d.vue.ts +7 -0
- package/dist/runtime/components/editor/ADocLinkPopover.vue +74 -0
- package/dist/runtime/components/editor/ADocLinkPopover.vue.d.ts +7 -0
- package/dist/runtime/components/editor/AFileAudioPlayer.d.vue.ts +10 -0
- package/dist/runtime/components/editor/AFileAudioPlayer.vue +353 -0
- package/dist/runtime/components/editor/AFileAudioPlayer.vue.d.ts +10 -0
- package/dist/runtime/components/editor/AFileGlbViewer.d.vue.ts +13 -0
- package/dist/runtime/components/editor/AFileGlbViewer.vue +187 -0
- package/dist/runtime/components/editor/AFileGlbViewer.vue.d.ts +13 -0
- package/dist/runtime/components/editor/AFileVideoPlayer.d.vue.ts +7 -0
- package/dist/runtime/components/editor/AFileVideoPlayer.vue +62 -0
- package/dist/runtime/components/editor/AFileVideoPlayer.vue.d.ts +7 -0
- package/dist/runtime/components/editor/ALinkPopover.d.vue.ts +8 -0
- package/dist/runtime/components/editor/ALinkPopover.vue +149 -0
- package/dist/runtime/components/editor/ALinkPopover.vue.d.ts +8 -0
- package/dist/runtime/components/editor/ALocationPickerPopover.d.vue.ts +28 -0
- package/dist/runtime/components/editor/ALocationPickerPopover.vue +232 -0
- package/dist/runtime/components/editor/ALocationPickerPopover.vue.d.ts +28 -0
- package/dist/runtime/components/renderers/ACalendarRenderer.d.vue.ts +14 -1
- package/dist/runtime/components/renderers/ACalendarRenderer.vue +279 -125
- package/dist/runtime/components/renderers/ACalendarRenderer.vue.d.ts +14 -1
- package/dist/runtime/components/renderers/ACallRenderer.d.vue.ts +13 -0
- package/dist/runtime/components/renderers/ACallRenderer.vue +172 -0
- package/dist/runtime/components/renderers/ACallRenderer.vue.d.ts +13 -0
- package/dist/runtime/components/renderers/AChecklistRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/AChecklistRenderer.vue +582 -0
- package/dist/runtime/components/renderers/AChecklistRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/ADashboardRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/ADashboardRenderer.vue +1374 -0
- package/dist/runtime/components/renderers/ADashboardRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/AGalleryCoverImage.d.vue.ts +8 -0
- package/dist/runtime/components/renderers/AGalleryCoverImage.vue +60 -0
- package/dist/runtime/components/renderers/AGalleryCoverImage.vue.d.ts +8 -0
- package/dist/runtime/components/renderers/AGalleryRenderer.d.vue.ts +12 -1
- package/dist/runtime/components/renderers/AGalleryRenderer.vue +327 -53
- package/dist/runtime/components/renderers/AGalleryRenderer.vue.d.ts +12 -1
- package/dist/runtime/components/renderers/AGraphRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/AGraphRenderer.vue +1030 -0
- package/dist/runtime/components/renderers/AGraphRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/AKanbanRenderer.d.vue.ts +13 -1
- package/dist/runtime/components/renderers/AKanbanRenderer.vue +490 -140
- package/dist/runtime/components/renderers/AKanbanRenderer.vue.d.ts +13 -1
- package/dist/runtime/components/renderers/AMapRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/AMapRenderer.vue +1624 -0
- package/dist/runtime/components/renderers/AMapRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/AMediaRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/AMediaRenderer.vue +224 -0
- package/dist/runtime/components/renderers/AMediaRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/AOutlineRenderer.d.vue.ts +12 -1
- package/dist/runtime/components/renderers/AOutlineRenderer.vue +295 -134
- package/dist/runtime/components/renderers/AOutlineRenderer.vue.d.ts +12 -1
- package/dist/runtime/components/renderers/ASpatialRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/ASpatialRenderer.vue +436 -0
- package/dist/runtime/components/renderers/ASpatialRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/ATableRenderer.d.vue.ts +12 -1
- package/dist/runtime/components/renderers/ATableRenderer.vue +459 -147
- package/dist/runtime/components/renderers/ATableRenderer.vue.d.ts +12 -1
- package/dist/runtime/components/renderers/ATimelineRenderer.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/ATimelineRenderer.vue +468 -0
- package/dist/runtime/components/renderers/ATimelineRenderer.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.d.vue.ts +41 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue +109 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue.d.ts +41 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.d.vue.ts +49 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue +152 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue.d.ts +49 -0
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.d.vue.ts +39 -0
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue +101 -0
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue.d.ts +39 -0
- package/dist/runtime/components/renderers/calendar/ACalendarMonthView.d.vue.ts +43 -0
- package/dist/runtime/components/renderers/calendar/ACalendarMonthView.vue +87 -0
- package/dist/runtime/components/renderers/calendar/ACalendarMonthView.vue.d.ts +43 -0
- package/dist/runtime/components/renderers/calendar/ACalendarToolbar.d.vue.ts +38 -0
- package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue +206 -0
- package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue.d.ts +38 -0
- package/dist/runtime/components/renderers/calendar/ACalendarUnscheduled.d.vue.ts +28 -0
- package/dist/runtime/components/renderers/calendar/ACalendarUnscheduled.vue +33 -0
- package/dist/runtime/components/renderers/calendar/ACalendarUnscheduled.vue.d.ts +28 -0
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.d.vue.ts +50 -0
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue +188 -0
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue.d.ts +50 -0
- package/dist/runtime/components/renderers/media/MediaPlaylist.d.vue.ts +25 -0
- package/dist/runtime/components/renderers/media/MediaPlaylist.vue +115 -0
- package/dist/runtime/components/renderers/media/MediaPlaylist.vue.d.ts +25 -0
- package/dist/runtime/components/renderers/media/MediaSyncBar.d.vue.ts +21 -0
- package/dist/runtime/components/renderers/media/MediaSyncBar.vue +61 -0
- package/dist/runtime/components/renderers/media/MediaSyncBar.vue.d.ts +21 -0
- package/dist/runtime/components/renderers/media/MediaTransportBar.d.vue.ts +22 -0
- package/dist/runtime/components/renderers/media/MediaTransportBar.vue +98 -0
- package/dist/runtime/components/renderers/media/MediaTransportBar.vue.d.ts +22 -0
- package/dist/runtime/components/renderers/spatial/SpatialGround.d.vue.ts +20 -0
- package/dist/runtime/components/renderers/spatial/SpatialGround.vue +26 -0
- package/dist/runtime/components/renderers/spatial/SpatialGround.vue.d.ts +20 -0
- package/dist/runtime/components/renderers/spatial/SpatialObject.d.vue.ts +17 -0
- package/dist/runtime/components/renderers/spatial/SpatialObject.vue +257 -0
- package/dist/runtime/components/renderers/spatial/SpatialObject.vue.d.ts +17 -0
- package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.vue +18 -0
- package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.d.vue.ts +8 -0
- package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.vue +53 -0
- package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.vue.d.ts +8 -0
- package/dist/runtime/components/renderers/table/ATableColumnHeader.d.vue.ts +25 -0
- package/dist/runtime/components/renderers/table/ATableColumnHeader.vue +129 -0
- package/dist/runtime/components/renderers/table/ATableColumnHeader.vue.d.ts +25 -0
- package/dist/runtime/components/renderers/table/ATableFlatMode.d.vue.ts +21 -0
- package/dist/runtime/components/renderers/table/ATableFlatMode.vue +370 -0
- package/dist/runtime/components/renderers/table/ATableFlatMode.vue.d.ts +21 -0
- package/dist/runtime/components/renderers/table/ATableToolbar.d.vue.ts +22 -0
- package/dist/runtime/components/renderers/table/ATableToolbar.vue +106 -0
- package/dist/runtime/components/renderers/table/ATableToolbar.vue.d.ts +22 -0
- package/dist/runtime/components/renderers/table/cells/ATableCell.d.vue.ts +18 -0
- package/dist/runtime/components/renderers/table/cells/ATableCell.vue +54 -0
- package/dist/runtime/components/renderers/table/cells/ATableCell.vue.d.ts +18 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.d.vue.ts +14 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue +67 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue.d.ts +14 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellDate.d.vue.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellDate.vue +91 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellDate.vue.d.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMembers.d.vue.ts +6 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMembers.vue +30 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMembers.vue.d.ts +6 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMultiSelect.d.vue.ts +17 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMultiSelect.vue +76 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellMultiSelect.vue.d.ts +17 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellNumber.d.vue.ts +17 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellNumber.vue +54 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellNumber.vue.d.ts +17 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellRating.d.vue.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellRating.vue +35 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellRating.vue.d.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSelect.d.vue.ts +18 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSelect.vue +111 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSelect.vue.d.ts +18 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSlider.d.vue.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSlider.vue +35 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellSlider.vue.d.ts +16 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellTags.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellTags.vue +92 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellTags.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellText.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellText.vue +44 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellText.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellToggle.d.vue.ts +14 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellToggle.vue +31 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellToggle.vue.d.ts +14 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellUrl.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellUrl.vue +63 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellUrl.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/timeline/ATimelineAxis.d.vue.ts +9 -0
- package/dist/runtime/components/renderers/timeline/ATimelineAxis.vue +53 -0
- package/dist/runtime/components/renderers/timeline/ATimelineAxis.vue.d.ts +9 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBar.d.vue.ts +26 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBar.vue +59 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBar.vue.d.ts +26 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.d.vue.ts +28 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue +109 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue.d.ts +28 -0
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.d.vue.ts +43 -0
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue +168 -0
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue.d.ts +43 -0
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.d.vue.ts +24 -0
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue +46 -0
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue.d.ts +24 -0
- package/dist/runtime/components/renderers/timeline/ATimelineToolbar.d.vue.ts +34 -0
- package/dist/runtime/components/renderers/timeline/ATimelineToolbar.vue +193 -0
- package/dist/runtime/components/renderers/timeline/ATimelineToolbar.vue.d.ts +34 -0
- package/dist/runtime/components/settings/ASettingsAdminPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsAdminPanel.vue +159 -0
- package/dist/runtime/components/settings/ASettingsAdminPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsConnectionPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsConnectionPanel.vue +146 -0
- package/dist/runtime/components/settings/ASettingsConnectionPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsInvitesPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsInvitesPanel.vue +157 -0
- package/dist/runtime/components/settings/ASettingsInvitesPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsMembersPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsMembersPanel.vue +134 -0
- package/dist/runtime/components/settings/ASettingsMembersPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsModal.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsModal.vue +176 -0
- package/dist/runtime/components/settings/ASettingsModal.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsOfflinePanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsOfflinePanel.vue +170 -0
- package/dist/runtime/components/settings/ASettingsOfflinePanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsPluginsPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsPluginsPanel.vue +96 -0
- package/dist/runtime/components/settings/ASettingsPluginsPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsProfilePanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsProfilePanel.vue +223 -0
- package/dist/runtime/components/settings/ASettingsProfilePanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsSecurityPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsSecurityPanel.vue +312 -0
- package/dist/runtime/components/settings/ASettingsSecurityPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsSpacesPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsSpacesPanel.vue +195 -0
- package/dist/runtime/components/settings/ASettingsSpacesPanel.vue.d.ts +3 -0
- package/dist/runtime/components/settings/ASettingsTrashPanel.d.vue.ts +3 -0
- package/dist/runtime/components/settings/ASettingsTrashPanel.vue +135 -0
- package/dist/runtime/components/settings/ASettingsTrashPanel.vue.d.ts +3 -0
- package/dist/runtime/components/shell/AChildContextMenu.d.vue.ts +30 -0
- package/dist/runtime/components/shell/AChildContextMenu.vue +48 -0
- package/dist/runtime/components/shell/AChildContextMenu.vue.d.ts +30 -0
- package/dist/runtime/components/shell/ACursorOverlay.d.vue.ts +11 -0
- package/dist/runtime/components/shell/ACursorOverlay.vue +55 -0
- package/dist/runtime/components/shell/ACursorOverlay.vue.d.ts +11 -0
- package/dist/runtime/components/shell/ADocDragGhost.d.vue.ts +3 -0
- package/dist/runtime/components/shell/ADocDragGhost.vue +58 -0
- package/dist/runtime/components/shell/ADocDragGhost.vue.d.ts +3 -0
- package/dist/runtime/components/shell/ADocPanelSettings.d.vue.ts +111 -0
- package/dist/runtime/components/shell/ADocPanelSettings.vue +621 -0
- package/dist/runtime/components/shell/ADocPanelSettings.vue.d.ts +111 -0
- package/dist/runtime/components/shell/AFavoritesList.d.vue.ts +27 -0
- package/dist/runtime/components/shell/AFavoritesList.vue +83 -0
- package/dist/runtime/components/shell/AFavoritesList.vue.d.ts +27 -0
- package/dist/runtime/components/shell/ANodeContextMenu.d.vue.ts +17 -0
- package/dist/runtime/components/shell/ANodeContextMenu.vue +14 -0
- package/dist/runtime/components/shell/ANodeContextMenu.vue.d.ts +17 -0
- package/dist/runtime/components/shell/ASidebar.d.vue.ts +54 -0
- package/dist/runtime/components/shell/ASidebar.vue +92 -0
- package/dist/runtime/components/shell/ASidebar.vue.d.ts +54 -0
- package/dist/runtime/components/shell/ASidebarToggle.d.vue.ts +7 -0
- package/dist/runtime/components/shell/ASidebarToggle.vue +23 -0
- package/dist/runtime/components/shell/ASidebarToggle.vue.d.ts +7 -0
- package/dist/runtime/components/shell/ASpaceSwitcher.d.vue.ts +32 -0
- package/dist/runtime/components/shell/ASpaceSwitcher.vue +63 -0
- package/dist/runtime/components/shell/ASpaceSwitcher.vue.d.ts +32 -0
- package/dist/runtime/components/shell/ASyncStatus.d.vue.ts +25 -0
- package/dist/runtime/components/shell/ASyncStatus.vue +96 -0
- package/dist/runtime/components/shell/ASyncStatus.vue.d.ts +25 -0
- package/dist/runtime/components/shell/AUserMenu.d.vue.ts +28 -0
- package/dist/runtime/components/shell/AUserMenu.vue +79 -0
- package/dist/runtime/components/shell/AUserMenu.vue.d.ts +28 -0
- package/dist/runtime/components/shell/AUserProfilePopover.d.vue.ts +54 -0
- package/dist/runtime/components/shell/AUserProfilePopover.vue +176 -0
- package/dist/runtime/components/shell/AUserProfilePopover.vue.d.ts +54 -0
- package/dist/runtime/components/shell/AWelcomeScreen.d.vue.ts +96 -0
- package/dist/runtime/components/shell/AWelcomeScreen.vue +422 -0
- package/dist/runtime/components/shell/AWelcomeScreen.vue.d.ts +96 -0
- package/dist/runtime/composables/useAAField.js +2 -0
- package/dist/runtime/composables/useAbraLocale.js +1 -0
- package/dist/runtime/composables/useAbracadabra.js +1 -0
- package/dist/runtime/composables/useAbracadabraAuth.d.ts +3 -4
- package/dist/runtime/composables/useAbracadabraAuth.js +4 -0
- package/dist/runtime/composables/useAwareness.js +6 -0
- package/dist/runtime/composables/useAwarenessPeers.js +1 -0
- package/dist/runtime/composables/useBackgroundSync.d.ts +5 -0
- package/dist/runtime/composables/useBackgroundSync.js +24 -3
- package/dist/runtime/composables/useBroadcastSync.d.ts +18 -0
- package/dist/runtime/composables/useBroadcastSync.js +26 -0
- package/dist/runtime/composables/useCalendarView.d.ts +86 -0
- package/dist/runtime/composables/useCalendarView.js +316 -0
- package/dist/runtime/composables/useChat.d.ts +2 -1
- package/dist/runtime/composables/useChat.js +21 -12
- package/dist/runtime/composables/useChatUsers.js +3 -1
- package/dist/runtime/composables/useChildTree.d.ts +4 -2
- package/dist/runtime/composables/useChildTree.js +31 -21
- package/dist/runtime/composables/useCommandPalette.js +77 -19
- package/dist/runtime/composables/useConnectionStatus.d.ts +1 -1
- package/dist/runtime/composables/useConnectionStatus.js +8 -1
- package/dist/runtime/composables/useCrossWindowSync.d.ts +11 -0
- package/dist/runtime/composables/useCrossWindowSync.js +38 -0
- package/dist/runtime/composables/useDashboard.js +17 -9
- package/dist/runtime/composables/useDevicePairing.d.ts +58 -0
- package/dist/runtime/composables/useDevicePairing.js +110 -0
- package/dist/runtime/composables/useDocDragBus.d.ts +28 -0
- package/dist/runtime/composables/useDocDragBus.js +22 -0
- package/dist/runtime/composables/useDocDropZone.d.ts +51 -0
- package/dist/runtime/composables/useDocDropZone.js +84 -0
- package/dist/runtime/composables/useDocExport.d.ts +5 -0
- package/dist/runtime/composables/useDocExport.js +4 -2
- package/dist/runtime/composables/useDocImport.js +5 -3
- package/dist/runtime/composables/useDocLabels.d.ts +22 -0
- package/dist/runtime/composables/useDocLabels.js +11 -0
- package/dist/runtime/composables/useDocLinkPick.d.ts +18 -0
- package/dist/runtime/composables/useDocLinkPick.js +22 -0
- package/dist/runtime/composables/useDocSeo.d.ts +20 -0
- package/dist/runtime/composables/useDocSeo.js +45 -0
- package/dist/runtime/composables/useDocSlugs.d.ts +7 -0
- package/dist/runtime/composables/useDocSlugs.js +23 -0
- package/dist/runtime/composables/useDocTree.d.ts +35 -0
- package/dist/runtime/composables/useDocTree.js +39 -0
- package/dist/runtime/composables/useEditor.js +1 -0
- package/dist/runtime/composables/useEditorDragHandle.js +4 -1
- package/dist/runtime/composables/useEditorEmojis.d.ts +22 -0
- package/dist/runtime/composables/useEditorEmojis.js +57 -0
- package/dist/runtime/composables/useEditorMentions.d.ts +10 -3
- package/dist/runtime/composables/useEditorMentions.js +35 -5
- package/dist/runtime/composables/useEditorSuggestions.d.ts +2 -1
- package/dist/runtime/composables/useEditorSuggestions.js +36 -21
- package/dist/runtime/composables/useEditorToolbar.d.ts +1 -1
- package/dist/runtime/composables/useEditorToolbar.js +5 -1
- package/dist/runtime/composables/useFavorites.d.ts +13 -0
- package/dist/runtime/composables/useFavorites.js +42 -0
- package/dist/runtime/composables/useFileIndex.js +4 -1
- package/dist/runtime/composables/useFileTransfer.d.ts +112 -0
- package/dist/runtime/composables/useFileTransfer.js +183 -0
- package/dist/runtime/composables/useFollowUser.js +4 -1
- package/dist/runtime/composables/useIdentityDoc.d.ts +89 -0
- package/dist/runtime/composables/useIdentityDoc.js +349 -0
- package/dist/runtime/composables/useInstalledPlugins.d.ts +31 -0
- package/dist/runtime/composables/useInstalledPlugins.js +58 -0
- package/dist/runtime/composables/useInvites.d.ts +56 -0
- package/dist/runtime/composables/useInvites.js +78 -0
- package/dist/runtime/composables/useJoinLink.d.ts +25 -0
- package/dist/runtime/composables/useJoinLink.js +58 -0
- package/dist/runtime/composables/useMediaExtractor.d.ts +31 -0
- package/dist/runtime/composables/useMediaExtractor.js +46 -0
- package/dist/runtime/composables/useMediaPlayback.d.ts +43 -0
- package/dist/runtime/composables/useMediaPlayback.js +465 -0
- package/dist/runtime/composables/useNodeContextMenu.d.ts +26 -0
- package/dist/runtime/composables/useNodeContextMenu.js +99 -0
- package/dist/runtime/composables/useNodePanel.d.ts +20 -0
- package/dist/runtime/composables/useNodePanel.js +89 -0
- package/dist/runtime/composables/useNodePanelFollow.d.ts +2 -0
- package/dist/runtime/composables/useNodePanelFollow.js +37 -0
- package/dist/runtime/composables/useNotifications.d.ts +1 -0
- package/dist/runtime/composables/useNotifications.js +9 -2
- package/dist/runtime/composables/usePasskeyAccounts.js +4 -2
- package/dist/runtime/composables/usePluginRegistry.js +1 -0
- package/dist/runtime/composables/useRendererBase.d.ts +16 -1
- package/dist/runtime/composables/useRendererBase.js +10 -1
- package/dist/runtime/composables/useSearchIndex.d.ts +1 -0
- package/dist/runtime/composables/useSearchIndex.js +15 -5
- package/dist/runtime/composables/useServerInfo.d.ts +31 -0
- package/dist/runtime/composables/useServerInfo.js +80 -0
- package/dist/runtime/composables/useSettingsModal.d.ts +18 -0
- package/dist/runtime/composables/useSettingsModal.js +30 -0
- package/dist/runtime/composables/useSlideoverSwipe.d.ts +39 -0
- package/dist/runtime/composables/useSlideoverSwipe.js +48 -0
- package/dist/runtime/composables/useSlugRoute.d.ts +6 -0
- package/dist/runtime/composables/useSlugRoute.js +21 -0
- package/dist/runtime/composables/useSpaces.d.ts +37 -0
- package/dist/runtime/composables/useSpaces.js +85 -0
- package/dist/runtime/composables/useSpatialCamera.d.ts +16 -0
- package/dist/runtime/composables/useSpatialCamera.js +175 -0
- package/dist/runtime/composables/useSpatialDrag.d.ts +14 -0
- package/dist/runtime/composables/useSpatialDrag.js +137 -0
- package/dist/runtime/composables/useTableView.d.ts +29 -0
- package/dist/runtime/composables/useTableView.js +184 -0
- package/dist/runtime/composables/useTimelineView.d.ts +55 -0
- package/dist/runtime/composables/useTimelineView.js +434 -0
- package/dist/runtime/composables/useTiptapDragState.d.ts +8 -0
- package/dist/runtime/composables/useTiptapDragState.js +5 -0
- package/dist/runtime/composables/useTouchDrag.d.ts +36 -0
- package/dist/runtime/composables/useTouchDrag.js +194 -0
- package/dist/runtime/composables/useTrash.d.ts +5 -1
- package/dist/runtime/composables/useTrash.js +12 -6
- package/dist/runtime/composables/useTreeUndoManager.d.ts +22 -0
- package/dist/runtime/composables/useTreeUndoManager.js +45 -0
- package/dist/runtime/composables/useUndoRedo.d.ts +37 -0
- package/dist/runtime/composables/useUndoRedo.js +115 -0
- package/dist/runtime/composables/useVoice.js +2 -0
- package/dist/runtime/composables/useWebRTC.d.ts +50 -0
- package/dist/runtime/composables/useWebRTC.js +179 -0
- package/dist/runtime/composables/useWindowManager.d.ts +2 -0
- package/dist/runtime/composables/useWindowManager.js +63 -1
- package/dist/runtime/extensions/code-preview.d.ts +2 -0
- package/dist/runtime/extensions/code-preview.js +17 -0
- package/dist/runtime/extensions/code-tree.d.ts +2 -0
- package/dist/runtime/extensions/code-tree.js +33 -0
- package/dist/runtime/extensions/doc-embed.d.ts +12 -0
- package/dist/runtime/extensions/doc-embed.js +63 -0
- package/dist/runtime/extensions/doc-link-drop.d.ts +3 -0
- package/dist/runtime/extensions/doc-link-drop.js +63 -0
- package/dist/runtime/extensions/document-header.js +1 -1
- package/dist/runtime/extensions/field.d.ts +3 -0
- package/dist/runtime/extensions/field.js +53 -0
- package/dist/runtime/extensions/mention-drop.d.ts +8 -0
- package/dist/runtime/extensions/mention-drop.js +47 -0
- package/dist/runtime/extensions/meta-field.d.ts +4 -1
- package/dist/runtime/extensions/meta-field.js +2 -0
- package/dist/runtime/extensions/selection-drag.d.ts +13 -0
- package/dist/runtime/extensions/selection-drag.js +126 -0
- package/dist/runtime/extensions/steps.js +1 -1
- package/dist/runtime/extensions/views/AccordionItemView.vue +14 -3
- package/dist/runtime/extensions/views/AccordionView.vue +4 -1
- package/dist/runtime/extensions/views/BadgeView.vue +12 -2
- package/dist/runtime/extensions/views/CalloutView.vue +4 -1
- package/dist/runtime/extensions/views/CardGroupView.vue +4 -1
- package/dist/runtime/extensions/views/CardView.vue +18 -3
- package/dist/runtime/extensions/views/CodeCollapseView.vue +1 -0
- package/dist/runtime/extensions/views/CodeGroupView.vue +5 -1
- package/dist/runtime/extensions/views/CodePreviewView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/CodePreviewView.vue +48 -0
- package/dist/runtime/extensions/views/CodePreviewView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/CodeTreeView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/CodeTreeView.vue +88 -0
- package/dist/runtime/extensions/views/CodeTreeView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/CollapsibleView.vue +9 -2
- package/dist/runtime/extensions/views/DocEmbedView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/DocEmbedView.vue +198 -0
- package/dist/runtime/extensions/views/DocEmbedView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/FieldGroupView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/FieldGroupView.vue +25 -0
- package/dist/runtime/extensions/views/FieldGroupView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/FieldView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/FieldView.vue +53 -0
- package/dist/runtime/extensions/views/FieldView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/FileNodeView.vue +34 -8
- package/dist/runtime/extensions/views/KbdView.vue +9 -2
- package/dist/runtime/extensions/views/MetaFieldView.vue +276 -48
- package/dist/runtime/extensions/views/ProseIconView.vue +9 -2
- package/dist/runtime/extensions/views/StepsView.vue +1 -0
- package/dist/runtime/extensions/views/TabsView.vue +18 -4
- package/dist/runtime/locale.d.ts +136 -0
- package/dist/runtime/locale.js +137 -1
- package/dist/runtime/middleware/abracadabra-auth.d.ts +1 -10
- package/dist/runtime/middleware/abracadabra-auth.js +2 -0
- package/dist/runtime/plugin-abracadabra.client.d.ts +1 -1
- package/dist/runtime/plugin-abracadabra.client.js +127 -55
- package/dist/runtime/plugin-abracadabra.server.d.ts +1 -1
- package/dist/runtime/plugin-abracadabra.server.js +4 -0
- package/dist/runtime/plugin-shared-globals.client.d.ts +1 -1
- package/dist/runtime/plugin-shared-globals.client.js +1 -0
- package/dist/runtime/plugins/core.plugin.js +40 -4
- package/dist/runtime/server/api/_abracadabra/render/[docId].get.d.ts +19 -17
- package/dist/runtime/server/api/_abracadabra/render/[docId].get.js +33 -4
- package/dist/runtime/server/api/_abracadabra/resolve/[...slug].get.d.ts +12 -0
- package/dist/runtime/server/api/_abracadabra/resolve/[...slug].get.js +44 -0
- package/dist/runtime/server/api/_abracadabra/slugs.get.d.ts +2 -0
- package/dist/runtime/server/api/_abracadabra/slugs.get.js +8 -0
- package/dist/runtime/server/api/_abracadabra/spaces.get.d.ts +1 -10
- package/dist/runtime/server/api/_abracadabra/spaces.get.js +3 -0
- package/dist/runtime/server/plugins/abracadabra-service.js +29 -12
- package/dist/runtime/server/runners/doc-tree-cache.js +4 -0
- package/dist/runtime/server/utils/docCache.d.ts +8 -6
- package/dist/runtime/server/utils/docCache.js +3 -3
- package/dist/runtime/server/utils/serverPluginLoader.d.ts +20 -0
- package/dist/runtime/server/utils/serverPluginLoader.js +42 -0
- package/dist/runtime/server/utils/serverRunner.d.ts +11 -2
- package/dist/runtime/server/utils/serverRunner.js +21 -10
- package/dist/runtime/server/utils/slugMap.d.ts +32 -0
- package/dist/runtime/server/utils/slugMap.js +58 -0
- package/dist/runtime/server/utils/spaceManager.d.ts +25 -0
- package/dist/runtime/server/utils/spaceManager.js +188 -0
- package/dist/runtime/types.d.ts +129 -30
- package/dist/runtime/types.js +17 -17
- package/dist/runtime/utils/chatContent.d.ts +41 -0
- package/dist/runtime/utils/chatContent.js +65 -0
- package/dist/runtime/utils/colorPalettes.js +12 -6
- package/dist/runtime/utils/coverCache.d.ts +12 -0
- package/dist/runtime/utils/coverCache.js +14 -0
- package/dist/runtime/utils/docReferenceEdges.d.ts +26 -0
- package/dist/runtime/utils/docReferenceEdges.js +122 -0
- package/dist/runtime/utils/docTypes.d.ts +34 -1
- package/dist/runtime/utils/docTypes.js +129 -1
- package/dist/runtime/utils/duplicateDocContent.d.ts +19 -0
- package/dist/runtime/utils/duplicateDocContent.js +68 -0
- package/dist/runtime/utils/extractFileMetadata.d.ts +13 -0
- package/dist/runtime/utils/extractFileMetadata.js +94 -0
- package/dist/runtime/utils/getMetaColor.d.ts +6 -0
- package/dist/runtime/utils/getMetaColor.js +12 -0
- package/dist/runtime/utils/htmlToYjs.d.ts +19 -0
- package/dist/runtime/utils/htmlToYjs.js +235 -0
- package/dist/runtime/utils/markdownToYjs.js +5 -5
- package/dist/runtime/utils/metaFieldDefinitions.js +9 -0
- package/dist/runtime/utils/notificationRenderers.d.ts +13 -0
- package/dist/runtime/utils/notificationRenderers.js +41 -0
- package/dist/runtime/utils/sdkRef.d.ts +12 -0
- package/dist/runtime/utils/sdkRef.js +7 -0
- package/dist/runtime/utils/slugify.d.ts +40 -0
- package/dist/runtime/utils/slugify.js +36 -0
- package/dist/types.d.mts +18 -0
- package/package.json +44 -32
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { shallowRef, ref, computed, watch } from "vue";
|
|
2
|
+
import { defineNuxtPlugin, useRuntimeConfig, useAppConfig, navigateTo } from "#imports";
|
|
2
3
|
import * as Y from "yjs";
|
|
3
4
|
import { PluginRegistry } from "./plugin-registry.js";
|
|
4
5
|
import { corePlugin } from "./plugins/core.plugin.js";
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
} from "./composables/useBackgroundSync.js";
|
|
15
16
|
import {
|
|
16
17
|
_initFileBlobStore,
|
|
18
|
+
_getFileBlobStore,
|
|
17
19
|
_destroyFileBlobStore
|
|
18
20
|
} from "./composables/useFileBlobStore.js";
|
|
19
21
|
import {
|
|
@@ -34,6 +36,19 @@ import {
|
|
|
34
36
|
_initFileIndex,
|
|
35
37
|
_destroyFileIndex
|
|
36
38
|
} from "./composables/useFileIndex.js";
|
|
39
|
+
import {
|
|
40
|
+
_initBroadcastSync,
|
|
41
|
+
_destroyBroadcastSync,
|
|
42
|
+
useBroadcastSync
|
|
43
|
+
} from "./composables/useBroadcastSync.js";
|
|
44
|
+
import {
|
|
45
|
+
_destroyWebRTC
|
|
46
|
+
} from "./composables/useWebRTC.js";
|
|
47
|
+
import {
|
|
48
|
+
_initServerInfo,
|
|
49
|
+
_destroyServerInfo
|
|
50
|
+
} from "./composables/useServerInfo.js";
|
|
51
|
+
import { setSdkModule } from "./utils/sdkRef.js";
|
|
37
52
|
const NUXT_UI_PRIMARY_COLORS = /* @__PURE__ */ new Set([
|
|
38
53
|
"red",
|
|
39
54
|
"orange",
|
|
@@ -176,8 +191,9 @@ export default defineNuxtPlugin({
|
|
|
176
191
|
}
|
|
177
192
|
} catch (e) {
|
|
178
193
|
console.error(`[abracadabra] Failed to load plugin from ${entry.url}:`, e);
|
|
194
|
+
const errMsg = e instanceof Error ? e.message : String(e);
|
|
179
195
|
const updated = storedExternal.map(
|
|
180
|
-
(en) => en.url === entry.url ? { ...en, error:
|
|
196
|
+
(en) => en.url === entry.url ? { ...en, error: errMsg } : en
|
|
181
197
|
);
|
|
182
198
|
localStorage.setItem(STORAGE_KEY_EXTERNAL_PLUGINS, JSON.stringify(updated));
|
|
183
199
|
}
|
|
@@ -196,13 +212,18 @@ export default defineNuxtPlugin({
|
|
|
196
212
|
const isReady = ref(false);
|
|
197
213
|
const publicKeyB64 = ref("");
|
|
198
214
|
const connectionError = ref(null);
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
const
|
|
215
|
+
const identityState = ref("initializing");
|
|
216
|
+
let _identityStateBeforeBlock = "initializing";
|
|
217
|
+
const isClaimed = computed(() => identityState.value === "claimed");
|
|
218
|
+
const identityLost = computed(() => identityState.value === "identityLost");
|
|
219
|
+
const needsReauth = computed(() => identityState.value === "needsReauth");
|
|
220
|
+
const isConnectionBlocked = computed(() => identityState.value === "connectionBlocked");
|
|
202
221
|
const requirePasskeyOnLogin = ref(false);
|
|
203
|
-
const isConnectionBlocked = ref(false);
|
|
204
222
|
const userCount = ref(1);
|
|
205
223
|
const pendingInviteCode = ref(null);
|
|
224
|
+
const effectiveRole = ref(null);
|
|
225
|
+
const unsyncedChanges = ref(0);
|
|
226
|
+
const spaceDocId = ref(null);
|
|
206
227
|
const userName = ref(localStorage.getItem("abracadabra_username") || randomName(abraConfig));
|
|
207
228
|
const userColor = ref("hsl(217, 70%, 75%)");
|
|
208
229
|
const userColorName = ref("blue");
|
|
@@ -217,7 +238,10 @@ export default defineNuxtPlugin({
|
|
|
217
238
|
let lastClientIds = /* @__PURE__ */ new Set();
|
|
218
239
|
const clientNameCache = /* @__PURE__ */ new Map();
|
|
219
240
|
function addLog(message, type = "system") {
|
|
220
|
-
logs.value
|
|
241
|
+
logs.value.push({ time: ts(), message, type });
|
|
242
|
+
if (logs.value.length > 250) {
|
|
243
|
+
logs.value = logs.value.slice(-200);
|
|
244
|
+
}
|
|
221
245
|
}
|
|
222
246
|
function loadServers() {
|
|
223
247
|
if (_serversLoaded) return;
|
|
@@ -331,7 +355,9 @@ export default defineNuxtPlugin({
|
|
|
331
355
|
function reconnect() {
|
|
332
356
|
if (!_wsp) return;
|
|
333
357
|
authFailureCount = 0;
|
|
334
|
-
|
|
358
|
+
if (identityState.value === "connectionBlocked") {
|
|
359
|
+
identityState.value = _identityStateBeforeBlock;
|
|
360
|
+
}
|
|
335
361
|
connectionError.value = null;
|
|
336
362
|
_wsp.connect();
|
|
337
363
|
}
|
|
@@ -345,7 +371,6 @@ export default defineNuxtPlugin({
|
|
|
345
371
|
provider.value.destroy();
|
|
346
372
|
} catch {
|
|
347
373
|
}
|
|
348
|
-
;
|
|
349
374
|
provider.value = null;
|
|
350
375
|
}
|
|
351
376
|
client.value = null;
|
|
@@ -353,7 +378,9 @@ export default defineNuxtPlugin({
|
|
|
353
378
|
isReady.value = false;
|
|
354
379
|
synced.value = false;
|
|
355
380
|
status.value = "disconnected";
|
|
356
|
-
|
|
381
|
+
if (identityState.value === "connectionBlocked") {
|
|
382
|
+
identityState.value = _identityStateBeforeBlock;
|
|
383
|
+
}
|
|
357
384
|
connectionError.value = null;
|
|
358
385
|
authFailureCount = 0;
|
|
359
386
|
lastClientIds = /* @__PURE__ */ new Set();
|
|
@@ -365,6 +392,9 @@ export default defineNuxtPlugin({
|
|
|
365
392
|
_destroyNotifications();
|
|
366
393
|
_destroyChat();
|
|
367
394
|
_destroyFileIndex();
|
|
395
|
+
_destroyBroadcastSync();
|
|
396
|
+
_destroyWebRTC();
|
|
397
|
+
_destroyServerInfo();
|
|
368
398
|
}
|
|
369
399
|
async function switchServer(url) {
|
|
370
400
|
if (url === currentServerUrl.value) return;
|
|
@@ -378,9 +408,9 @@ export default defineNuxtPlugin({
|
|
|
378
408
|
_initPromise = init(url);
|
|
379
409
|
await _initPromise;
|
|
380
410
|
}
|
|
381
|
-
async function switchSpace(serverUrl,
|
|
411
|
+
async function switchSpace(serverUrl, spaceDocId2) {
|
|
382
412
|
if (serverUrl !== currentServerUrl.value) await switchServer(serverUrl);
|
|
383
|
-
await navigateTo(`${abraConfig.docBasePath ?? "/doc"}/${
|
|
413
|
+
await navigateTo(`${abraConfig.docBasePath ?? "/doc"}/${spaceDocId2}`);
|
|
384
414
|
}
|
|
385
415
|
async function claimAccount() {
|
|
386
416
|
if (!client.value || !keystore.value) {
|
|
@@ -400,15 +430,14 @@ export default defineNuxtPlugin({
|
|
|
400
430
|
deviceName: "Hardware Auth (" + (navigator.platform || "Device") + ")"
|
|
401
431
|
});
|
|
402
432
|
publicKeyB64.value = newPubKey;
|
|
403
|
-
|
|
404
|
-
identityLost.value = false;
|
|
433
|
+
identityState.value = "claimed";
|
|
405
434
|
localStorage.removeItem("abracadabra_privkey");
|
|
406
435
|
localStorage.setItem(CLAIMED_FLAG_KEY, "1");
|
|
407
436
|
localStorage.setItem(PUBKEY_KEY, newPubKey);
|
|
408
437
|
addLog("Account protected by hardware/biometrics", "auth");
|
|
409
438
|
return true;
|
|
410
439
|
} catch (e) {
|
|
411
|
-
addLog(`Claim failed: ${e.message}`, "auth");
|
|
440
|
+
addLog(`Claim failed: ${e instanceof Error ? e.message : String(e)}`, "auth");
|
|
412
441
|
throw e;
|
|
413
442
|
}
|
|
414
443
|
}
|
|
@@ -430,9 +459,8 @@ export default defineNuxtPlugin({
|
|
|
430
459
|
pubKey = hasPk ? await keystore.value.getPublicKey() : null;
|
|
431
460
|
}
|
|
432
461
|
if (!hasPk || !pubKey) throw new Error("No passkey found on this device.");
|
|
433
|
-
if (
|
|
434
|
-
|
|
435
|
-
isClaimed.value = true;
|
|
462
|
+
if (identityState.value === "identityLost") {
|
|
463
|
+
identityState.value = "claimed";
|
|
436
464
|
localStorage.setItem(CLAIMED_FLAG_KEY, "1");
|
|
437
465
|
localStorage.setItem(PUBKEY_KEY, pubKey);
|
|
438
466
|
addLog("Identity recovered via hardware key \u2014 reinitializing", "auth");
|
|
@@ -446,8 +474,7 @@ export default defineNuxtPlugin({
|
|
|
446
474
|
const oldPubKey = publicKeyB64.value;
|
|
447
475
|
await client.value.loginWithKey(pubKey, (ch) => keystore.value.sign(ch));
|
|
448
476
|
publicKeyB64.value = pubKey;
|
|
449
|
-
|
|
450
|
-
needsReauth.value = false;
|
|
477
|
+
identityState.value = "claimed";
|
|
451
478
|
localStorage.setItem(CLAIMED_FLAG_KEY, "1");
|
|
452
479
|
localStorage.setItem(PUBKEY_KEY, pubKey);
|
|
453
480
|
addLog("Re-authenticated via hardware key", "auth");
|
|
@@ -462,7 +489,7 @@ export default defineNuxtPlugin({
|
|
|
462
489
|
}
|
|
463
490
|
return true;
|
|
464
491
|
} catch (e) {
|
|
465
|
-
addLog(`Hardware login failed: ${e.message}`, "auth");
|
|
492
|
+
addLog(`Hardware login failed: ${e instanceof Error ? e.message : String(e)}`, "auth");
|
|
466
493
|
throw e;
|
|
467
494
|
}
|
|
468
495
|
}
|
|
@@ -516,6 +543,31 @@ export default defineNuxtPlugin({
|
|
|
516
543
|
if (!client.value) throw new Error("Not connected");
|
|
517
544
|
return client.value.revokeInvite(code);
|
|
518
545
|
}
|
|
546
|
+
async function recoverIdentity() {
|
|
547
|
+
if (identityState.value !== "identityLost" && identityState.value !== "needsReauth") {
|
|
548
|
+
return false;
|
|
549
|
+
}
|
|
550
|
+
if (keystore.value) {
|
|
551
|
+
try {
|
|
552
|
+
const hasPk = await keystore.value.hasIdentity();
|
|
553
|
+
if (hasPk) {
|
|
554
|
+
const result = await loginWithHardware();
|
|
555
|
+
return result;
|
|
556
|
+
}
|
|
557
|
+
} catch (e) {
|
|
558
|
+
addLog(`Silent passkey recovery failed: ${e instanceof Error ? e.message : String(e)}`, "auth");
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
return false;
|
|
562
|
+
}
|
|
563
|
+
function unblockConnection() {
|
|
564
|
+
authFailureCount = 0;
|
|
565
|
+
if (identityState.value === "connectionBlocked") {
|
|
566
|
+
identityState.value = _identityStateBeforeBlock;
|
|
567
|
+
}
|
|
568
|
+
connectionError.value = null;
|
|
569
|
+
if (_wsp) _wsp.connect();
|
|
570
|
+
}
|
|
519
571
|
async function init(serverUrl) {
|
|
520
572
|
currentServerUrl.value = serverUrl;
|
|
521
573
|
addLog("Initializing Abracadabra...", "system");
|
|
@@ -530,7 +582,7 @@ export default defineNuxtPlugin({
|
|
|
530
582
|
}
|
|
531
583
|
try {
|
|
532
584
|
const [
|
|
533
|
-
|
|
585
|
+
sdkModule,
|
|
534
586
|
ed,
|
|
535
587
|
{ sha512 }
|
|
536
588
|
] = await Promise.all([
|
|
@@ -538,7 +590,9 @@ export default defineNuxtPlugin({
|
|
|
538
590
|
import("@noble/ed25519"),
|
|
539
591
|
import("@noble/hashes/sha512")
|
|
540
592
|
]);
|
|
541
|
-
|
|
593
|
+
setSdkModule(sdkModule);
|
|
594
|
+
const { AbracadabraClient, AbracadabraProvider, AbracadabraWS, CryptoIdentityKeystore } = sdkModule;
|
|
595
|
+
ed.hashes.sha512 = (m) => sha512(m);
|
|
542
596
|
const ks = new CryptoIdentityKeystore();
|
|
543
597
|
keystore.value = ks;
|
|
544
598
|
let privKey = null;
|
|
@@ -551,12 +605,10 @@ export default defineNuxtPlugin({
|
|
|
551
605
|
requirePasskeyOnLogin.value = localStorage.getItem(REQUIRE_PASSKEY_KEY) === "1";
|
|
552
606
|
if (wasPreviouslyClaimed && storedPubKey) {
|
|
553
607
|
pubKey = storedPubKey;
|
|
554
|
-
|
|
555
|
-
identityLost.value = false;
|
|
608
|
+
identityState.value = "claimed";
|
|
556
609
|
addLog("Restored claimed identity from cache", "auth");
|
|
557
610
|
} else if (wasPreviouslyClaimed && !storedPubKey) {
|
|
558
|
-
|
|
559
|
-
isClaimed.value = false;
|
|
611
|
+
identityState.value = "identityLost";
|
|
560
612
|
addLog("Previously claimed account \u2014 cached key missing, waiting for recovery", "auth");
|
|
561
613
|
publicKeyB64.value = "";
|
|
562
614
|
return;
|
|
@@ -566,12 +618,11 @@ export default defineNuxtPlugin({
|
|
|
566
618
|
privKey = fromBase64Url(storedPrivKey);
|
|
567
619
|
addLog("Using guest identity (soft key)", "auth");
|
|
568
620
|
} else {
|
|
569
|
-
privKey = ed.utils.
|
|
621
|
+
privKey = ed.utils.randomSecretKey();
|
|
570
622
|
localStorage.setItem("abracadabra_privkey", toBase64Url(privKey));
|
|
571
623
|
addLog("Created new guest identity (soft key)", "auth");
|
|
572
624
|
}
|
|
573
|
-
|
|
574
|
-
identityLost.value = false;
|
|
625
|
+
identityState.value = "guest";
|
|
575
626
|
const pubKeyBytes = ed.getPublicKey(privKey);
|
|
576
627
|
pubKey = toBase64Url(pubKeyBytes);
|
|
577
628
|
}
|
|
@@ -612,13 +663,12 @@ export default defineNuxtPlugin({
|
|
|
612
663
|
const _client = new AbracadabraClient({ url: serverUrl, persistAuth, storageKey: authStorageKey });
|
|
613
664
|
client.value = _client;
|
|
614
665
|
addLog(`Server: ${serverUrl}`, "connection");
|
|
615
|
-
if (_client.
|
|
666
|
+
if (_client.isTokenValid() && identityState.value === "claimed") {
|
|
616
667
|
addLog("Resumed session from persisted token", "auth");
|
|
617
|
-
} else if (
|
|
618
|
-
|
|
668
|
+
} else if (identityState.value === "claimed" && !requirePasskeyOnLogin.value) {
|
|
669
|
+
identityState.value = "needsReauth";
|
|
619
670
|
addLog("Session expired \u2014 passkey sign-in available", "auth");
|
|
620
671
|
} else {
|
|
621
|
-
needsReauth.value = false;
|
|
622
672
|
try {
|
|
623
673
|
await _client.registerWithKey({
|
|
624
674
|
publicKey: pubKey,
|
|
@@ -631,14 +681,15 @@ export default defineNuxtPlugin({
|
|
|
631
681
|
pendingInviteCode.value = null;
|
|
632
682
|
}
|
|
633
683
|
} catch (e) {
|
|
634
|
-
|
|
684
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
685
|
+
if (!msg.includes("already exists")) addLog(`Register: ${msg}`, "auth");
|
|
635
686
|
}
|
|
636
687
|
try {
|
|
637
688
|
const token = await _client.loginWithKey(pubKey, (ch) => signChallengeFn(ch));
|
|
638
689
|
addLog("Authenticated via Ed25519 challenge-response", "auth");
|
|
639
690
|
addLog(`JWT obtained (${token.slice(0, 12)}...)`, "auth");
|
|
640
691
|
} catch (e) {
|
|
641
|
-
addLog(`Login failed: ${e.message}`, "auth");
|
|
692
|
+
addLog(`Login failed: ${e instanceof Error ? e.message : String(e)}`, "auth");
|
|
642
693
|
}
|
|
643
694
|
}
|
|
644
695
|
_client.updateMe({ displayName: userName.value }).catch(() => {
|
|
@@ -662,21 +713,22 @@ export default defineNuxtPlugin({
|
|
|
662
713
|
}
|
|
663
714
|
}
|
|
664
715
|
const server = savedServers.value.find((s) => s.url === serverUrl);
|
|
665
|
-
|
|
716
|
+
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;
|
|
666
717
|
if (!docId) {
|
|
667
718
|
connectionError.value = "No entry document found. Configure entryDocId or ensure the server has spaces or an index document.";
|
|
668
719
|
addLog("No entry document \u2014 cannot connect", "system");
|
|
669
720
|
try {
|
|
670
|
-
const
|
|
671
|
-
useToast().add({ title: "Server not configured", description: "No entry document found. Set entryDocId in your abracadabra module config.", color: "error" });
|
|
721
|
+
const imports = await import("#imports");
|
|
722
|
+
imports.useToast().add({ title: "Server not configured", description: "No entry document found. Set entryDocId in your abracadabra module config.", color: "error" });
|
|
672
723
|
} catch {
|
|
673
724
|
}
|
|
674
725
|
return;
|
|
675
726
|
}
|
|
676
727
|
addLog(`Using document: ${docId}`, "data");
|
|
728
|
+
spaceDocId.value = docId;
|
|
677
729
|
const wsUrl = _client.wsUrl;
|
|
678
730
|
addLog(`WebSocket: ${wsUrl}`, "connection");
|
|
679
|
-
const wsp = new
|
|
731
|
+
const wsp = new AbracadabraWS({
|
|
680
732
|
url: wsUrl,
|
|
681
733
|
delay: 1e3,
|
|
682
734
|
minDelay: 1e3,
|
|
@@ -715,8 +767,8 @@ export default defineNuxtPlugin({
|
|
|
715
767
|
if (wasConnected && !wasSynced) {
|
|
716
768
|
addLog("Reconnected", "connection");
|
|
717
769
|
try {
|
|
718
|
-
import("#imports").then((
|
|
719
|
-
useToast().add({ title: "Reconnected", color: "success", duration: 2e3 });
|
|
770
|
+
import("#imports").then((imports) => {
|
|
771
|
+
imports.useToast().add({ title: "Reconnected", color: "success", duration: 2e3 });
|
|
720
772
|
}).catch(() => {
|
|
721
773
|
});
|
|
722
774
|
} catch {
|
|
@@ -726,8 +778,9 @@ export default defineNuxtPlugin({
|
|
|
726
778
|
if (!wasSynced && features.backgroundSync !== false) {
|
|
727
779
|
import("@abraca/dabra").then(({ BackgroundSyncManager }) => {
|
|
728
780
|
if (_client && _provider) {
|
|
729
|
-
const manager = new BackgroundSyncManager(_client,
|
|
781
|
+
const manager = new BackgroundSyncManager(_provider, _client, _getFileBlobStore());
|
|
730
782
|
_initBackgroundSync(manager);
|
|
783
|
+
manager.syncAll().catch(() => null);
|
|
731
784
|
if (features.search !== false) {
|
|
732
785
|
_initSearchIndex(serverUrl);
|
|
733
786
|
_initFileIndex();
|
|
@@ -736,6 +789,12 @@ export default defineNuxtPlugin({
|
|
|
736
789
|
}).catch(() => {
|
|
737
790
|
});
|
|
738
791
|
}
|
|
792
|
+
if (features.broadcastSync !== false) {
|
|
793
|
+
const { BroadcastChannelSync } = sdkModule ?? {};
|
|
794
|
+
if (BroadcastChannelSync && _provider && _doc) {
|
|
795
|
+
_initBroadcastSync(BroadcastChannelSync, _doc, docId, _provider.awareness);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
739
798
|
try {
|
|
740
799
|
_provider.sendStateless?.(JSON.stringify({ type: "notify:fetch", limit: 20 }));
|
|
741
800
|
} catch {
|
|
@@ -754,11 +813,13 @@ export default defineNuxtPlugin({
|
|
|
754
813
|
const cutoff = Date.now() - purgeDays * 24 * 60 * 60 * 1e3;
|
|
755
814
|
const expired = [];
|
|
756
815
|
trashMap.forEach((val, key) => {
|
|
757
|
-
if (val
|
|
758
|
-
});
|
|
759
|
-
if (expired.length) _doc.transact(() => {
|
|
760
|
-
for (const id of expired) trashMap.delete(id);
|
|
816
|
+
if (val && typeof val === "object" && "deletedAt" in val && typeof val.deletedAt === "number" && val.deletedAt < cutoff) expired.push(key);
|
|
761
817
|
});
|
|
818
|
+
if (expired.length) {
|
|
819
|
+
_doc.transact(() => {
|
|
820
|
+
for (const id of expired) trashMap.delete(id);
|
|
821
|
+
});
|
|
822
|
+
}
|
|
762
823
|
}
|
|
763
824
|
} catch {
|
|
764
825
|
}
|
|
@@ -766,6 +827,7 @@ export default defineNuxtPlugin({
|
|
|
766
827
|
},
|
|
767
828
|
onAuthenticated({ scope }) {
|
|
768
829
|
addLog(`Scope: ${scope}`, "auth");
|
|
830
|
+
effectiveRole.value = scope;
|
|
769
831
|
connectionError.value = null;
|
|
770
832
|
authFailureCount = 0;
|
|
771
833
|
},
|
|
@@ -774,7 +836,8 @@ export default defineNuxtPlugin({
|
|
|
774
836
|
const msg = reason || "Authentication failed";
|
|
775
837
|
const isPermanent = /disabled|not allowed|forbidden|revoked/i.test(msg);
|
|
776
838
|
if (isPermanent || authFailureCount >= AUTH_FAILURE_LIMIT) {
|
|
777
|
-
|
|
839
|
+
_identityStateBeforeBlock = identityState.value;
|
|
840
|
+
identityState.value = "connectionBlocked";
|
|
778
841
|
connectionError.value = `${msg} \u2014 reconnection paused`;
|
|
779
842
|
addLog(`Auth denied \u2014 pausing reconnect: ${msg}`, "auth");
|
|
780
843
|
wsp.disconnect();
|
|
@@ -810,22 +873,24 @@ export default defineNuxtPlugin({
|
|
|
810
873
|
}
|
|
811
874
|
});
|
|
812
875
|
_provider.setAwarenessField("user", { name: userName.value, color: userColor.value, publicKey: publicKeyB64.value });
|
|
876
|
+
_provider.on("unsyncedChanges", ({ number }) => {
|
|
877
|
+
unsyncedChanges.value = number;
|
|
878
|
+
});
|
|
813
879
|
_provider.attach();
|
|
814
880
|
provider.value = _provider;
|
|
815
881
|
try {
|
|
816
882
|
const { FileBlobStore } = await import("@abraca/dabra");
|
|
817
|
-
const blobStore = new FileBlobStore(_client);
|
|
883
|
+
const blobStore = new FileBlobStore(serverUrl, _client);
|
|
818
884
|
_initFileBlobStore(blobStore);
|
|
819
885
|
} catch {
|
|
820
886
|
}
|
|
887
|
+
_initServerInfo(_client);
|
|
821
888
|
_initNotifications(publicKeyB64);
|
|
822
889
|
_initChat(publicKeyB64, userName);
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
};
|
|
828
|
-
}
|
|
890
|
+
_provider.on("stateless", ({ payload }) => {
|
|
891
|
+
_handleStatelessNotification(payload);
|
|
892
|
+
_handleStatelessChat(payload);
|
|
893
|
+
});
|
|
829
894
|
_provider.ready.then(() => {
|
|
830
895
|
isReady.value = true;
|
|
831
896
|
}, () => null);
|
|
@@ -838,12 +903,13 @@ export default defineNuxtPlugin({
|
|
|
838
903
|
);
|
|
839
904
|
addLog("Provider attached, connecting...", "connection");
|
|
840
905
|
} catch (e) {
|
|
841
|
-
addLog(`Error: ${e.message}`, "system");
|
|
906
|
+
addLog(`Error: ${e instanceof Error ? e.message : String(e)}`, "system");
|
|
842
907
|
console.error("[abracadabra] init error:", e);
|
|
843
908
|
}
|
|
844
909
|
}
|
|
845
910
|
const abra = {
|
|
846
911
|
doc,
|
|
912
|
+
spaceDocId,
|
|
847
913
|
provider,
|
|
848
914
|
client,
|
|
849
915
|
keystore,
|
|
@@ -858,9 +924,12 @@ export default defineNuxtPlugin({
|
|
|
858
924
|
userCount,
|
|
859
925
|
publicKeyB64,
|
|
860
926
|
connectionError,
|
|
927
|
+
identityState,
|
|
861
928
|
isClaimed,
|
|
862
929
|
identityLost,
|
|
863
930
|
needsReauth,
|
|
931
|
+
effectiveRole,
|
|
932
|
+
unsyncedChanges,
|
|
864
933
|
requirePasskeyOnLogin,
|
|
865
934
|
isConnectionBlocked,
|
|
866
935
|
currentServerUrl,
|
|
@@ -890,6 +959,9 @@ export default defineNuxtPlugin({
|
|
|
890
959
|
createInvite,
|
|
891
960
|
listInvites,
|
|
892
961
|
revokeInvite,
|
|
962
|
+
recoverIdentity,
|
|
963
|
+
unblockConnection,
|
|
964
|
+
broadcastSyncActive: useBroadcastSync().isActive,
|
|
893
965
|
init
|
|
894
966
|
};
|
|
895
967
|
nuxtApp.provide("abracadabra", abra);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: import("#app").Plugin<Record<string, unknown>> & import("#app").ObjectPlugin<Record<string, unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { shallowRef, ref, computed } from "vue";
|
|
2
|
+
import { defineNuxtPlugin } from "#imports";
|
|
2
3
|
import { PluginRegistry } from "./plugin-registry.js";
|
|
3
4
|
export default defineNuxtPlugin({
|
|
4
5
|
name: "abracadabra:server-stub",
|
|
@@ -13,6 +14,7 @@ export default defineNuxtPlugin({
|
|
|
13
14
|
nuxtApp.provide("abracadabra", {
|
|
14
15
|
// CRDT objects — null on server
|
|
15
16
|
doc: shallowRef(null),
|
|
17
|
+
spaceDocId: ref(null),
|
|
16
18
|
provider: shallowRef(null),
|
|
17
19
|
client: shallowRef(null),
|
|
18
20
|
keystore: shallowRef(null),
|
|
@@ -43,6 +45,8 @@ export default defineNuxtPlugin({
|
|
|
43
45
|
logs: ref([]),
|
|
44
46
|
// Plugin registry (empty, frozen)
|
|
45
47
|
registry,
|
|
48
|
+
// Sync state
|
|
49
|
+
broadcastSyncActive: ref(false),
|
|
46
50
|
// Methods — all no-ops on server
|
|
47
51
|
addLog: noop,
|
|
48
52
|
setUserName: noop,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: import("#app").Plugin<Record<string, unknown>> & import("#app").ObjectPlugin<Record<string, unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -33,7 +33,14 @@ async function loadClientExtensions() {
|
|
|
33
33
|
{ Kbd },
|
|
34
34
|
{ ProseIcon },
|
|
35
35
|
{ FileBlock },
|
|
36
|
-
{ MetaField }
|
|
36
|
+
{ MetaField },
|
|
37
|
+
{ DocEmbed },
|
|
38
|
+
{ DocLinkDrop },
|
|
39
|
+
{ MentionDrop },
|
|
40
|
+
{ SelectionDrag },
|
|
41
|
+
{ Field, FieldGroup },
|
|
42
|
+
{ CodePreview },
|
|
43
|
+
{ CodeTree }
|
|
37
44
|
] = await Promise.all([
|
|
38
45
|
import("@tiptap/extension-task-list"),
|
|
39
46
|
import("@tiptap/extension-task-item"),
|
|
@@ -67,10 +74,17 @@ async function loadClientExtensions() {
|
|
|
67
74
|
import("../extensions/kbd.js"),
|
|
68
75
|
import("../extensions/prose-icon.js"),
|
|
69
76
|
import("../extensions/file-block.js"),
|
|
70
|
-
import("../extensions/meta-field.js")
|
|
77
|
+
import("../extensions/meta-field.js"),
|
|
78
|
+
import("../extensions/doc-embed.js"),
|
|
79
|
+
import("../extensions/doc-link-drop.js"),
|
|
80
|
+
import("../extensions/mention-drop.js"),
|
|
81
|
+
import("../extensions/selection-drag.js"),
|
|
82
|
+
import("../extensions/field.js"),
|
|
83
|
+
import("../extensions/code-preview.js"),
|
|
84
|
+
import("../extensions/code-tree.js")
|
|
71
85
|
]);
|
|
72
86
|
const lowlight = createLowlight(common);
|
|
73
|
-
|
|
87
|
+
const extensions = [
|
|
74
88
|
TaskList,
|
|
75
89
|
TaskItem.configure({ nested: true }),
|
|
76
90
|
Table.configure({ resizable: true }),
|
|
@@ -112,8 +126,29 @@ async function loadClientExtensions() {
|
|
|
112
126
|
// File block
|
|
113
127
|
FileBlock,
|
|
114
128
|
// Meta field chips (inline properties in documentMeta)
|
|
115
|
-
MetaField
|
|
129
|
+
MetaField,
|
|
130
|
+
// Document embeds & linking
|
|
131
|
+
DocEmbed,
|
|
132
|
+
DocLinkDrop,
|
|
133
|
+
MentionDrop,
|
|
134
|
+
SelectionDrag,
|
|
135
|
+
// Structured data fields
|
|
136
|
+
Field,
|
|
137
|
+
FieldGroup,
|
|
138
|
+
// Advanced code blocks
|
|
139
|
+
CodePreview,
|
|
140
|
+
CodeTree
|
|
116
141
|
];
|
|
142
|
+
try {
|
|
143
|
+
const emojiPkg = "@tiptap/extension-emoji";
|
|
144
|
+
const { Emoji } = await import(
|
|
145
|
+
/* @vite-ignore */
|
|
146
|
+
emojiPkg
|
|
147
|
+
);
|
|
148
|
+
if (Emoji) extensions.push(Emoji);
|
|
149
|
+
} catch {
|
|
150
|
+
}
|
|
151
|
+
return extensions;
|
|
117
152
|
}
|
|
118
153
|
async function loadServerExtensions() {
|
|
119
154
|
const [
|
|
@@ -136,6 +171,7 @@ async function loadServerExtensions() {
|
|
|
136
171
|
const lowlight = createLowlight(common);
|
|
137
172
|
return [
|
|
138
173
|
StarterKit.configure({
|
|
174
|
+
// @ts-expect-error StarterKit accepts history option at runtime
|
|
139
175
|
history: false,
|
|
140
176
|
codeBlock: false,
|
|
141
177
|
document: false
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
declare const _default: import("h3").EventHandler<Omit<import("h3").EventHandlerRequest, "body">, Promise<{
|
|
2
|
+
docId: string;
|
|
3
|
+
html: string;
|
|
4
|
+
title: any;
|
|
5
|
+
type: any;
|
|
6
|
+
meta: any;
|
|
7
|
+
description: any;
|
|
8
|
+
ogImage: any;
|
|
9
|
+
source: "crdt-cache";
|
|
10
|
+
} | {
|
|
11
|
+
docId: string;
|
|
12
|
+
html: string;
|
|
13
|
+
title: string;
|
|
14
|
+
type: string;
|
|
15
|
+
meta: Record<string, unknown>;
|
|
16
|
+
description: any;
|
|
17
|
+
ogImage: any;
|
|
18
|
+
source: "rest";
|
|
19
|
+
}>>;
|
|
18
20
|
export default _default;
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
import { createError, getRouterParam, getHeader } from "h3";
|
|
2
|
+
import { defineCachedEventHandler } from "nitropack/runtime";
|
|
3
|
+
import { useRuntimeConfig } from "nitropack/runtime/config";
|
|
4
|
+
import { useStorage } from "nitropack/runtime/storage";
|
|
5
|
+
function extractFirstParagraph(html) {
|
|
6
|
+
if (!html) return "";
|
|
7
|
+
const pMatch = html.match(/<p[^>]*>(.*?)<\/p>/is);
|
|
8
|
+
const raw = pMatch?.[1] ?? html;
|
|
9
|
+
const text = raw.replace(/<[^>]+>/g, "").replace(/&[a-z]+;/gi, " ").trim();
|
|
10
|
+
if (!text) return "";
|
|
11
|
+
return text.length > 160 ? text.slice(0, 157) + "..." : text;
|
|
12
|
+
}
|
|
13
|
+
function extractFirstImage(html) {
|
|
14
|
+
if (!html) return "";
|
|
15
|
+
const match = html.match(/<img[^>]+src=["']([^"']+)["']/i);
|
|
16
|
+
return match?.[1] ?? "";
|
|
17
|
+
}
|
|
18
|
+
let _maxAge = 60;
|
|
19
|
+
try {
|
|
20
|
+
_maxAge = useRuntimeConfig().public?.abracadabra?.server?.cacheMaxAge ?? 60;
|
|
21
|
+
} catch {
|
|
22
|
+
}
|
|
1
23
|
export default defineCachedEventHandler(async (event) => {
|
|
2
24
|
const config = useRuntimeConfig();
|
|
3
25
|
const baseUrl = config.public?.abracadabra?.url;
|
|
@@ -15,12 +37,15 @@ export default defineCachedEventHandler(async (event) => {
|
|
|
15
37
|
]);
|
|
16
38
|
if (cachedHtml !== null) {
|
|
17
39
|
const treeEntry = cachedJson?.["doc-tree"]?.[docId] ?? {};
|
|
40
|
+
const html2 = cachedHtml ?? "";
|
|
18
41
|
return {
|
|
19
42
|
docId,
|
|
20
|
-
html:
|
|
43
|
+
html: html2,
|
|
21
44
|
title: treeEntry.label ?? "",
|
|
22
45
|
type: treeEntry.type ?? "doc",
|
|
23
46
|
meta: treeEntry.meta ?? {},
|
|
47
|
+
description: treeEntry.meta?.note ?? treeEntry.meta?.description ?? extractFirstParagraph(html2),
|
|
48
|
+
ogImage: treeEntry.meta?.coverImage ?? extractFirstImage(html2),
|
|
24
49
|
source: "crdt-cache"
|
|
25
50
|
};
|
|
26
51
|
}
|
|
@@ -37,15 +62,19 @@ export default defineCachedEventHandler(async (event) => {
|
|
|
37
62
|
{ headers }
|
|
38
63
|
).catch(() => null)
|
|
39
64
|
]);
|
|
65
|
+
const html = exportRes?.html ?? "";
|
|
66
|
+
const meta = metaRes?.meta ?? {};
|
|
40
67
|
return {
|
|
41
68
|
docId,
|
|
42
|
-
html
|
|
69
|
+
html,
|
|
43
70
|
title: metaRes?.label ?? "",
|
|
44
71
|
type: metaRes?.type ?? "doc",
|
|
45
|
-
meta
|
|
72
|
+
meta,
|
|
73
|
+
description: meta?.note ?? meta?.description ?? extractFirstParagraph(html),
|
|
74
|
+
ogImage: meta?.coverImage ?? extractFirstImage(html),
|
|
46
75
|
source: "rest"
|
|
47
76
|
};
|
|
48
77
|
}, {
|
|
49
|
-
maxAge:
|
|
78
|
+
maxAge: _maxAge,
|
|
50
79
|
getKey: (event) => `abra:render:${getRouterParam(event, "docId")}`
|
|
51
80
|
});
|