@abraca/nuxt 1.8.2 → 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.
- package/README.md +27 -2
- package/dist/module.d.mts +4 -3
- package/dist/module.json +1 -1
- package/dist/module.mjs +50 -4
- package/dist/runtime/components/ADocumentTree.vue +1 -1
- package/dist/runtime/components/AEditor.d.vue.ts +26 -1
- package/dist/runtime/components/AEditor.vue +153 -4
- package/dist/runtime/components/AEditor.vue.d.ts +26 -1
- package/dist/runtime/components/AIdentityModal.d.vue.ts +46 -0
- package/dist/runtime/components/AIdentityModal.vue +157 -0
- package/dist/runtime/components/AIdentityModal.vue.d.ts +46 -0
- package/dist/runtime/components/AMnemonicLoginModal.d.vue.ts +35 -0
- package/dist/runtime/components/AMnemonicLoginModal.vue +173 -0
- package/dist/runtime/components/AMnemonicLoginModal.vue.d.ts +35 -0
- package/dist/runtime/components/ANodePanel.d.vue.ts +29 -2
- package/dist/runtime/components/ANodePanel.vue +148 -27
- package/dist/runtime/components/ANodePanel.vue.d.ts +29 -2
- package/dist/runtime/components/ANodePanelHeader.d.vue.ts +64 -0
- package/dist/runtime/components/ANodePanelHeader.vue +105 -0
- package/dist/runtime/components/ANodePanelHeader.vue.d.ts +64 -0
- package/dist/runtime/components/ANodeSettingsPanel.d.vue.ts +49 -0
- package/dist/runtime/components/ANodeSettingsPanel.vue +59 -0
- package/dist/runtime/components/ANodeSettingsPanel.vue.d.ts +49 -0
- package/dist/runtime/components/ANotificationBell.d.vue.ts +26 -0
- package/dist/runtime/components/ANotificationBell.vue +55 -0
- package/dist/runtime/components/ANotificationBell.vue.d.ts +26 -0
- package/dist/runtime/components/AOfflineSync.d.vue.ts +11 -0
- package/dist/runtime/components/AOfflineSync.vue +217 -0
- package/dist/runtime/components/AOfflineSync.vue.d.ts +11 -0
- package/dist/runtime/components/ARecoveryPhraseDisplay.d.vue.ts +26 -0
- package/dist/runtime/components/ARecoveryPhraseDisplay.vue +94 -0
- package/dist/runtime/components/ARecoveryPhraseDisplay.vue.d.ts +26 -0
- package/dist/runtime/components/AServerInfoModal.d.vue.ts +43 -0
- package/dist/runtime/components/AServerInfoModal.vue +150 -0
- package/dist/runtime/components/AServerInfoModal.vue.d.ts +43 -0
- package/dist/runtime/components/ASpaceFormModal.vue +1 -1
- package/dist/runtime/components/aware/AAccordion.d.vue.ts +25 -0
- package/dist/runtime/components/aware/AAccordion.vue +107 -0
- package/dist/runtime/components/aware/AAccordion.vue.d.ts +25 -0
- package/dist/runtime/components/aware/AArea.vue +24 -11
- package/dist/runtime/components/aware/AAvatar.d.vue.ts +6 -0
- package/dist/runtime/components/aware/AAvatar.vue +33 -3
- package/dist/runtime/components/aware/AAvatar.vue.d.ts +6 -0
- package/dist/runtime/components/aware/AAvatarGroup.d.vue.ts +10 -0
- package/dist/runtime/components/aware/AAvatarGroup.vue +30 -0
- package/dist/runtime/components/aware/AAvatarGroup.vue.d.ts +10 -0
- package/dist/runtime/components/aware/AButton.d.vue.ts +4 -2
- package/dist/runtime/components/aware/AButton.vue +46 -14
- package/dist/runtime/components/aware/AButton.vue.d.ts +4 -2
- package/dist/runtime/components/aware/ACalendar.d.vue.ts +17 -0
- package/dist/runtime/components/aware/ACalendar.vue +145 -0
- package/dist/runtime/components/aware/ACalendar.vue.d.ts +17 -0
- package/dist/runtime/components/aware/ACarousel.d.vue.ts +25 -0
- package/dist/runtime/components/aware/ACarousel.vue +39 -0
- package/dist/runtime/components/aware/ACarousel.vue.d.ts +25 -0
- package/dist/runtime/components/aware/ACheckbox.d.vue.ts +11 -0
- package/dist/runtime/components/aware/ACheckbox.vue +74 -0
- package/dist/runtime/components/aware/ACheckbox.vue.d.ts +11 -0
- package/dist/runtime/components/aware/ACheckboxGroup.d.vue.ts +27 -0
- package/dist/runtime/components/aware/ACheckboxGroup.vue +79 -0
- package/dist/runtime/components/aware/ACheckboxGroup.vue.d.ts +27 -0
- package/dist/runtime/components/aware/ACollapsible.d.vue.ts +25 -0
- package/dist/runtime/components/aware/ACollapsible.vue +45 -0
- package/dist/runtime/components/aware/ACollapsible.vue.d.ts +25 -0
- package/dist/runtime/components/aware/AColorPicker.d.vue.ts +15 -0
- package/dist/runtime/components/aware/AColorPicker.vue +48 -0
- package/dist/runtime/components/aware/AColorPicker.vue.d.ts +15 -0
- package/dist/runtime/components/aware/ACommandPalette.d.vue.ts +33 -0
- package/dist/runtime/components/aware/ACommandPalette.vue +123 -0
- package/dist/runtime/components/aware/ACommandPalette.vue.d.ts +33 -0
- package/dist/runtime/components/aware/AContextMenu.d.vue.ts +25 -0
- package/dist/runtime/components/aware/AContextMenu.vue +63 -0
- package/dist/runtime/components/aware/AContextMenu.vue.d.ts +25 -0
- package/dist/runtime/components/aware/ADrawer.d.vue.ts +25 -0
- package/dist/runtime/components/aware/ADrawer.vue +57 -0
- package/dist/runtime/components/aware/ADrawer.vue.d.ts +25 -0
- package/dist/runtime/components/aware/ADropdownMenu.d.vue.ts +25 -0
- package/dist/runtime/components/aware/ADropdownMenu.vue +63 -0
- package/dist/runtime/components/aware/ADropdownMenu.vue.d.ts +25 -0
- package/dist/runtime/components/aware/AFileUpload.d.vue.ts +27 -0
- package/dist/runtime/components/aware/AFileUpload.vue +67 -0
- package/dist/runtime/components/aware/AFileUpload.vue.d.ts +27 -0
- package/dist/runtime/components/aware/AFollowBar.d.vue.ts +21 -0
- package/dist/runtime/components/aware/AFollowBar.vue +62 -0
- package/dist/runtime/components/aware/AFollowBar.vue.d.ts +21 -0
- package/dist/runtime/components/aware/AFollowScroll.d.vue.ts +7 -0
- package/dist/runtime/components/aware/AFollowScroll.vue +17 -0
- package/dist/runtime/components/aware/AFollowScroll.vue.d.ts +7 -0
- package/dist/runtime/components/aware/AFormSync.d.vue.ts +21 -0
- package/dist/runtime/components/aware/AFormSync.vue +52 -0
- package/dist/runtime/components/aware/AFormSync.vue.d.ts +21 -0
- package/dist/runtime/components/aware/AGlobalFocusLayer.d.vue.ts +3 -0
- package/dist/runtime/components/aware/AGlobalFocusLayer.vue +90 -0
- package/dist/runtime/components/aware/AGlobalFocusLayer.vue.d.ts +3 -0
- package/dist/runtime/components/aware/AHoverItem.d.vue.ts +27 -0
- package/dist/runtime/components/aware/AHoverItem.vue +124 -0
- package/dist/runtime/components/aware/AHoverItem.vue.d.ts +27 -0
- package/dist/runtime/components/aware/AInput.d.vue.ts +12 -2
- package/dist/runtime/components/aware/AInput.vue +72 -19
- package/dist/runtime/components/aware/AInput.vue.d.ts +12 -2
- package/dist/runtime/components/aware/AInputMenu.d.vue.ts +17 -0
- package/dist/runtime/components/aware/AInputMenu.vue +138 -0
- package/dist/runtime/components/aware/AInputMenu.vue.d.ts +17 -0
- package/dist/runtime/components/aware/AInputNumber.d.vue.ts +15 -0
- package/dist/runtime/components/aware/AInputNumber.vue +67 -0
- package/dist/runtime/components/aware/AInputNumber.vue.d.ts +15 -0
- package/dist/runtime/components/aware/AInputTags.d.vue.ts +15 -0
- package/dist/runtime/components/aware/AInputTags.vue +67 -0
- package/dist/runtime/components/aware/AInputTags.vue.d.ts +15 -0
- package/dist/runtime/components/aware/AKeyHint.d.vue.ts +3 -0
- package/dist/runtime/components/aware/AKeyHint.vue +23 -0
- package/dist/runtime/components/aware/AKeyHint.vue.d.ts +3 -0
- package/dist/runtime/components/aware/AMedia.d.vue.ts +19 -0
- package/dist/runtime/components/aware/AMedia.vue +85 -0
- package/dist/runtime/components/aware/AMedia.vue.d.ts +19 -0
- package/dist/runtime/components/aware/AModal.d.vue.ts +33 -0
- package/dist/runtime/components/aware/AModal.vue +110 -0
- package/dist/runtime/components/aware/AModal.vue.d.ts +33 -0
- package/dist/runtime/components/aware/ANavigationMenu.d.vue.ts +25 -0
- package/dist/runtime/components/aware/ANavigationMenu.vue +82 -0
- package/dist/runtime/components/aware/ANavigationMenu.vue.d.ts +25 -0
- package/dist/runtime/components/aware/APagination.d.vue.ts +13 -0
- package/dist/runtime/components/aware/APagination.vue +53 -0
- package/dist/runtime/components/aware/APagination.vue.d.ts +13 -0
- package/dist/runtime/components/aware/APeerCaretLayer.d.vue.ts +10 -0
- package/dist/runtime/components/aware/APeerCaretLayer.vue +133 -0
- package/dist/runtime/components/aware/APeerCaretLayer.vue.d.ts +10 -0
- package/dist/runtime/components/aware/APinInput.d.vue.ts +15 -0
- package/dist/runtime/components/aware/APinInput.vue +48 -0
- package/dist/runtime/components/aware/APinInput.vue.d.ts +15 -0
- package/dist/runtime/components/aware/APopover.d.vue.ts +25 -0
- package/dist/runtime/components/aware/APopover.vue +57 -0
- package/dist/runtime/components/aware/APopover.vue.d.ts +25 -0
- package/dist/runtime/components/aware/APresenceBlobs.d.vue.ts +3 -0
- package/dist/runtime/components/aware/APresenceBlobs.vue +69 -0
- package/dist/runtime/components/aware/APresenceBlobs.vue.d.ts +3 -0
- package/dist/runtime/components/aware/APresenceCursors.d.vue.ts +20 -0
- package/dist/runtime/components/aware/APresenceCursors.vue +47 -0
- package/dist/runtime/components/aware/APresenceCursors.vue.d.ts +20 -0
- package/dist/runtime/components/aware/ARadioGroup.d.vue.ts +27 -0
- package/dist/runtime/components/aware/ARadioGroup.vue +86 -0
- package/dist/runtime/components/aware/ARadioGroup.vue.d.ts +27 -0
- package/dist/runtime/components/aware/AScroll.d.vue.ts +25 -0
- package/dist/runtime/components/aware/AScroll.vue +87 -0
- package/dist/runtime/components/aware/AScroll.vue.d.ts +25 -0
- package/dist/runtime/components/aware/ASelect.d.vue.ts +12 -2
- package/dist/runtime/components/aware/ASelect.vue +146 -22
- package/dist/runtime/components/aware/ASelect.vue.d.ts +12 -2
- package/dist/runtime/components/aware/ASelectMenu.d.vue.ts +17 -0
- package/dist/runtime/components/aware/ASelectMenu.vue +139 -0
- package/dist/runtime/components/aware/ASelectMenu.vue.d.ts +17 -0
- package/dist/runtime/components/aware/ASlideover.d.vue.ts +33 -0
- package/dist/runtime/components/aware/ASlideover.vue +110 -0
- package/dist/runtime/components/aware/ASlideover.vue.d.ts +33 -0
- package/dist/runtime/components/aware/ASlider.d.vue.ts +19 -0
- package/dist/runtime/components/aware/ASlider.vue +77 -0
- package/dist/runtime/components/aware/ASlider.vue.d.ts +19 -0
- package/dist/runtime/components/aware/AStepper.d.vue.ts +25 -0
- package/dist/runtime/components/aware/AStepper.vue +82 -0
- package/dist/runtime/components/aware/AStepper.vue.d.ts +25 -0
- package/dist/runtime/components/aware/ASwitch.d.vue.ts +11 -0
- package/dist/runtime/components/aware/ASwitch.vue +75 -0
- package/dist/runtime/components/aware/ASwitch.vue.d.ts +11 -0
- package/dist/runtime/components/aware/ATable.d.vue.ts +23 -0
- package/dist/runtime/components/aware/ATable.vue +97 -0
- package/dist/runtime/components/aware/ATable.vue.d.ts +23 -0
- package/dist/runtime/components/aware/ATabs.d.vue.ts +27 -0
- package/dist/runtime/components/aware/ATabs.vue +128 -0
- package/dist/runtime/components/aware/ATabs.vue.d.ts +27 -0
- package/dist/runtime/components/aware/ATextarea.d.vue.ts +12 -2
- package/dist/runtime/components/aware/ATextarea.vue +72 -19
- package/dist/runtime/components/aware/ATextarea.vue.d.ts +12 -2
- package/dist/runtime/components/aware/AToggleGroup.d.vue.ts +27 -0
- package/dist/runtime/components/aware/AToggleGroup.vue +79 -0
- package/dist/runtime/components/aware/AToggleGroup.vue.d.ts +27 -0
- package/dist/runtime/components/aware/ATree.d.vue.ts +27 -0
- package/dist/runtime/components/aware/ATree.vue +111 -0
- package/dist/runtime/components/aware/ATree.vue.d.ts +27 -0
- package/dist/runtime/components/chat/AChatPanel.d.vue.ts +6 -6
- package/dist/runtime/components/chat/AChatPanel.vue.d.ts +6 -6
- package/dist/runtime/components/chat/ANodeChatPanel.d.vue.ts +42 -0
- package/dist/runtime/components/chat/ANodeChatPanel.vue +53 -0
- package/dist/runtime/components/chat/ANodeChatPanel.vue.d.ts +42 -0
- package/dist/runtime/components/docs/ADocsNavigation.d.vue.ts +155 -0
- package/dist/runtime/components/docs/ADocsNavigation.vue +154 -0
- package/dist/runtime/components/docs/ADocsNavigation.vue.d.ts +155 -0
- package/dist/runtime/components/docs/ADocsSearch.d.vue.ts +249 -0
- package/dist/runtime/components/docs/ADocsSearch.vue +187 -0
- package/dist/runtime/components/docs/ADocsSearch.vue.d.ts +249 -0
- package/dist/runtime/components/docs/ADocsSearchButton.d.vue.ts +253 -0
- package/dist/runtime/components/docs/ADocsSearchButton.vue +99 -0
- package/dist/runtime/components/docs/ADocsSearchButton.vue.d.ts +253 -0
- package/dist/runtime/components/docs/ADocsSurround.d.vue.ts +56 -0
- package/dist/runtime/components/docs/ADocsSurround.vue +68 -0
- package/dist/runtime/components/docs/ADocsSurround.vue.d.ts +56 -0
- package/dist/runtime/components/docs/ADocsToc.d.vue.ts +117 -0
- package/dist/runtime/components/docs/ADocsToc.vue +194 -0
- package/dist/runtime/components/docs/ADocsToc.vue.d.ts +117 -0
- package/dist/runtime/components/editor/ADocLinkPopover.vue +1 -5
- package/dist/runtime/components/editor/AEditorRedoButton.d.vue.ts +26 -0
- package/dist/runtime/components/editor/AEditorRedoButton.vue +38 -0
- package/dist/runtime/components/editor/AEditorRedoButton.vue.d.ts +26 -0
- package/dist/runtime/components/editor/AEditorUndoButton.d.vue.ts +26 -0
- package/dist/runtime/components/editor/AEditorUndoButton.vue +38 -0
- package/dist/runtime/components/editor/AEditorUndoButton.vue.d.ts +26 -0
- package/dist/runtime/components/editor/AIconPickerPopover.d.vue.ts +24 -0
- package/dist/runtime/components/editor/AIconPickerPopover.vue +113 -0
- package/dist/runtime/components/editor/AIconPickerPopover.vue.d.ts +24 -0
- package/dist/runtime/components/editor/ANodeInlineLabel.d.vue.ts +24 -0
- package/dist/runtime/components/editor/ANodeInlineLabel.vue +101 -0
- package/dist/runtime/components/editor/ANodeInlineLabel.vue.d.ts +24 -0
- package/dist/runtime/components/renderers/ADocLoadError.d.vue.ts +3 -0
- package/dist/runtime/components/renderers/ADocLoadError.vue +11 -0
- package/dist/runtime/components/renderers/ADocLoadError.vue.d.ts +3 -0
- package/dist/runtime/components/renderers/ADocLoadingSkeleton.d.vue.ts +3 -0
- package/dist/runtime/components/renderers/ADocLoadingSkeleton.vue +5 -0
- package/dist/runtime/components/renderers/ADocLoadingSkeleton.vue.d.ts +3 -0
- package/dist/runtime/components/renderers/AMediaRenderer.vue +1 -1
- package/dist/runtime/components/renderers/AOverviewRenderer.d.vue.ts +22 -0
- package/dist/runtime/components/renderers/AOverviewRenderer.vue +1041 -0
- package/dist/runtime/components/renderers/AOverviewRenderer.vue.d.ts +22 -0
- package/dist/runtime/components/renderers/AProseRenderer.d.vue.ts +23 -0
- package/dist/runtime/components/renderers/AProseRenderer.vue +31 -0
- package/dist/runtime/components/renderers/AProseRenderer.vue.d.ts +23 -0
- package/dist/runtime/components/renderers/ASheetsRenderer.client.d.vue.ts +19 -0
- package/dist/runtime/components/renderers/ASheetsRenderer.client.vue +865 -0
- package/dist/runtime/components/renderers/ASheetsRenderer.client.vue.d.ts +19 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.d.vue.ts +14 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue +45 -15
- package/dist/runtime/components/renderers/calendar/ACalendarDayCell.vue.d.ts +14 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue +93 -20
- package/dist/runtime/components/renderers/calendar/ACalendarDayView.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.d.vue.ts +9 -0
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue +31 -2
- package/dist/runtime/components/renderers/calendar/ACalendarEventChip.vue.d.ts +9 -0
- package/dist/runtime/components/renderers/calendar/ACalendarToolbar.d.vue.ts +4 -4
- package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue.d.ts +4 -4
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue +94 -21
- package/dist/runtime/components/renderers/calendar/ACalendarWeekView.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/media/MediaTransportBar.d.vue.ts +2 -2
- package/dist/runtime/components/renderers/media/MediaTransportBar.vue.d.ts +2 -2
- package/dist/runtime/components/renderers/sheets/ASheetsCell.d.vue.ts +45 -0
- package/dist/runtime/components/renderers/sheets/ASheetsCell.vue +123 -0
- package/dist/runtime/components/renderers/sheets/ASheetsCell.vue.d.ts +45 -0
- package/dist/runtime/components/renderers/sheets/ASheetsGrid.d.vue.ts +111 -0
- package/dist/runtime/components/renderers/sheets/ASheetsGrid.vue +737 -0
- package/dist/runtime/components/renderers/sheets/ASheetsGrid.vue.d.ts +111 -0
- package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.d.vue.ts +26 -0
- package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.vue +100 -0
- package/dist/runtime/components/renderers/sheets/ASheetsMobileActionBar.vue.d.ts +26 -0
- package/dist/runtime/components/renderers/sheets/ASheetsToolbar.d.vue.ts +48 -0
- package/dist/runtime/components/renderers/sheets/ASheetsToolbar.vue +243 -0
- package/dist/runtime/components/renderers/sheets/ASheetsToolbar.vue.d.ts +48 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.d.vue.ts +1 -0
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue +13 -32
- package/dist/runtime/components/renderers/table/cells/ATableCellColor.vue.d.ts +1 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBar.d.vue.ts +6 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBar.vue +34 -4
- package/dist/runtime/components/renderers/timeline/ATimelineBar.vue.d.ts +6 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.d.vue.ts +16 -0
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue +14 -3
- package/dist/runtime/components/renderers/timeline/ATimelineBarArea.vue.d.ts +16 -0
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.d.vue.ts +13 -1
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue +114 -47
- package/dist/runtime/components/renderers/timeline/ATimelineLabelPanel.vue.d.ts +13 -1
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.d.vue.ts +4 -0
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue +21 -4
- package/dist/runtime/components/renderers/timeline/ATimelineMilestone.vue.d.ts +4 -0
- package/dist/runtime/components/renderers/timeline/ATimelineToolbar.d.vue.ts +2 -2
- package/dist/runtime/components/renderers/timeline/ATimelineToolbar.vue.d.ts +2 -2
- package/dist/runtime/components/settings/ASettingsSpacesPanel.vue +7 -25
- package/dist/runtime/components/shell/ADocPanelSettings.d.vue.ts +34 -4
- package/dist/runtime/components/shell/ADocPanelSettings.vue +289 -2
- package/dist/runtime/components/shell/ADocPanelSettings.vue.d.ts +34 -4
- package/dist/runtime/components/shell/ASyncStatus.d.vue.ts +1 -1
- package/dist/runtime/components/shell/ASyncStatus.vue.d.ts +1 -1
- package/dist/runtime/components/shell/AUserMenu.d.vue.ts +2 -2
- package/dist/runtime/components/shell/AUserMenu.vue.d.ts +2 -2
- package/dist/runtime/components/shell/AWelcomeScreen.d.vue.ts +1 -1
- package/dist/runtime/components/shell/AWelcomeScreen.vue.d.ts +1 -1
- package/dist/runtime/composables/useAACaret.d.ts +29 -0
- package/dist/runtime/composables/useAACaret.js +64 -0
- package/dist/runtime/composables/useAAEphemeral.d.ts +32 -0
- package/dist/runtime/composables/useAAEphemeral.js +33 -0
- package/dist/runtime/composables/useAAField.d.ts +10 -2
- package/dist/runtime/composables/useAAField.js +31 -2
- package/dist/runtime/composables/useAAFieldValue.d.ts +26 -0
- package/dist/runtime/composables/useAAFieldValue.js +32 -0
- package/dist/runtime/composables/useAAFocus.d.ts +68 -0
- package/dist/runtime/composables/useAAFocus.js +174 -0
- package/dist/runtime/composables/useAAFollowAnchor.d.ts +25 -0
- package/dist/runtime/composables/useAAFollowAnchor.js +69 -0
- package/dist/runtime/composables/useAAFollowPeer.d.ts +29 -0
- package/dist/runtime/composables/useAAFollowPeer.js +75 -0
- package/dist/runtime/composables/useAAKey.d.ts +22 -0
- package/dist/runtime/composables/useAAKey.js +24 -0
- package/dist/runtime/composables/useAAPointer.d.ts +30 -0
- package/dist/runtime/composables/useAAPointer.js +53 -0
- package/dist/runtime/composables/useAAUIState.d.ts +29 -0
- package/dist/runtime/composables/useAAUIState.js +28 -0
- package/dist/runtime/composables/useAAViewport.d.ts +22 -0
- package/dist/runtime/composables/useAAViewport.js +50 -0
- package/dist/runtime/composables/useAbraAdmin.d.ts +54 -0
- package/dist/runtime/composables/useAbraAdmin.js +115 -0
- package/dist/runtime/composables/useAbracadabraAuth.d.ts +8 -0
- package/dist/runtime/composables/useAbracadabraAuth.js +8 -0
- package/dist/runtime/composables/useAggregatedPresence.d.ts +23 -0
- package/dist/runtime/composables/useAggregatedPresence.js +140 -0
- package/dist/runtime/composables/useChat.d.ts +16 -2
- package/dist/runtime/composables/useChat.js +257 -66
- package/dist/runtime/composables/useChatUsers.d.ts +2 -0
- package/dist/runtime/composables/useChatUsers.js +2 -1
- package/dist/runtime/composables/useDocLookup.d.ts +4 -0
- package/dist/runtime/composables/useDocLookup.js +25 -0
- package/dist/runtime/composables/useDocSnapshots.d.ts +79 -0
- package/dist/runtime/composables/useDocSnapshots.js +234 -0
- package/dist/runtime/composables/useDocsSearch.d.ts +24 -0
- package/dist/runtime/composables/useDocsSearch.js +34 -0
- package/dist/runtime/composables/useEditorDragHandle.d.ts +7 -0
- package/dist/runtime/composables/useEditorDragHandle.js +19 -1
- package/dist/runtime/composables/useEditorSuggestions.js +26 -1
- package/dist/runtime/composables/useEditorToolbar.js +9 -1
- package/dist/runtime/composables/useEmailVerification.d.ts +33 -0
- package/dist/runtime/composables/useEmailVerification.js +58 -0
- package/dist/runtime/composables/useIdentityDoc.js +0 -3
- package/dist/runtime/composables/useItemPresence.d.ts +47 -0
- package/dist/runtime/composables/useItemPresence.js +73 -0
- package/dist/runtime/composables/useResizableWidth.d.ts +24 -0
- package/dist/runtime/composables/useResizableWidth.js +87 -0
- package/dist/runtime/composables/useServerInfo.d.ts +17 -2
- package/dist/runtime/composables/useServerInfo.js +30 -6
- package/dist/runtime/composables/useServerSearch.d.ts +36 -0
- package/dist/runtime/composables/useServerSearch.js +91 -0
- package/dist/runtime/composables/useServerTrash.d.ts +67 -0
- package/dist/runtime/composables/useServerTrash.js +128 -0
- package/dist/runtime/composables/useSheetsClipboard.d.ts +42 -0
- package/dist/runtime/composables/useSheetsClipboard.js +109 -0
- package/dist/runtime/composables/useSheetsFormulas.d.ts +38 -0
- package/dist/runtime/composables/useSheetsFormulas.js +725 -0
- package/dist/runtime/composables/useSheetsSelection.d.ts +68 -0
- package/dist/runtime/composables/useSheetsSelection.js +390 -0
- package/dist/runtime/composables/useSheetsView.d.ts +31 -0
- package/dist/runtime/composables/useSheetsView.js +77 -0
- package/dist/runtime/composables/useSpaceConnections.d.ts +43 -0
- package/dist/runtime/composables/useSpaceConnections.js +72 -0
- package/dist/runtime/composables/useSpaces.d.ts +1 -3
- package/dist/runtime/composables/useSpaces.js +2 -5
- package/dist/runtime/composables/useTiptapHistory.d.ts +22 -0
- package/dist/runtime/composables/useTiptapHistory.js +12 -0
- package/dist/runtime/composables/useTreeExpansion.d.ts +28 -0
- package/dist/runtime/composables/useTreeExpansion.js +94 -0
- package/dist/runtime/composables/useYDoc.js +12 -1
- package/dist/runtime/extensions/button.d.ts +3 -0
- package/dist/runtime/extensions/button.js +62 -0
- package/dist/runtime/extensions/color-swatch.d.ts +2 -0
- package/dist/runtime/extensions/color-swatch.js +34 -0
- package/dist/runtime/extensions/diff.d.ts +2 -0
- package/dist/runtime/extensions/diff.js +40 -0
- package/dist/runtime/extensions/divider.d.ts +2 -0
- package/dist/runtime/extensions/divider.js +33 -0
- package/dist/runtime/extensions/doc-embed.js +2 -1
- package/dist/runtime/extensions/doc-link-drop.js +4 -4
- package/dist/runtime/extensions/doc-link.d.ts +12 -0
- package/dist/runtime/extensions/doc-link.js +60 -0
- package/dist/runtime/extensions/embed.d.ts +2 -0
- package/dist/runtime/extensions/embed.js +40 -0
- package/dist/runtime/extensions/figure.d.ts +2 -0
- package/dist/runtime/extensions/figure.js +49 -0
- package/dist/runtime/extensions/math.d.ts +15 -0
- package/dist/runtime/extensions/math.js +66 -0
- package/dist/runtime/extensions/progress.d.ts +2 -0
- package/dist/runtime/extensions/progress.js +43 -0
- package/dist/runtime/extensions/quote.d.ts +2 -0
- package/dist/runtime/extensions/quote.js +39 -0
- package/dist/runtime/extensions/spoiler.d.ts +2 -0
- package/dist/runtime/extensions/spoiler.js +36 -0
- package/dist/runtime/extensions/stat.d.ts +3 -0
- package/dist/runtime/extensions/stat.js +58 -0
- package/dist/runtime/extensions/video.d.ts +2 -0
- package/dist/runtime/extensions/video.js +40 -0
- package/dist/runtime/extensions/views/ButtonGroupView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/ButtonGroupView.vue +25 -0
- package/dist/runtime/extensions/views/ButtonGroupView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/ButtonView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/ButtonView.vue +171 -0
- package/dist/runtime/extensions/views/ButtonView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/ColorSwatchView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/ColorSwatchView.vue +134 -0
- package/dist/runtime/extensions/views/ColorSwatchView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/DiffView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/DiffView.vue +163 -0
- package/dist/runtime/extensions/views/DiffView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/DividerView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/DividerView.vue +40 -0
- package/dist/runtime/extensions/views/DividerView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/DocEmbedView.vue +18 -3
- package/dist/runtime/extensions/views/DocLinkView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/DocLinkView.vue +71 -0
- package/dist/runtime/extensions/views/DocLinkView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/EmbedView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/EmbedView.vue +166 -0
- package/dist/runtime/extensions/views/EmbedView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/FigureView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/FigureView.vue +122 -0
- package/dist/runtime/extensions/views/FigureView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/FileNodeView.vue +21 -24
- package/dist/runtime/extensions/views/MathBlockView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/MathBlockView.vue +151 -0
- package/dist/runtime/extensions/views/MathBlockView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/MathInlineView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/MathInlineView.vue +149 -0
- package/dist/runtime/extensions/views/MathInlineView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/MetaFieldView.vue +1129 -550
- package/dist/runtime/extensions/views/ProgressView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/ProgressView.vue +156 -0
- package/dist/runtime/extensions/views/ProgressView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/QuoteView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/QuoteView.vue +128 -0
- package/dist/runtime/extensions/views/QuoteView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/SpoilerView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/SpoilerView.vue +62 -0
- package/dist/runtime/extensions/views/SpoilerView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/StatGroupView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/StatGroupView.vue +25 -0
- package/dist/runtime/extensions/views/StatGroupView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/StatView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/StatView.vue +89 -0
- package/dist/runtime/extensions/views/StatView.vue.d.ts +4 -0
- package/dist/runtime/extensions/views/VideoView.d.vue.ts +4 -0
- package/dist/runtime/extensions/views/VideoView.vue +190 -0
- package/dist/runtime/extensions/views/VideoView.vue.d.ts +4 -0
- package/dist/runtime/locale.d.ts +133 -0
- package/dist/runtime/locale.js +121 -2
- package/dist/runtime/plugin-abracadabra.client.js +251 -38
- package/dist/runtime/plugin-abracadabra.server.js +0 -1
- package/dist/runtime/plugins/core.plugin.js +76 -4
- package/dist/runtime/server/plugins/abracadabra-service.js +4 -2
- package/dist/runtime/server/utils/rpcHandler.d.ts +74 -0
- package/dist/runtime/server/utils/rpcHandler.js +74 -0
- package/dist/runtime/server/utils/spaceManager.js +10 -9
- package/dist/runtime/theme/content/_shared.d.ts +6 -0
- package/dist/runtime/theme/content/_shared.js +6 -0
- package/dist/runtime/theme/content/content-navigation.d.ts +120 -0
- package/dist/runtime/theme/content/content-navigation.js +155 -0
- package/dist/runtime/theme/content/content-search-button.d.ts +16 -0
- package/dist/runtime/theme/content/content-search-button.js +15 -0
- package/dist/runtime/theme/content/content-search.d.ts +24 -0
- package/dist/runtime/theme/content/content-search.js +23 -0
- package/dist/runtime/theme/content/content-surround.d.ts +22 -0
- package/dist/runtime/theme/content/content-surround.js +23 -0
- package/dist/runtime/theme/content/content-toc.d.ts +84 -0
- package/dist/runtime/theme/content/content-toc.js +94 -0
- package/dist/runtime/theme/content/index.d.ts +5 -0
- package/dist/runtime/theme/content/index.js +5 -0
- package/dist/runtime/types.d.ts +63 -10
- package/dist/runtime/utils/awareRingStyle.d.ts +22 -0
- package/dist/runtime/utils/awareRingStyle.js +16 -0
- package/dist/runtime/utils/caretCoordinates.d.ts +41 -0
- package/dist/runtime/utils/caretCoordinates.js +126 -0
- package/dist/runtime/utils/content.d.ts +19 -0
- package/dist/runtime/utils/content.js +23 -0
- package/dist/runtime/utils/docReferenceEdges.js +1 -1
- package/dist/runtime/utils/docTypes.js +44 -13
- package/dist/runtime/utils/domPath.d.ts +42 -0
- package/dist/runtime/utils/domPath.js +89 -0
- package/dist/runtime/utils/loadKatex.d.ts +1 -0
- package/dist/runtime/utils/loadKatex.js +29 -0
- package/dist/runtime/utils/lucideIcons.d.ts +16 -0
- package/dist/runtime/utils/lucideIcons.js +451 -0
- package/dist/runtime/utils/time.d.ts +15 -0
- package/dist/runtime/utils/time.js +5 -0
- package/dist/types.d.mts +4 -0
- package/package.json +38 -20
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useDocSnapshots
|
|
3
|
+
*
|
|
4
|
+
* CRUD over a document's snapshot history with paginated fetch and a
|
|
5
|
+
* derived "display items" view that collapses runs of consecutive
|
|
6
|
+
* auto-snapshots from the same author within a 30-min window into one
|
|
7
|
+
* cluster (manual / unload / shutdown / labelled snapshots stay
|
|
8
|
+
* individual). Keeps the side-panel timeline scannable while losing
|
|
9
|
+
* nothing.
|
|
10
|
+
*
|
|
11
|
+
* Mirrors the `cou-sh` implementation 1-to-1 — the cou-sh version is the
|
|
12
|
+
* source of truth (see project memory: nuxt-module-must-match-coush). If
|
|
13
|
+
* this composable drifts from cou-sh's, fix it back rather than
|
|
14
|
+
* "improving" it here.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* const docId = computed(() => route.params.id as string)
|
|
18
|
+
* const snaps = useDocSnapshots(docId)
|
|
19
|
+
* onMounted(() => snaps.fetchList())
|
|
20
|
+
*/
|
|
21
|
+
import { type ComputedRef, type InjectionKey, type Ref } from 'vue';
|
|
22
|
+
import type { SnapshotMeta } from '@abraca/dabra';
|
|
23
|
+
import type { AbracadabraLocale } from '../locale.js';
|
|
24
|
+
export type DocSnapshotsCtx = ReturnType<typeof useDocSnapshots>;
|
|
25
|
+
export declare const DOC_SNAPSHOTS_KEY: InjectionKey<DocSnapshotsCtx>;
|
|
26
|
+
/** Trigger badge color, matching cou-sh's mapping exactly. */
|
|
27
|
+
export declare function triggerBadgeColor(trigger: string): 'primary' | 'neutral' | 'warning';
|
|
28
|
+
/**
|
|
29
|
+
* Trigger label key — consumers translate via their own i18n if they
|
|
30
|
+
* don't use `useAbraLocale`. Returns the dot-path key cou-sh uses.
|
|
31
|
+
*/
|
|
32
|
+
export declare function triggerLabelKey(trigger: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Per-row item for the side-panel list. Auto runs collapse into a
|
|
35
|
+
* single `cluster` item; everything else stays as its own `snap`.
|
|
36
|
+
*/
|
|
37
|
+
export type SnapshotDisplayItem = {
|
|
38
|
+
kind: 'snap';
|
|
39
|
+
snap: SnapshotMeta;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'cluster';
|
|
42
|
+
items: SnapshotMeta[];
|
|
43
|
+
firstAt: number;
|
|
44
|
+
lastAt: number;
|
|
45
|
+
createdBy: string | null;
|
|
46
|
+
};
|
|
47
|
+
export declare function useDocSnapshots(docId: Ref<string> | ComputedRef<string>, overrides?: Partial<AbracadabraLocale['snapshots']> | null): {
|
|
48
|
+
snapshots: Ref<{
|
|
49
|
+
version: number;
|
|
50
|
+
size_bytes: number;
|
|
51
|
+
trigger: string;
|
|
52
|
+
label?: string | null | undefined;
|
|
53
|
+
created_by?: string | null | undefined;
|
|
54
|
+
created_at: number;
|
|
55
|
+
file_count?: number | undefined;
|
|
56
|
+
delta_bytes?: number | null | undefined;
|
|
57
|
+
}[], SnapshotMeta[] | {
|
|
58
|
+
version: number;
|
|
59
|
+
size_bytes: number;
|
|
60
|
+
trigger: string;
|
|
61
|
+
label?: string | null | undefined;
|
|
62
|
+
created_by?: string | null | undefined;
|
|
63
|
+
created_at: number;
|
|
64
|
+
file_count?: number | undefined;
|
|
65
|
+
delta_bytes?: number | null | undefined;
|
|
66
|
+
}[]>;
|
|
67
|
+
displayItems: ComputedRef<SnapshotDisplayItem[]>;
|
|
68
|
+
loading: Ref<boolean, boolean>;
|
|
69
|
+
error: Ref<string | null, string | null>;
|
|
70
|
+
hasMore: Ref<boolean, boolean>;
|
|
71
|
+
creating: Ref<boolean, boolean>;
|
|
72
|
+
pending: Ref<Record<number, "delete" | "restore" | "fork" | undefined>, Record<number, "delete" | "restore" | "fork" | undefined>>;
|
|
73
|
+
fetchList: () => Promise<void>;
|
|
74
|
+
loadMore: () => Promise<void>;
|
|
75
|
+
create: (label?: string) => Promise<void>;
|
|
76
|
+
remove: (version: number) => Promise<void>;
|
|
77
|
+
restore: (version: number) => Promise<void>;
|
|
78
|
+
fork: (version: number) => Promise<void>;
|
|
79
|
+
};
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { computed, ref } from "vue";
|
|
2
|
+
import { useToast, useRouter } from "#imports";
|
|
3
|
+
import { useAbracadabra } from "./useAbracadabra.js";
|
|
4
|
+
import { useAbraLocale } from "./useAbraLocale.js";
|
|
5
|
+
export const DOC_SNAPSHOTS_KEY = Symbol("doc-snapshots");
|
|
6
|
+
export function triggerBadgeColor(trigger) {
|
|
7
|
+
switch (trigger) {
|
|
8
|
+
case "manual":
|
|
9
|
+
return "primary";
|
|
10
|
+
case "unload":
|
|
11
|
+
case "shutdown":
|
|
12
|
+
return "warning";
|
|
13
|
+
default:
|
|
14
|
+
return "neutral";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function triggerLabelKey(trigger) {
|
|
18
|
+
switch (trigger) {
|
|
19
|
+
case "manual":
|
|
20
|
+
return "docPanel.snapshots.triggerManual";
|
|
21
|
+
case "auto":
|
|
22
|
+
return "docPanel.snapshots.triggerAuto";
|
|
23
|
+
case "unload":
|
|
24
|
+
return "docPanel.snapshots.triggerUnload";
|
|
25
|
+
case "shutdown":
|
|
26
|
+
return "docPanel.snapshots.triggerShutdown";
|
|
27
|
+
default:
|
|
28
|
+
return "";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const PAGE_SIZE = 20;
|
|
32
|
+
const CLUSTER_WINDOW_S = 30 * 60;
|
|
33
|
+
function errMessage(e) {
|
|
34
|
+
return e instanceof Error ? e.message : String(e);
|
|
35
|
+
}
|
|
36
|
+
function applyTemplate(tmpl, vars) {
|
|
37
|
+
return tmpl.replace(/\{(\w+)\}/g, (_, k) => String(vars[k] ?? ""));
|
|
38
|
+
}
|
|
39
|
+
export function useDocSnapshots(docId, overrides) {
|
|
40
|
+
const { client } = useAbracadabra();
|
|
41
|
+
const locale = useAbraLocale("snapshots", overrides);
|
|
42
|
+
const toast = useToast();
|
|
43
|
+
const router = useRouter();
|
|
44
|
+
const snapshots = ref([]);
|
|
45
|
+
const loading = ref(false);
|
|
46
|
+
const error = ref(null);
|
|
47
|
+
const hasMore = ref(false);
|
|
48
|
+
const creating = ref(false);
|
|
49
|
+
const pending = ref({});
|
|
50
|
+
const displayItems = computed(() => {
|
|
51
|
+
const result = [];
|
|
52
|
+
const arr = snapshots.value;
|
|
53
|
+
let i = 0;
|
|
54
|
+
while (i < arr.length) {
|
|
55
|
+
const cur = arr[i];
|
|
56
|
+
if (cur.trigger !== "auto") {
|
|
57
|
+
result.push({ kind: "snap", snap: cur });
|
|
58
|
+
i++;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const cluster = [cur];
|
|
62
|
+
let j = i + 1;
|
|
63
|
+
while (j < arr.length) {
|
|
64
|
+
const nxt = arr[j];
|
|
65
|
+
if (nxt.trigger !== "auto") break;
|
|
66
|
+
if ((nxt.created_by ?? null) !== (cur.created_by ?? null)) break;
|
|
67
|
+
const last = cluster[cluster.length - 1];
|
|
68
|
+
if (Math.abs(last.created_at - nxt.created_at) > CLUSTER_WINDOW_S) break;
|
|
69
|
+
cluster.push(nxt);
|
|
70
|
+
j++;
|
|
71
|
+
}
|
|
72
|
+
if (cluster.length === 1) {
|
|
73
|
+
result.push({ kind: "snap", snap: cur });
|
|
74
|
+
} else {
|
|
75
|
+
const ts = cluster.map((c) => c.created_at);
|
|
76
|
+
result.push({
|
|
77
|
+
kind: "cluster",
|
|
78
|
+
items: cluster,
|
|
79
|
+
firstAt: Math.min(...ts),
|
|
80
|
+
lastAt: Math.max(...ts),
|
|
81
|
+
createdBy: cur.created_by ?? null
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
i = j;
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
});
|
|
88
|
+
async function fetchList() {
|
|
89
|
+
if (!docId.value) return;
|
|
90
|
+
if (!client.value) {
|
|
91
|
+
snapshots.value = [];
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
loading.value = true;
|
|
95
|
+
error.value = null;
|
|
96
|
+
try {
|
|
97
|
+
const res = await client.value.listSnapshots(docId.value, { limit: PAGE_SIZE + 1 });
|
|
98
|
+
hasMore.value = res.length > PAGE_SIZE;
|
|
99
|
+
snapshots.value = res.slice(0, PAGE_SIZE);
|
|
100
|
+
} catch (e) {
|
|
101
|
+
error.value = errMessage(e);
|
|
102
|
+
snapshots.value = [];
|
|
103
|
+
} finally {
|
|
104
|
+
loading.value = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function loadMore() {
|
|
108
|
+
if (!client.value || !docId.value || !hasMore.value || loading.value) return;
|
|
109
|
+
loading.value = true;
|
|
110
|
+
try {
|
|
111
|
+
const res = await client.value.listSnapshots(docId.value, {
|
|
112
|
+
limit: PAGE_SIZE + 1,
|
|
113
|
+
offset: snapshots.value.length
|
|
114
|
+
});
|
|
115
|
+
hasMore.value = res.length > PAGE_SIZE;
|
|
116
|
+
snapshots.value = [...snapshots.value, ...res.slice(0, PAGE_SIZE)];
|
|
117
|
+
} catch (e) {
|
|
118
|
+
toast.add({ title: locale.failed, description: errMessage(e), color: "error" });
|
|
119
|
+
} finally {
|
|
120
|
+
loading.value = false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function create(label) {
|
|
124
|
+
if (!client.value || !docId.value) return;
|
|
125
|
+
creating.value = true;
|
|
126
|
+
try {
|
|
127
|
+
const res = await client.value.createSnapshot(docId.value, label ? { label } : void 0);
|
|
128
|
+
toast.add({
|
|
129
|
+
title: locale.createdTitle,
|
|
130
|
+
description: applyTemplate(locale.createdDesc, { version: res.version }),
|
|
131
|
+
color: "success"
|
|
132
|
+
});
|
|
133
|
+
await fetchList();
|
|
134
|
+
} catch (e) {
|
|
135
|
+
toast.add({
|
|
136
|
+
title: locale.createFailed,
|
|
137
|
+
description: errMessage(e),
|
|
138
|
+
color: "error"
|
|
139
|
+
});
|
|
140
|
+
} finally {
|
|
141
|
+
creating.value = false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async function remove(version) {
|
|
145
|
+
if (!client.value || !docId.value) return;
|
|
146
|
+
pending.value[version] = "delete";
|
|
147
|
+
try {
|
|
148
|
+
await client.value.deleteSnapshot(docId.value, version);
|
|
149
|
+
toast.add({
|
|
150
|
+
title: locale.deletedTitle,
|
|
151
|
+
description: applyTemplate(locale.deletedDesc, { version }),
|
|
152
|
+
color: "success"
|
|
153
|
+
});
|
|
154
|
+
await fetchList();
|
|
155
|
+
} catch (e) {
|
|
156
|
+
toast.add({
|
|
157
|
+
title: locale.deleteFailed,
|
|
158
|
+
description: errMessage(e),
|
|
159
|
+
color: "error"
|
|
160
|
+
});
|
|
161
|
+
} finally {
|
|
162
|
+
pending.value[version] = void 0;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async function restore(version) {
|
|
166
|
+
if (!client.value || !docId.value) return;
|
|
167
|
+
pending.value[version] = "restore";
|
|
168
|
+
try {
|
|
169
|
+
const res = await client.value.restoreSnapshot(docId.value, version);
|
|
170
|
+
toast.add({
|
|
171
|
+
title: locale.restoredTitle,
|
|
172
|
+
description: applyTemplate(locale.restoredDesc, {
|
|
173
|
+
version: res.restored_from,
|
|
174
|
+
bytes: res.diff_bytes
|
|
175
|
+
}),
|
|
176
|
+
color: "success"
|
|
177
|
+
});
|
|
178
|
+
} catch (e) {
|
|
179
|
+
toast.add({
|
|
180
|
+
title: locale.restoreFailed,
|
|
181
|
+
description: errMessage(e),
|
|
182
|
+
color: "error"
|
|
183
|
+
});
|
|
184
|
+
} finally {
|
|
185
|
+
pending.value[version] = void 0;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function fork(version) {
|
|
189
|
+
if (!client.value || !docId.value) return;
|
|
190
|
+
pending.value[version] = "fork";
|
|
191
|
+
try {
|
|
192
|
+
const res = await client.value.forkSnapshot(docId.value, version);
|
|
193
|
+
toast.add({
|
|
194
|
+
title: locale.forkedTitle,
|
|
195
|
+
description: applyTemplate(locale.forkedDesc, { version }),
|
|
196
|
+
color: "success",
|
|
197
|
+
actions: [{
|
|
198
|
+
label: locale.openFork,
|
|
199
|
+
color: "neutral",
|
|
200
|
+
variant: "outline",
|
|
201
|
+
onClick: (e) => {
|
|
202
|
+
e?.stopPropagation();
|
|
203
|
+
router.push(`/doc/${res.doc_id}`);
|
|
204
|
+
}
|
|
205
|
+
}]
|
|
206
|
+
});
|
|
207
|
+
} catch (e) {
|
|
208
|
+
toast.add({
|
|
209
|
+
title: locale.forkFailed,
|
|
210
|
+
description: errMessage(e),
|
|
211
|
+
color: "error"
|
|
212
|
+
});
|
|
213
|
+
} finally {
|
|
214
|
+
pending.value[version] = void 0;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
// State
|
|
219
|
+
snapshots,
|
|
220
|
+
displayItems,
|
|
221
|
+
loading,
|
|
222
|
+
error,
|
|
223
|
+
hasMore,
|
|
224
|
+
creating,
|
|
225
|
+
pending,
|
|
226
|
+
// Actions
|
|
227
|
+
fetchList,
|
|
228
|
+
loadMore,
|
|
229
|
+
create,
|
|
230
|
+
remove,
|
|
231
|
+
restore,
|
|
232
|
+
fork
|
|
233
|
+
};
|
|
234
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ContentNavigationItem } from '../utils/content.js';
|
|
2
|
+
export interface DocsSearchFile {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
titles: string[];
|
|
6
|
+
content: string;
|
|
7
|
+
level: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DocsSearchItem {
|
|
10
|
+
prefix?: string;
|
|
11
|
+
label: string;
|
|
12
|
+
suffix: string;
|
|
13
|
+
to: string;
|
|
14
|
+
icon?: string;
|
|
15
|
+
level: number;
|
|
16
|
+
}
|
|
17
|
+
declare function _useDocsSearch(): {
|
|
18
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
19
|
+
mapFile: (file: DocsSearchFile, link: ContentNavigationItem, parent?: ContentNavigationItem) => DocsSearchItem;
|
|
20
|
+
mapNavigationItems: (children: ContentNavigationItem[], files: DocsSearchFile[], parent?: ContentNavigationItem) => DocsSearchItem[];
|
|
21
|
+
postFilter: (query: string, items: DocsSearchItem[]) => DocsSearchItem[];
|
|
22
|
+
};
|
|
23
|
+
export declare const useDocsSearch: typeof _useDocsSearch;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
import { createSharedComposable } from "@vueuse/core";
|
|
3
|
+
import { useAppConfig } from "#imports";
|
|
4
|
+
function _useDocsSearch() {
|
|
5
|
+
const open = ref(false);
|
|
6
|
+
const appConfig = useAppConfig();
|
|
7
|
+
function mapFile(file, link, parent) {
|
|
8
|
+
const prefix = [...new Set([parent?.title, ...file.titles].filter(Boolean))];
|
|
9
|
+
return {
|
|
10
|
+
prefix: prefix?.length ? prefix.join(" > ") + " >" : void 0,
|
|
11
|
+
label: file.id === link.path ? link.title : file.title,
|
|
12
|
+
suffix: file.content.replaceAll("<", "<").replaceAll(">", ">"),
|
|
13
|
+
to: file.id,
|
|
14
|
+
icon: link.icon || parent?.icon || (file.level > 1 ? appConfig.ui.icons.hash : appConfig.ui.icons.file),
|
|
15
|
+
level: file.level
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function mapNavigationItems(children, files, parent) {
|
|
19
|
+
return children.flatMap((link) => {
|
|
20
|
+
if (link.children?.length) {
|
|
21
|
+
return mapNavigationItems(link.children, files, link);
|
|
22
|
+
}
|
|
23
|
+
return files?.filter((file) => file.id === link.path || file.id.startsWith(`${link.path}#`))?.map((file) => mapFile(file, link, parent)) || [];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function postFilter(query, items) {
|
|
27
|
+
if (!query) {
|
|
28
|
+
return items?.filter((item) => item.level === 1);
|
|
29
|
+
}
|
|
30
|
+
return items;
|
|
31
|
+
}
|
|
32
|
+
return { open, mapFile, mapNavigationItems, postFilter };
|
|
33
|
+
}
|
|
34
|
+
export const useDocsSearch = /* @__PURE__ */ createSharedComposable(_useDocsSearch);
|
|
@@ -9,6 +9,13 @@ export declare function useEditorDragHandle(pageConfig?: {
|
|
|
9
9
|
}>;
|
|
10
10
|
onChangePageType?: (typeKey: string) => void;
|
|
11
11
|
onInsertDocLink?: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Optional callback for "Create child document" — apps that own a doc-tree
|
|
14
|
+
* implement this to spawn a new child under the current node and (usually)
|
|
15
|
+
* link to it from the editor. Called with no args; the consumer reads the
|
|
16
|
+
* editor's current selection from its own state.
|
|
17
|
+
*/
|
|
18
|
+
onCreateChildDoc?: () => void;
|
|
12
19
|
}): {
|
|
13
20
|
selectedNode: import("vue").Ref<{
|
|
14
21
|
node: JSONContent | null;
|
|
@@ -29,6 +29,9 @@ export function useEditorDragHandle(pageConfig) {
|
|
|
29
29
|
{ label: "Heading 1", icon: "i-lucide-heading-1", onSelect: () => editor.chain().focus().toggleHeading({ level: 1 }).run() },
|
|
30
30
|
{ label: "Heading 2", icon: "i-lucide-heading-2", onSelect: () => editor.chain().focus().toggleHeading({ level: 2 }).run() },
|
|
31
31
|
{ label: "Heading 3", icon: "i-lucide-heading-3", onSelect: () => editor.chain().focus().toggleHeading({ level: 3 }).run() },
|
|
32
|
+
{ label: "Heading 4", icon: "i-lucide-heading-4", onSelect: () => editor.chain().focus().toggleHeading({ level: 4 }).run() },
|
|
33
|
+
{ label: "Heading 5", icon: "i-lucide-heading-5", onSelect: () => editor.chain().focus().toggleHeading({ level: 5 }).run() },
|
|
34
|
+
{ label: "Heading 6", icon: "i-lucide-heading-6", onSelect: () => editor.chain().focus().toggleHeading({ level: 6 }).run() },
|
|
32
35
|
{ label: "Bullet List", icon: "i-lucide-list", onSelect: () => editor.chain().focus().toggleBulletList().run() },
|
|
33
36
|
{ label: "Ordered List", icon: "i-lucide-list-ordered", onSelect: () => editor.chain().focus().toggleOrderedList().run() },
|
|
34
37
|
{ label: "Task List", icon: "i-lucide-list-check", onSelect: () => editor.chain().focus().toggleTaskList().run() },
|
|
@@ -131,7 +134,22 @@ export function useEditorDragHandle(pageConfig) {
|
|
|
131
134
|
label: "Insert doc link",
|
|
132
135
|
icon: "i-lucide-file-symlink",
|
|
133
136
|
onSelect: () => pageConfig.onInsertDocLink()
|
|
134
|
-
}] : []
|
|
137
|
+
}] : [],
|
|
138
|
+
...pageConfig?.onCreateChildDoc ? [{
|
|
139
|
+
label: "Create child document",
|
|
140
|
+
icon: "i-lucide-file-plus",
|
|
141
|
+
onSelect: () => pageConfig.onCreateChildDoc()
|
|
142
|
+
}] : [],
|
|
143
|
+
{
|
|
144
|
+
label: "Reset formatting",
|
|
145
|
+
icon: "i-lucide-eraser",
|
|
146
|
+
onSelect: () => {
|
|
147
|
+
if (pos === void 0) return;
|
|
148
|
+
const node = editor.state.doc.nodeAt(pos);
|
|
149
|
+
if (!node) return;
|
|
150
|
+
editor.chain().focus().setTextSelection({ from: pos, to: pos + node.nodeSize }).clearNodes().unsetAllMarks().run();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
135
153
|
],
|
|
136
154
|
[
|
|
137
155
|
{
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { computed } from "vue";
|
|
2
|
+
import { useRuntimeConfig } from "#imports";
|
|
2
3
|
import { META_FIELD_DEFINITIONS } from "../utils/metaFieldDefinitions.js";
|
|
3
4
|
import { usePluginRegistry } from "./usePluginRegistry.js";
|
|
4
5
|
export function useEditorSuggestions(options = {}) {
|
|
5
6
|
const registry = usePluginRegistry();
|
|
7
|
+
const disabledBuiltins = computed(() => {
|
|
8
|
+
try {
|
|
9
|
+
return useRuntimeConfig().public?.abracadabra?.disabledBuiltins ?? [];
|
|
10
|
+
} catch {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const extEnabled = (name) => !disabledBuiltins.value.includes(name);
|
|
6
15
|
const items = computed(() => {
|
|
7
16
|
const ctx = { docId: options.docId ?? "" };
|
|
8
17
|
const base = options.onlyPlugins ? [] : [
|
|
@@ -47,7 +56,23 @@ export function useEditorSuggestions(options = {}) {
|
|
|
47
56
|
{ kind: "codeGroup", label: "Code Group", icon: "i-lucide-folder-code", description: "Tabbed code blocks", keywords: ["code", "multi", "language"] },
|
|
48
57
|
{ kind: "codePreview", label: "Code Preview", icon: "i-lucide-eye", description: "Live code with preview", keywords: ["demo", "preview", "live"] },
|
|
49
58
|
{ kind: "codeTree", label: "Code Tree", icon: "i-lucide-folder-tree", description: "File tree visualization", keywords: ["files", "directory", "structure"] },
|
|
50
|
-
{ kind: "fieldGroup", label: "Field Group", icon: "i-lucide-rows-3", description: "Group of form fields", keywords: ["form", "fields", "properties", "meta"] }
|
|
59
|
+
{ kind: "fieldGroup", label: "Field Group", icon: "i-lucide-rows-3", description: "Group of form fields", keywords: ["form", "fields", "properties", "meta"] },
|
|
60
|
+
// Optional built-ins — filtered out when listed in disabledBuiltins.
|
|
61
|
+
...extEnabled("divider") ? [{ kind: "divider", label: "Labelled Divider", icon: "i-lucide-separator-horizontal", description: "Section divider with optional label", keywords: ["line", "separator", "section"] }] : [],
|
|
62
|
+
...extEnabled("quote") ? [{ kind: "quote", label: "Quote", icon: "i-lucide-quote", description: "Quoted text with author and avatar", keywords: ["blockquote", "citation", "testimonial"] }] : [],
|
|
63
|
+
...extEnabled("figure") ? [{ kind: "figure", label: "Figure", icon: "i-lucide-image", description: "Image with caption", keywords: ["image", "picture", "photo", "caption"] }] : [],
|
|
64
|
+
...extEnabled("embed") ? [{ kind: "embed", label: "Embed", icon: "i-lucide-code-xml", description: "iframe embed (CodePen, Figma, \u2026)", keywords: ["iframe", "codepen", "figma", "tweet"] }] : [],
|
|
65
|
+
...extEnabled("video") ? [{ kind: "video", label: "Video", icon: "i-lucide-play-circle", description: "YouTube, Vimeo, or self-hosted video", keywords: ["youtube", "vimeo", "mp4", "movie"] }] : [],
|
|
66
|
+
...extEnabled("stat") ? [{ kind: "stat", label: "Stat", icon: "i-lucide-chart-no-axes-column", description: "KPI display with label, value, and trend", keywords: ["metric", "kpi", "number", "dashboard"] }] : [],
|
|
67
|
+
...extEnabled("statGroup") ? [{ kind: "statGroup", label: "Stat Group", icon: "i-lucide-grid-2x2", description: "Grid of three KPI stats", keywords: ["metrics", "kpi", "dashboard"] }] : [],
|
|
68
|
+
...extEnabled("button") ? [{ kind: "button", label: "Button", icon: "i-lucide-mouse-pointer-click", description: "Call-to-action button with link", keywords: ["cta", "link", "action"] }] : [],
|
|
69
|
+
...extEnabled("buttonGroup") ? [{ kind: "buttonGroup", label: "Button Group", icon: "i-lucide-square-mouse-pointer", description: "Two paired buttons", keywords: ["cta", "actions", "paired"] }] : [],
|
|
70
|
+
...extEnabled("progress") ? [{ kind: "progress", label: "Progress Bar", icon: "i-lucide-bar-chart-horizontal", description: "Labeled progress bar", keywords: ["bar", "completion", "percent"] }] : [],
|
|
71
|
+
...extEnabled("spoiler") ? [{ kind: "spoiler", label: "Spoiler", icon: "i-lucide-eye-off", description: "Hide-and-reveal block", keywords: ["hide", "collapse", "spoiler"] }] : [],
|
|
72
|
+
...extEnabled("colorSwatch") ? [{ kind: "colorSwatch", label: "Color Swatch", icon: "i-lucide-palette", description: "Inline color chip with picker", keywords: ["color", "swatch", "token", "palette"] }] : [],
|
|
73
|
+
...extEnabled("mathBlock") ? [{ kind: "mathBlock", label: "Math (block)", icon: "i-lucide-square-sigma", description: "Display-mode LaTeX equation", keywords: ["katex", "latex", "equation", "formula", "math"] }] : [],
|
|
74
|
+
...extEnabled("mathInline") ? [{ kind: "mathInline", label: "Math (inline)", icon: "i-lucide-sigma", description: "Inline LaTeX expression", keywords: ["katex", "latex", "inline math"] }] : [],
|
|
75
|
+
...extEnabled("diff") ? [{ kind: "diff", label: "Diff", icon: "i-lucide-git-compare", description: "Side-by-side text diff", keywords: ["compare", "changes", "git"] }] : []
|
|
51
76
|
]
|
|
52
77
|
];
|
|
53
78
|
try {
|
|
@@ -43,7 +43,15 @@ export function useEditorToolbar(options = {}) {
|
|
|
43
43
|
{ kind: "mark", mark: "strike", icon: "i-lucide-strikethrough", tooltip: { text: "Strikethrough" } },
|
|
44
44
|
{ kind: "mark", mark: "code", icon: "i-lucide-code", tooltip: { text: "Inline code" } }
|
|
45
45
|
], [
|
|
46
|
-
|
|
46
|
+
// Slot-based items — UEditorToolbar renders whatever the consumer
|
|
47
|
+
// supplies via <template #link>, <template #doc-link>, etc. AEditor
|
|
48
|
+
// provides defaults for `link` and `doc-link` (the popover primitives);
|
|
49
|
+
// `create-child-doc` and `send-to-chat` render nothing unless the
|
|
50
|
+
// consuming app fills the slot.
|
|
51
|
+
{ slot: "link" },
|
|
52
|
+
{ slot: "doc-link" },
|
|
53
|
+
{ slot: "create-child-doc" },
|
|
54
|
+
{ slot: "send-to-chat" }
|
|
47
55
|
]];
|
|
48
56
|
try {
|
|
49
57
|
const pluginGroups = registry.getAllToolbarItems(ctx);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useEmailVerification
|
|
3
|
+
*
|
|
4
|
+
* Wraps the email-verification half of the auth lifecycle.
|
|
5
|
+
* - `request()` triggers a verification email (rate-limited 1/min, 10/day).
|
|
6
|
+
* - `confirm(token)` consumes the token from the email link; no auth needed.
|
|
7
|
+
*
|
|
8
|
+
* `verified` mirrors the most recent local result of `confirm()` — the
|
|
9
|
+
* server doesn't currently expose `email_verified_at` on `getMe()`, so
|
|
10
|
+
* the canonical signal is "did `confirm()` succeed in this session".
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* const { verified, isRequesting, isConfirming, error, request, confirm } = useEmailVerification()
|
|
14
|
+
*/
|
|
15
|
+
declare function request(): Promise<void>;
|
|
16
|
+
declare function confirm(token: string): Promise<void>;
|
|
17
|
+
export declare function useEmailVerification(): {
|
|
18
|
+
/** True after a successful `confirm()` in the current session. */
|
|
19
|
+
verified: import("vue").Ref<boolean, boolean>;
|
|
20
|
+
/** Whether a `request()` is in flight. */
|
|
21
|
+
isRequesting: import("vue").Ref<boolean, boolean>;
|
|
22
|
+
/** Whether a `confirm()` is in flight. */
|
|
23
|
+
isConfirming: import("vue").Ref<boolean, boolean>;
|
|
24
|
+
/** Last error message, or null. */
|
|
25
|
+
error: import("vue").Ref<string | null, string | null>;
|
|
26
|
+
/** Epoch ms of the last successful `request()`, or null. */
|
|
27
|
+
lastSentAt: import("vue").Ref<number | null, number | null>;
|
|
28
|
+
/** Send a verification email to the current user. Requires auth. */
|
|
29
|
+
request: typeof request;
|
|
30
|
+
/** Confirm a verification token from the email link. No auth required. */
|
|
31
|
+
confirm: typeof confirm;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
import { useAbracadabra } from "#imports";
|
|
3
|
+
const verified = ref(false);
|
|
4
|
+
const isRequesting = ref(false);
|
|
5
|
+
const isConfirming = ref(false);
|
|
6
|
+
const error = ref(null);
|
|
7
|
+
const lastSentAt = ref(null);
|
|
8
|
+
async function request() {
|
|
9
|
+
const abra = useAbracadabra();
|
|
10
|
+
const client = abra.client.value;
|
|
11
|
+
if (!client) throw new Error("Not connected");
|
|
12
|
+
isRequesting.value = true;
|
|
13
|
+
error.value = null;
|
|
14
|
+
try {
|
|
15
|
+
await client.requestEmailVerification();
|
|
16
|
+
lastSentAt.value = Date.now();
|
|
17
|
+
} catch (e) {
|
|
18
|
+
error.value = e instanceof Error ? e.message : "Failed to send verification email";
|
|
19
|
+
throw e;
|
|
20
|
+
} finally {
|
|
21
|
+
isRequesting.value = false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async function confirm(token) {
|
|
25
|
+
const abra = useAbracadabra();
|
|
26
|
+
const client = abra.client.value;
|
|
27
|
+
if (!client) throw new Error("Not connected");
|
|
28
|
+
isConfirming.value = true;
|
|
29
|
+
error.value = null;
|
|
30
|
+
try {
|
|
31
|
+
await client.confirmEmailVerification(token);
|
|
32
|
+
verified.value = true;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
error.value = e instanceof Error ? e.message : "Verification failed";
|
|
35
|
+
verified.value = false;
|
|
36
|
+
throw e;
|
|
37
|
+
} finally {
|
|
38
|
+
isConfirming.value = false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function useEmailVerification() {
|
|
42
|
+
return {
|
|
43
|
+
/** True after a successful `confirm()` in the current session. */
|
|
44
|
+
verified,
|
|
45
|
+
/** Whether a `request()` is in flight. */
|
|
46
|
+
isRequesting,
|
|
47
|
+
/** Whether a `confirm()` is in flight. */
|
|
48
|
+
isConfirming,
|
|
49
|
+
/** Last error message, or null. */
|
|
50
|
+
error,
|
|
51
|
+
/** Epoch ms of the last successful `request()`, or null. */
|
|
52
|
+
lastSentAt,
|
|
53
|
+
/** Send a verification email to the current user. Requires auth. */
|
|
54
|
+
request,
|
|
55
|
+
/** Confirm a verification token from the email link. No auth required. */
|
|
56
|
+
confirm
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -71,9 +71,7 @@ function _migrateFromLocalStorage(provider) {
|
|
|
71
71
|
const { Y: YModule } = provider;
|
|
72
72
|
const entry = new YModule.Map();
|
|
73
73
|
entry.set("label", server.label);
|
|
74
|
-
if (server.hubDocId) entry.set("hubDocId", server.hubDocId);
|
|
75
74
|
if (server.entryDocId) entry.set("entryDocId", server.entryDocId);
|
|
76
|
-
if (server.spacesEnabled) entry.set("spacesEnabled", server.spacesEnabled);
|
|
77
75
|
entry.set("addedAt", Date.now());
|
|
78
76
|
serversMap.set(server.url, entry);
|
|
79
77
|
}
|
|
@@ -96,7 +94,6 @@ function _migrateFromLocalStorage(provider) {
|
|
|
96
94
|
yMap.set("docId", space.docId);
|
|
97
95
|
if (space.remoteSpaceId) yMap.set("remoteSpaceId", space.remoteSpaceId);
|
|
98
96
|
yMap.set("visibility", space.visibility);
|
|
99
|
-
yMap.set("isHub", space.isHub);
|
|
100
97
|
yMap.set("order", space.order);
|
|
101
98
|
if (space.lastSyncedAt) yMap.set("lastSyncedAt", space.lastSyncedAt);
|
|
102
99
|
yMap.set("createdAt", space.createdAt);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type Ref, type MaybeRefOrGetter } from 'vue';
|
|
2
|
+
export interface PresenceUser {
|
|
3
|
+
name: string;
|
|
4
|
+
color: string;
|
|
5
|
+
publicKey?: string;
|
|
6
|
+
clientId: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Renderer-facing helper for "who is currently viewing this item" indicators.
|
|
10
|
+
*
|
|
11
|
+
* Derives a `docId → users` map from awareness states (both `state.docId`
|
|
12
|
+
* for full-page navigation and `state.viewingDocId` for slideover-opened
|
|
13
|
+
* docs), so a user with a side panel open shows up on both the parent doc
|
|
14
|
+
* and the panel doc.
|
|
15
|
+
*
|
|
16
|
+
* Renderers iterate their items and call `getViewers(item.id)` to render
|
|
17
|
+
* avatars and a viewing-style accent. Hover-style accents remain
|
|
18
|
+
* renderer-local; viewing is always sourced from this shared map so it
|
|
19
|
+
* stays consistent across renderers.
|
|
20
|
+
*
|
|
21
|
+
* Ported from cou-sh/app/composables/useItemPresence.ts. The cou-sh version
|
|
22
|
+
* aggregates across all connected `useSpaceConnections` providers; this
|
|
23
|
+
* single-space port reads from the active provider only. Multi-space
|
|
24
|
+
* aggregation is deferred until `useAggregatedPresence` /
|
|
25
|
+
* `useSpaceConnections` are ported (~1200 LOC, see _NEXT_ROUND_BLOCKERS.md).
|
|
26
|
+
*/
|
|
27
|
+
export declare function useItemPresence(): {
|
|
28
|
+
getViewers: (itemId: string | undefined | null) => PresenceUser[];
|
|
29
|
+
viewingColor: (itemId: string | undefined | null) => string | null;
|
|
30
|
+
viewingBorderLeft: (itemId: string | undefined | null) => {
|
|
31
|
+
borderLeft: string;
|
|
32
|
+
} | undefined;
|
|
33
|
+
viewingRingStyle: (itemId: string | undefined | null) => {
|
|
34
|
+
boxShadow: string;
|
|
35
|
+
outline: string;
|
|
36
|
+
} | undefined;
|
|
37
|
+
docPresence: import("vue").ComputedRef<Map<string, PresenceUser[]>>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Broadcasts "this user has a slideover open on `nodeId`" to the active
|
|
41
|
+
* provider's awareness, where it lands on `state.viewingDocId`. This is the
|
|
42
|
+
* write-side counterpart to `useItemPresence().getViewers()`.
|
|
43
|
+
*
|
|
44
|
+
* Single-space port: writes only to the current provider's awareness. The
|
|
45
|
+
* cou-sh version routes by `spaceId` lookup across multi-space connections.
|
|
46
|
+
*/
|
|
47
|
+
export declare function useViewingBroadcast(parentDocIdRef: MaybeRefOrGetter<string>, openNodeId: Ref<string | null>): void;
|