@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
|
@@ -15,8 +15,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
15
15
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
16
16
|
onClick?: (() => any) | undefined;
|
|
17
17
|
}>, {
|
|
18
|
-
syncing: boolean;
|
|
19
18
|
progress: number;
|
|
19
|
+
syncing: boolean;
|
|
20
20
|
collapsed: boolean;
|
|
21
21
|
errorCount: number;
|
|
22
22
|
pendingUploads: number;
|
|
@@ -15,8 +15,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
15
15
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
16
16
|
onClick?: (() => any) | undefined;
|
|
17
17
|
}>, {
|
|
18
|
-
syncing: boolean;
|
|
19
18
|
progress: number;
|
|
19
|
+
syncing: boolean;
|
|
20
20
|
collapsed: boolean;
|
|
21
21
|
errorCount: number;
|
|
22
22
|
pendingUploads: number;
|
|
@@ -12,13 +12,13 @@ type __VLS_Props = {
|
|
|
12
12
|
extraItems?: DropdownMenuItem[][];
|
|
13
13
|
};
|
|
14
14
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
-
logout: () => any;
|
|
16
15
|
"open-settings": () => any;
|
|
17
16
|
"open-account": () => any;
|
|
17
|
+
logout: () => any;
|
|
18
18
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
|
-
onLogout?: (() => any) | undefined;
|
|
20
19
|
"onOpen-settings"?: (() => any) | undefined;
|
|
21
20
|
"onOpen-account"?: (() => any) | undefined;
|
|
21
|
+
onLogout?: (() => any) | undefined;
|
|
22
22
|
}>, {
|
|
23
23
|
color: string;
|
|
24
24
|
collapsed: boolean;
|
|
@@ -12,13 +12,13 @@ type __VLS_Props = {
|
|
|
12
12
|
extraItems?: DropdownMenuItem[][];
|
|
13
13
|
};
|
|
14
14
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
-
logout: () => any;
|
|
16
15
|
"open-settings": () => any;
|
|
17
16
|
"open-account": () => any;
|
|
17
|
+
logout: () => any;
|
|
18
18
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
|
-
onLogout?: (() => any) | undefined;
|
|
20
19
|
"onOpen-settings"?: (() => any) | undefined;
|
|
21
20
|
"onOpen-account"?: (() => any) | undefined;
|
|
21
|
+
onLogout?: (() => any) | undefined;
|
|
22
22
|
}>, {
|
|
23
23
|
color: string;
|
|
24
24
|
collapsed: boolean;
|
|
@@ -78,10 +78,10 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
|
|
|
78
78
|
currentColor: string;
|
|
79
79
|
isClaimed: boolean;
|
|
80
80
|
avatarStyle: string;
|
|
81
|
+
connectionError: string;
|
|
81
82
|
colors: string[];
|
|
82
83
|
neutrals: string[];
|
|
83
84
|
currentNeutral: string;
|
|
84
|
-
connectionError: string;
|
|
85
85
|
claimLoading: boolean;
|
|
86
86
|
claimError: string | null;
|
|
87
87
|
claimSuccess: boolean;
|
|
@@ -78,10 +78,10 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
|
|
|
78
78
|
currentColor: string;
|
|
79
79
|
isClaimed: boolean;
|
|
80
80
|
avatarStyle: string;
|
|
81
|
+
connectionError: string;
|
|
81
82
|
colors: string[];
|
|
82
83
|
neutrals: string[];
|
|
83
84
|
currentNeutral: string;
|
|
84
|
-
connectionError: string;
|
|
85
85
|
claimLoading: boolean;
|
|
86
86
|
claimError: string | null;
|
|
87
87
|
claimSuccess: boolean;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import type { MaybeRefOrGetter } from 'vue';
|
|
3
|
+
/**
|
|
4
|
+
* Per-peer text-input caret ranges — the building block under the `peers`
|
|
5
|
+
* prop on `<AInput>` / `<ATextarea>`.
|
|
6
|
+
*
|
|
7
|
+
* Built on top of `useAAEphemeral`. The local element's `selectionStart`
|
|
8
|
+
* and `selectionEnd` are written into the awareness slot whenever the
|
|
9
|
+
* element gains focus or its selection changes; clear on blur. Every other
|
|
10
|
+
* peer's caret is exposed as a typed list ready to render as a coloured
|
|
11
|
+
* label inside the input.
|
|
12
|
+
*
|
|
13
|
+
* Awareness already RAF-throttles emitted updates downstream; we additionally
|
|
14
|
+
* coalesce write-side via the natural `selectionchange` cadence so a fast
|
|
15
|
+
* cursor still produces at most one frame of work per render cycle.
|
|
16
|
+
*/
|
|
17
|
+
export interface PeerCaret {
|
|
18
|
+
clientId: number;
|
|
19
|
+
start: number;
|
|
20
|
+
end: number;
|
|
21
|
+
user?: {
|
|
22
|
+
name?: string;
|
|
23
|
+
color?: string;
|
|
24
|
+
publicKey?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare function useAACaret(fieldKey: MaybeRefOrGetter<string>, elementRef: Ref<HTMLInputElement | HTMLTextAreaElement | null | undefined>): {
|
|
28
|
+
carets: import("vue").ComputedRef<PeerCaret[]>;
|
|
29
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { computed, onScopeDispose, watch } from "vue";
|
|
2
|
+
import { useAAEphemeral } from "./useAAEphemeral.js";
|
|
3
|
+
export function useAACaret(fieldKey, elementRef) {
|
|
4
|
+
const { peers, setLocal } = useAAEphemeral(fieldKey);
|
|
5
|
+
let attached = null;
|
|
6
|
+
function publish() {
|
|
7
|
+
if (!attached) return;
|
|
8
|
+
const start = attached.selectionStart;
|
|
9
|
+
const end = attached.selectionEnd;
|
|
10
|
+
if (start == null || end == null) return;
|
|
11
|
+
setLocal({ start, end });
|
|
12
|
+
}
|
|
13
|
+
function clear() {
|
|
14
|
+
setLocal(null);
|
|
15
|
+
}
|
|
16
|
+
function onSelectionChange() {
|
|
17
|
+
if (!attached) return;
|
|
18
|
+
if (document.activeElement !== attached) return;
|
|
19
|
+
publish();
|
|
20
|
+
}
|
|
21
|
+
function publishSoon() {
|
|
22
|
+
queueMicrotask(publish);
|
|
23
|
+
}
|
|
24
|
+
function attach(el) {
|
|
25
|
+
if (attached === el) return;
|
|
26
|
+
detach();
|
|
27
|
+
attached = el;
|
|
28
|
+
el.addEventListener("focus", publish);
|
|
29
|
+
el.addEventListener("blur", clear);
|
|
30
|
+
el.addEventListener("keydown", publishSoon);
|
|
31
|
+
el.addEventListener("keyup", publish);
|
|
32
|
+
el.addEventListener("mouseup", publish);
|
|
33
|
+
el.addEventListener("mousedown", publishSoon);
|
|
34
|
+
el.addEventListener("input", publish);
|
|
35
|
+
document.addEventListener("selectionchange", onSelectionChange);
|
|
36
|
+
}
|
|
37
|
+
function detach() {
|
|
38
|
+
if (!attached) return;
|
|
39
|
+
attached.removeEventListener("focus", publish);
|
|
40
|
+
attached.removeEventListener("blur", clear);
|
|
41
|
+
attached.removeEventListener("keydown", publishSoon);
|
|
42
|
+
attached.removeEventListener("keyup", publish);
|
|
43
|
+
attached.removeEventListener("mouseup", publish);
|
|
44
|
+
attached.removeEventListener("mousedown", publishSoon);
|
|
45
|
+
attached.removeEventListener("input", publish);
|
|
46
|
+
document.removeEventListener("selectionchange", onSelectionChange);
|
|
47
|
+
attached = null;
|
|
48
|
+
clear();
|
|
49
|
+
}
|
|
50
|
+
watch(elementRef, (el) => {
|
|
51
|
+
if (el) attach(el);
|
|
52
|
+
else detach();
|
|
53
|
+
}, { immediate: true, flush: "post" });
|
|
54
|
+
onScopeDispose(detach);
|
|
55
|
+
const carets = computed(
|
|
56
|
+
() => peers.value.map((p) => ({
|
|
57
|
+
clientId: p.clientId,
|
|
58
|
+
start: p.value.start,
|
|
59
|
+
end: p.value.end,
|
|
60
|
+
user: p.user
|
|
61
|
+
}))
|
|
62
|
+
);
|
|
63
|
+
return { carets };
|
|
64
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MaybeRefOrGetter } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Per-peer ephemeral UI state — the building block under the `peers` prop on
|
|
4
|
+
* every aware component.
|
|
5
|
+
*
|
|
6
|
+
* Each peer writes its value into a *namespaced slot* on its own awareness
|
|
7
|
+
* record (`peer:<fieldKey>`), so writes never collide across peers. Reads
|
|
8
|
+
* return every peer's current value, excluding the local user, with their
|
|
9
|
+
* `user` info already attached.
|
|
10
|
+
*
|
|
11
|
+
* Use cases:
|
|
12
|
+
* - text input caret ranges (one per peer)
|
|
13
|
+
* - currently-highlighted dropdown option (one per peer)
|
|
14
|
+
* - drag delta on a slider thumb (one per peer)
|
|
15
|
+
* - free-floating mouse cursor coords (one per peer)
|
|
16
|
+
*
|
|
17
|
+
* Awareness already RAF-throttles its `change` event in `useAwareness`, so
|
|
18
|
+
* even a 60Hz writer doesn't storm Vue render.
|
|
19
|
+
*/
|
|
20
|
+
export interface PeerValue<T> {
|
|
21
|
+
clientId: number;
|
|
22
|
+
value: T;
|
|
23
|
+
user?: {
|
|
24
|
+
name?: string;
|
|
25
|
+
color?: string;
|
|
26
|
+
publicKey?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function useAAEphemeral<T = unknown>(fieldKey: MaybeRefOrGetter<string>): {
|
|
30
|
+
peers: import("vue").ComputedRef<PeerValue<T>[]>;
|
|
31
|
+
setLocal: (value: T | null) => void;
|
|
32
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { computed } from "vue";
|
|
2
|
+
import { useAwareness } from "./useAwareness.js";
|
|
3
|
+
import { useAbracadabra } from "./useAbracadabra.js";
|
|
4
|
+
function resolveKey(fieldKey) {
|
|
5
|
+
if (typeof fieldKey === "function") return fieldKey();
|
|
6
|
+
if (fieldKey && typeof fieldKey === "object" && "value" in fieldKey) return fieldKey.value;
|
|
7
|
+
return fieldKey;
|
|
8
|
+
}
|
|
9
|
+
export function useAAEphemeral(fieldKey) {
|
|
10
|
+
const { states, setField } = useAwareness();
|
|
11
|
+
const { provider } = useAbracadabra();
|
|
12
|
+
const slot = computed(() => `peer:${resolveKey(fieldKey)}`);
|
|
13
|
+
function setLocal(value) {
|
|
14
|
+
setField(slot.value, value);
|
|
15
|
+
}
|
|
16
|
+
const peers = computed(() => {
|
|
17
|
+
const out = [];
|
|
18
|
+
const key = slot.value;
|
|
19
|
+
const localId = provider.value?.awareness?.clientID;
|
|
20
|
+
for (const [clientId, state] of states.value.entries()) {
|
|
21
|
+
if (clientId === localId) continue;
|
|
22
|
+
const v = state[key];
|
|
23
|
+
if (v === null || v === void 0) continue;
|
|
24
|
+
out.push({
|
|
25
|
+
clientId,
|
|
26
|
+
value: v,
|
|
27
|
+
user: state.user
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
});
|
|
32
|
+
return { peers, setLocal };
|
|
33
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MaybeRefOrGetter } from 'vue';
|
|
2
2
|
import type { AwarenessPeer } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Per-element interaction awareness.
|
|
@@ -16,11 +16,13 @@ import type { AwarenessPeer } from '../types.js';
|
|
|
16
16
|
*
|
|
17
17
|
* Field convention: "{scope}:{element-id}", e.g. "doc:toolbar:bold", "settings:save-btn"
|
|
18
18
|
*/
|
|
19
|
-
export declare function useAAField(key:
|
|
19
|
+
export declare function useAAField(key: MaybeRefOrGetter<string>): {
|
|
20
20
|
hoverers: import("vue").ComputedRef<AwarenessPeer[]>;
|
|
21
21
|
pressers: import("vue").ComputedRef<AwarenessPeer[]>;
|
|
22
22
|
focusers: import("vue").ComputedRef<AwarenessPeer[]>;
|
|
23
23
|
hasRemoteActivity: import("vue").ComputedRef<boolean>;
|
|
24
|
+
localPress: import("vue").Ref<boolean, boolean>;
|
|
25
|
+
isPressed: import("vue").ComputedRef<boolean>;
|
|
24
26
|
handlers: {
|
|
25
27
|
mouseenter: () => void;
|
|
26
28
|
mouseleave: () => void;
|
|
@@ -33,6 +35,12 @@ export declare function useAAField(key: MaybeRef<string>): {
|
|
|
33
35
|
mouseenter: () => void;
|
|
34
36
|
mouseleave: () => void;
|
|
35
37
|
};
|
|
38
|
+
hoverPressHandlers: {
|
|
39
|
+
mouseenter: () => void;
|
|
40
|
+
mouseleave: () => void;
|
|
41
|
+
mousedown: () => void;
|
|
42
|
+
mouseup: () => void;
|
|
43
|
+
};
|
|
36
44
|
onMouseenter: () => void;
|
|
37
45
|
onMouseleave: () => void;
|
|
38
46
|
onMousedown: () => void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { computed, isRef } from "vue";
|
|
1
|
+
import { computed, isRef, onScopeDispose, ref } from "vue";
|
|
2
2
|
import { useAwareness } from "./useAwareness.js";
|
|
3
3
|
import { useAwarenessPeers } from "./useAwarenessPeers.js";
|
|
4
4
|
export function useAAField(key) {
|
|
5
5
|
const { setField } = useAwareness();
|
|
6
6
|
const { peers } = useAwarenessPeers();
|
|
7
|
-
const fieldKey = computed(
|
|
7
|
+
const fieldKey = computed(
|
|
8
|
+
() => typeof key === "function" ? key() : isRef(key) ? key.value : key
|
|
9
|
+
);
|
|
8
10
|
const hoverers = computed(
|
|
9
11
|
() => peers.value.filter((p) => p.hover === fieldKey.value)
|
|
10
12
|
);
|
|
@@ -17,6 +19,21 @@ export function useAAField(key) {
|
|
|
17
19
|
const hasRemoteActivity = computed(
|
|
18
20
|
() => hoverers.value.length > 0 || pressers.value.length > 0 || focusers.value.length > 0
|
|
19
21
|
);
|
|
22
|
+
const localPress = ref(false);
|
|
23
|
+
function releaseLocalPress() {
|
|
24
|
+
if (!localPress.value) return;
|
|
25
|
+
localPress.value = false;
|
|
26
|
+
}
|
|
27
|
+
if (typeof window !== "undefined") {
|
|
28
|
+
window.addEventListener("pointerup", releaseLocalPress);
|
|
29
|
+
window.addEventListener("pointercancel", releaseLocalPress);
|
|
30
|
+
window.addEventListener("blur", releaseLocalPress);
|
|
31
|
+
onScopeDispose(() => {
|
|
32
|
+
window.removeEventListener("pointerup", releaseLocalPress);
|
|
33
|
+
window.removeEventListener("pointercancel", releaseLocalPress);
|
|
34
|
+
window.removeEventListener("blur", releaseLocalPress);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
20
37
|
function onMouseenter() {
|
|
21
38
|
setField("hover", fieldKey.value);
|
|
22
39
|
}
|
|
@@ -24,9 +41,11 @@ export function useAAField(key) {
|
|
|
24
41
|
setField("hover", null);
|
|
25
42
|
}
|
|
26
43
|
function onMousedown() {
|
|
44
|
+
localPress.value = true;
|
|
27
45
|
setField("press", fieldKey.value);
|
|
28
46
|
}
|
|
29
47
|
function onMouseup() {
|
|
48
|
+
localPress.value = false;
|
|
30
49
|
setField("press", null);
|
|
31
50
|
}
|
|
32
51
|
function onFocus() {
|
|
@@ -35,6 +54,7 @@ export function useAAField(key) {
|
|
|
35
54
|
function onBlur() {
|
|
36
55
|
setField("focus", null);
|
|
37
56
|
}
|
|
57
|
+
const isPressed = computed(() => localPress.value || pressers.value.length > 0);
|
|
38
58
|
const handlers = {
|
|
39
59
|
mouseenter: onMouseenter,
|
|
40
60
|
mouseleave: onMouseleave,
|
|
@@ -47,13 +67,22 @@ export function useAAField(key) {
|
|
|
47
67
|
mouseenter: onMouseenter,
|
|
48
68
|
mouseleave: onMouseleave
|
|
49
69
|
};
|
|
70
|
+
const hoverPressHandlers = {
|
|
71
|
+
mouseenter: onMouseenter,
|
|
72
|
+
mouseleave: onMouseleave,
|
|
73
|
+
mousedown: onMousedown,
|
|
74
|
+
mouseup: onMouseup
|
|
75
|
+
};
|
|
50
76
|
return {
|
|
51
77
|
hoverers,
|
|
52
78
|
pressers,
|
|
53
79
|
focusers,
|
|
54
80
|
hasRemoteActivity,
|
|
81
|
+
localPress,
|
|
82
|
+
isPressed,
|
|
55
83
|
handlers,
|
|
56
84
|
hoverHandlers,
|
|
85
|
+
hoverPressHandlers,
|
|
57
86
|
onMouseenter,
|
|
58
87
|
onMouseleave,
|
|
59
88
|
onMousedown,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type WritableComputedRef } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Optional collaborative value-sync layer for <AInput>, <ATextarea>, <ASelect>,
|
|
4
|
+
* and other Aware form components.
|
|
5
|
+
*
|
|
6
|
+
* Stores a single value keyed by `fieldKey` on a shared Y.Map called
|
|
7
|
+
* `aware-fields` on the root Y.Doc. All connected peers see edits in real time.
|
|
8
|
+
*
|
|
9
|
+
* Usage policy inside Aware components:
|
|
10
|
+
* - If consumer passes their own `v-model`, that takes precedence — sync is
|
|
11
|
+
* skipped unless `sync` is explicitly true.
|
|
12
|
+
* - When `sync` is true (or no v-model is provided), the composable produces
|
|
13
|
+
* a writable computed that reads/writes the Y.Map.
|
|
14
|
+
*
|
|
15
|
+
* Writes are debounced ~120ms to avoid storming the doc with every keystroke
|
|
16
|
+
* while still feeling immediate.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useAAFieldValue<T = unknown>(fieldKey: () => string, options?: {
|
|
19
|
+
debounceMs?: number;
|
|
20
|
+
defaultValue?: T;
|
|
21
|
+
}): WritableComputedRef<T | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Marker watcher: when `fieldKey` changes (rare), flush immediately
|
|
24
|
+
* to avoid writing the new value to the OLD key.
|
|
25
|
+
*/
|
|
26
|
+
export declare function watchFieldKey(fieldKey: () => string, onChange: (key: string, prev: string) => void): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { computed, watch } from "vue";
|
|
2
|
+
import { useAbracadabra } from "./useAbracadabra.js";
|
|
3
|
+
import { useSyncedMap } from "./useYDoc.js";
|
|
4
|
+
export function useAAFieldValue(fieldKey, options = {}) {
|
|
5
|
+
const { doc } = useAbracadabra();
|
|
6
|
+
const { data, set } = useSyncedMap(doc, "aware-fields");
|
|
7
|
+
const debounceMs = options.debounceMs ?? 120;
|
|
8
|
+
let timer = null;
|
|
9
|
+
let pending;
|
|
10
|
+
const flush = () => {
|
|
11
|
+
timer = null;
|
|
12
|
+
if (pending !== void 0) {
|
|
13
|
+
set(fieldKey(), pending);
|
|
14
|
+
} else {
|
|
15
|
+
set(fieldKey(), "");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
return computed({
|
|
19
|
+
get() {
|
|
20
|
+
const v = data[fieldKey()];
|
|
21
|
+
return v === void 0 ? options.defaultValue : v;
|
|
22
|
+
},
|
|
23
|
+
set(value) {
|
|
24
|
+
pending = value;
|
|
25
|
+
if (timer) clearTimeout(timer);
|
|
26
|
+
timer = setTimeout(flush, debounceMs);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function watchFieldKey(fieldKey, onChange) {
|
|
31
|
+
watch(() => fieldKey(), (k, prev) => onChange(k, prev));
|
|
32
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type DomPath } from '../utils/domPath.js';
|
|
2
|
+
/**
|
|
3
|
+
* App-wide "focus" broadcast for collaborative awareness.
|
|
4
|
+
*
|
|
5
|
+
* Emits a single per-peer `peer:aa:focus` slot describing where the local
|
|
6
|
+
* user is currently looking. Two payload shapes share the same slot so
|
|
7
|
+
* downstream consumers (text-selection layer, smart scroll-follow) can pick
|
|
8
|
+
* the one they care about:
|
|
9
|
+
*
|
|
10
|
+
* { kind: 'selection', route, start: DomPath, end: DomPath }
|
|
11
|
+
* { kind: 'anchor', route, anchor: DomPath }
|
|
12
|
+
*
|
|
13
|
+
* Selection takes precedence: if the user has a non-empty Selection the
|
|
14
|
+
* payload describes its endpoints; otherwise the payload anchors on the
|
|
15
|
+
* topmost scroll-visible element near the viewport top edge so that smart
|
|
16
|
+
* follow can centre the same conceptual region on a different-sized screen.
|
|
17
|
+
*
|
|
18
|
+
* The `route` discriminator scopes the payload — peers on different pages
|
|
19
|
+
* don't try to interpret each other's anchors. Other tabs only honour
|
|
20
|
+
* payloads whose route matches their own.
|
|
21
|
+
*/
|
|
22
|
+
/** Per-scroller anchor: identifies WHICH scroll container the anchor lives
|
|
23
|
+
* inside (by its DOM path, or omitted for window) plus the element that's
|
|
24
|
+
* currently top-visible inside that container and where it sits vertically.
|
|
25
|
+
* Each scrollable container the leader has — main viewport, sidebar,
|
|
26
|
+
* modal body, etc. — gets its own entry, so the follower can re-scroll
|
|
27
|
+
* each local container independently. */
|
|
28
|
+
export interface AAScrollAnchor {
|
|
29
|
+
/** Path to the scroll container element. Omitted = window/document. */
|
|
30
|
+
containerPath?: number[];
|
|
31
|
+
/** Path to the topmost-visible element inside that container. */
|
|
32
|
+
elementPath: number[];
|
|
33
|
+
/** Vertical position of the element relative to its container's viewport
|
|
34
|
+
* (0 = top edge of container, 1 = bottom edge). */
|
|
35
|
+
ratio: number;
|
|
36
|
+
}
|
|
37
|
+
/** Element-anchored pointer: stores WHICH element the cursor is over plus
|
|
38
|
+
* the offset within its bounding box. Receivers reconstruct the absolute
|
|
39
|
+
* viewport position by looking up the same element in their own DOM and
|
|
40
|
+
* adding the offset. Survives different scroll positions and viewport
|
|
41
|
+
* sizes without falling out of sync. */
|
|
42
|
+
export interface AAPointerAnchor {
|
|
43
|
+
elementPath: number[];
|
|
44
|
+
/** Offset from the element's top-left, in CSS pixels. */
|
|
45
|
+
dx: number;
|
|
46
|
+
dy: number;
|
|
47
|
+
}
|
|
48
|
+
export interface AAFocusPayload {
|
|
49
|
+
kind: 'selection' | 'anchor';
|
|
50
|
+
route: string;
|
|
51
|
+
start?: DomPath;
|
|
52
|
+
end?: DomPath;
|
|
53
|
+
/** Legacy single-anchor field (main viewport). Retained for backwards
|
|
54
|
+
* compatibility with older follower clients; prefer reading `scrollers`. */
|
|
55
|
+
anchor?: DomPath;
|
|
56
|
+
anchorRatio?: number;
|
|
57
|
+
/** All scrollable containers the leader has, with their top-visible
|
|
58
|
+
* anchor each. Lets the follower drive every scroller (main, sidebar,
|
|
59
|
+
* modal, etc.) in step instead of just the main viewport. */
|
|
60
|
+
scrollers?: AAScrollAnchor[];
|
|
61
|
+
/** Element-anchored pointer position (path + offset within element). The
|
|
62
|
+
* blob layer uses this to render the peer's mouse glow at the same
|
|
63
|
+
* *content* position regardless of either tab's scroll state. */
|
|
64
|
+
pointer?: AAPointerAnchor;
|
|
65
|
+
}
|
|
66
|
+
export declare function useAAFocus(): {
|
|
67
|
+
snapshot: () => void;
|
|
68
|
+
};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { onMounted, onScopeDispose } from "vue";
|
|
2
|
+
import { useRoute } from "#imports";
|
|
3
|
+
import { useAAEphemeral } from "./useAAEphemeral.js";
|
|
4
|
+
import { serializeRangeEndpoint, pathFromElement } from "../utils/domPath.js";
|
|
5
|
+
export function useAAFocus() {
|
|
6
|
+
const { setLocal } = useAAEphemeral("aa:focus");
|
|
7
|
+
const route = useRoute();
|
|
8
|
+
let raf = 0;
|
|
9
|
+
let lastSerialized = null;
|
|
10
|
+
const pointer = { clientX: 0, clientY: 0, fresh: false };
|
|
11
|
+
function publish(payload) {
|
|
12
|
+
if (pointer.fresh) {
|
|
13
|
+
const anchor = serializePointer(pointer.clientX, pointer.clientY);
|
|
14
|
+
if (anchor) payload.pointer = anchor;
|
|
15
|
+
}
|
|
16
|
+
payload.scrollers = collectScrollers();
|
|
17
|
+
const json = JSON.stringify(payload);
|
|
18
|
+
if (json === lastSerialized) return;
|
|
19
|
+
lastSerialized = json;
|
|
20
|
+
setLocal(payload);
|
|
21
|
+
}
|
|
22
|
+
function clear() {
|
|
23
|
+
if (lastSerialized === null) return;
|
|
24
|
+
lastSerialized = null;
|
|
25
|
+
setLocal(null);
|
|
26
|
+
}
|
|
27
|
+
function isAnchorable(el) {
|
|
28
|
+
if (!el) return false;
|
|
29
|
+
if (el.closest?.("[data-aa-skip-anchor]")) return false;
|
|
30
|
+
if (el.id?.startsWith("reka-")) return false;
|
|
31
|
+
if (el.classList?.contains("aa-global-focus-layer")) return false;
|
|
32
|
+
if (el.classList?.contains("aa-presence-blobs")) return false;
|
|
33
|
+
if (el.classList?.contains("aa-follow-bar")) return false;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
function pickAnchorElement() {
|
|
37
|
+
const viewportH = window.innerHeight || document.documentElement.clientHeight;
|
|
38
|
+
const targetY = viewportH * 0.25;
|
|
39
|
+
const candidates = document.elementsFromPoint(window.innerWidth / 2, targetY);
|
|
40
|
+
for (const el of candidates) {
|
|
41
|
+
if (!isAnchorable(el)) continue;
|
|
42
|
+
const rect = el.getBoundingClientRect();
|
|
43
|
+
return { el, ratio: rect.top / viewportH };
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function collectScrollers() {
|
|
48
|
+
const out = [];
|
|
49
|
+
const winPick = pickElementInside(null);
|
|
50
|
+
if (winPick) out.push(winPick);
|
|
51
|
+
const all = document.querySelectorAll("*");
|
|
52
|
+
const seen = /* @__PURE__ */ new Set();
|
|
53
|
+
for (const el of all) {
|
|
54
|
+
if (seen.has(el)) continue;
|
|
55
|
+
seen.add(el);
|
|
56
|
+
if (!isAnchorable(el)) continue;
|
|
57
|
+
const style = getComputedStyle(el);
|
|
58
|
+
const oy = style.overflowY;
|
|
59
|
+
if (oy !== "auto" && oy !== "scroll" || el.scrollHeight <= el.clientHeight + 4) continue;
|
|
60
|
+
const containerPath = pathFromElement(el);
|
|
61
|
+
if (!containerPath) continue;
|
|
62
|
+
const pick = pickElementInside(el);
|
|
63
|
+
if (pick) out.push({ ...pick, containerPath });
|
|
64
|
+
if (out.length > 6) break;
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function pickElementInside(container) {
|
|
69
|
+
let probeX, probeY, viewportTop, viewportH;
|
|
70
|
+
if (container) {
|
|
71
|
+
const r = container.getBoundingClientRect();
|
|
72
|
+
probeX = r.left + Math.min(r.width * 0.5, 80);
|
|
73
|
+
probeY = r.top + 6;
|
|
74
|
+
viewportTop = r.top;
|
|
75
|
+
viewportH = r.height;
|
|
76
|
+
} else {
|
|
77
|
+
const vh = window.innerHeight || document.documentElement.clientHeight;
|
|
78
|
+
probeX = window.innerWidth / 2;
|
|
79
|
+
probeY = vh * 0.05;
|
|
80
|
+
viewportTop = 0;
|
|
81
|
+
viewportH = vh;
|
|
82
|
+
}
|
|
83
|
+
const candidates = document.elementsFromPoint(probeX, probeY);
|
|
84
|
+
for (const el of candidates) {
|
|
85
|
+
if (!isAnchorable(el)) continue;
|
|
86
|
+
if (container && !container.contains(el)) continue;
|
|
87
|
+
if (container && el === container) continue;
|
|
88
|
+
const elPath = pathFromElement(el);
|
|
89
|
+
if (!elPath) continue;
|
|
90
|
+
const r = el.getBoundingClientRect();
|
|
91
|
+
const ratio = (r.top - viewportTop) / Math.max(1, viewportH);
|
|
92
|
+
return { elementPath: elPath, ratio };
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function serializePointer(clientX, clientY) {
|
|
97
|
+
const candidates = document.elementsFromPoint(clientX, clientY);
|
|
98
|
+
for (const el of candidates) {
|
|
99
|
+
if (!isAnchorable(el)) continue;
|
|
100
|
+
const path = pathFromElement(el);
|
|
101
|
+
if (!path) continue;
|
|
102
|
+
const r = el.getBoundingClientRect();
|
|
103
|
+
return { elementPath: path, dx: clientX - r.left, dy: clientY - r.top };
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
function snapshot() {
|
|
108
|
+
cancelAnimationFrame(raf);
|
|
109
|
+
raf = requestAnimationFrame(() => {
|
|
110
|
+
const sel = window.getSelection();
|
|
111
|
+
if (sel && sel.rangeCount > 0 && !sel.isCollapsed) {
|
|
112
|
+
const range = sel.getRangeAt(0);
|
|
113
|
+
const anchor = range.startContainer instanceof Element ? range.startContainer : range.startContainer.parentElement;
|
|
114
|
+
if (anchor?.closest?.("input, textarea")) return;
|
|
115
|
+
if (anchor?.closest?.(".aa-caret-layer")) return;
|
|
116
|
+
if (anchor?.closest?.(".aa-global-focus-layer")) return;
|
|
117
|
+
const start = serializeRangeEndpoint(range.startContainer, range.startOffset);
|
|
118
|
+
const end = serializeRangeEndpoint(range.endContainer, range.endOffset);
|
|
119
|
+
if (start && end) {
|
|
120
|
+
publish({ kind: "selection", route: route.path, start, end });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const picked = pickAnchorElement();
|
|
125
|
+
if (!picked) {
|
|
126
|
+
clear();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const path = pathFromElement(picked.el);
|
|
130
|
+
if (!path) {
|
|
131
|
+
clear();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
publish({ kind: "anchor", route: route.path, anchor: { elementPath: path }, anchorRatio: picked.ratio });
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function onSelectionChange() {
|
|
138
|
+
snapshot();
|
|
139
|
+
}
|
|
140
|
+
function onScroll() {
|
|
141
|
+
snapshot();
|
|
142
|
+
}
|
|
143
|
+
function onResize() {
|
|
144
|
+
snapshot();
|
|
145
|
+
}
|
|
146
|
+
function onPointerMove(e) {
|
|
147
|
+
pointer.clientX = e.clientX;
|
|
148
|
+
pointer.clientY = e.clientY;
|
|
149
|
+
pointer.fresh = true;
|
|
150
|
+
snapshot();
|
|
151
|
+
}
|
|
152
|
+
function onPointerLeave() {
|
|
153
|
+
pointer.fresh = false;
|
|
154
|
+
snapshot();
|
|
155
|
+
}
|
|
156
|
+
onMounted(() => {
|
|
157
|
+
document.addEventListener("selectionchange", onSelectionChange);
|
|
158
|
+
document.addEventListener("scroll", onScroll, { passive: true, capture: true });
|
|
159
|
+
document.addEventListener("pointermove", onPointerMove, { passive: true });
|
|
160
|
+
document.addEventListener("pointerleave", onPointerLeave);
|
|
161
|
+
window.addEventListener("resize", onResize, { passive: true });
|
|
162
|
+
snapshot();
|
|
163
|
+
});
|
|
164
|
+
onScopeDispose(() => {
|
|
165
|
+
cancelAnimationFrame(raf);
|
|
166
|
+
document.removeEventListener("selectionchange", onSelectionChange);
|
|
167
|
+
document.removeEventListener("scroll", onScroll, { capture: true });
|
|
168
|
+
document.removeEventListener("pointermove", onPointerMove);
|
|
169
|
+
document.removeEventListener("pointerleave", onPointerLeave);
|
|
170
|
+
window.removeEventListener("resize", onResize);
|
|
171
|
+
clear();
|
|
172
|
+
});
|
|
173
|
+
return { snapshot };
|
|
174
|
+
}
|