@datalayer/lexical-loro 0.2.3 → 0.2.5
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/lib/App.d.ts +2 -0
- package/lib/App.js +141 -0
- package/lib/Editor.d.ts +2 -0
- package/lib/Editor.js +115 -0
- package/lib/Settings.d.ts +2 -0
- package/lib/Settings.js +57 -0
- package/lib/appSettings.d.ts +36 -0
- package/lib/appSettings.js +48 -0
- package/lib/collab/loro/Bindings.d.ts +41 -0
- package/lib/collab/loro/Bindings.js +99 -0
- package/lib/collab/loro/Debug.d.ts +33 -0
- package/lib/collab/loro/Debug.js +452 -0
- package/lib/collab/loro/LexicalCollaborationContext.d.ts +19 -0
- package/lib/collab/loro/LexicalCollaborationContext.js +52 -0
- package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +24 -0
- package/lib/collab/loro/LexicalCollaborationPlugin.js +83 -0
- package/lib/collab/loro/State.d.ts +53 -0
- package/lib/collab/loro/State.js +94 -0
- package/lib/collab/loro/components/LoroCollaborationUI.d.ts +13 -0
- package/lib/collab/loro/components/LoroCollaborationUI.js +9 -0
- package/lib/collab/loro/components/LoroCollaborators.d.ts +8 -0
- package/lib/collab/loro/components/LoroCollaborators.js +102 -0
- package/lib/collab/loro/components/index.d.ts +2 -0
- package/lib/collab/loro/components/index.js +6 -0
- package/lib/collab/loro/index.d.ts +6 -0
- package/lib/collab/loro/index.js +10 -0
- package/lib/collab/loro/integrators/BaseIntegrator.d.ts +14 -0
- package/lib/collab/loro/integrators/BaseIntegrator.js +5 -0
- package/lib/collab/loro/integrators/CounterIntegrator.d.ts +23 -0
- package/lib/collab/loro/integrators/CounterIntegrator.js +44 -0
- package/lib/collab/loro/integrators/ListIntegrator.d.ts +23 -0
- package/lib/collab/loro/integrators/ListIntegrator.js +53 -0
- package/lib/collab/loro/integrators/MapIntegrator.d.ts +24 -0
- package/lib/collab/loro/integrators/MapIntegrator.js +235 -0
- package/lib/collab/loro/integrators/TextIntegrator.d.ts +25 -0
- package/lib/collab/loro/integrators/TextIntegrator.js +55 -0
- package/lib/collab/loro/integrators/TreeIntegrator.d.ts +36 -0
- package/lib/collab/loro/integrators/TreeIntegrator.js +251 -0
- package/lib/collab/loro/nodes/NodeFactory.d.ts +15 -0
- package/lib/collab/loro/nodes/NodeFactory.js +101 -0
- package/lib/collab/loro/nodes/NodesMapper.d.ts +120 -0
- package/lib/collab/loro/nodes/NodesMapper.js +277 -0
- package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +60 -0
- package/lib/collab/loro/propagators/DecoratorNodePropagator.js +306 -0
- package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +62 -0
- package/lib/collab/loro/propagators/ElementNodePropagator.js +326 -0
- package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +57 -0
- package/lib/collab/loro/propagators/LineBreakNodePropagator.js +200 -0
- package/lib/collab/loro/propagators/RootNodePropagator.d.ts +55 -0
- package/lib/collab/loro/propagators/RootNodePropagator.js +174 -0
- package/lib/collab/loro/propagators/TextNodePropagator.d.ts +60 -0
- package/lib/collab/loro/propagators/TextNodePropagator.js +440 -0
- package/lib/collab/loro/propagators/index.d.ts +49 -0
- package/lib/collab/loro/propagators/index.js +30 -0
- package/lib/collab/loro/provider/websocket.d.ts +116 -0
- package/lib/collab/loro/provider/websocket.js +911 -0
- package/lib/collab/loro/servers/index.d.ts +0 -0
- package/lib/collab/loro/servers/index.js +4 -0
- package/lib/collab/loro/servers/ws/callback.d.ts +5 -0
- package/lib/collab/loro/servers/ws/callback.js +89 -0
- package/lib/collab/loro/servers/ws/server.d.ts +2 -0
- package/lib/collab/loro/servers/ws/server.js +29 -0
- package/lib/collab/loro/servers/ws/utils.d.ts +40 -0
- package/lib/collab/loro/servers/ws/utils.js +517 -0
- package/lib/collab/loro/sync/SyncCursors.d.ts +32 -0
- package/lib/collab/loro/sync/SyncCursors.js +475 -0
- package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +4 -0
- package/lib/collab/loro/sync/SyncLexicalToLoro.js +113 -0
- package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +5 -0
- package/lib/collab/loro/sync/SyncLoroToLexical.js +100 -0
- package/lib/collab/loro/types/LexicalNodeData.d.ts +32 -0
- package/lib/collab/loro/types/LexicalNodeData.js +75 -0
- package/lib/collab/loro/useCollaboration.d.ts +12 -0
- package/lib/collab/loro/useCollaboration.js +260 -0
- package/lib/collab/loro/utils/InitialContent.d.ts +64 -0
- package/lib/collab/loro/utils/InitialContent.js +113 -0
- package/lib/collab/loro/utils/LexicalToLoro.d.ts +18 -0
- package/lib/collab/loro/utils/LexicalToLoro.js +100 -0
- package/lib/collab/loro/utils/Utils.d.ts +44 -0
- package/lib/collab/loro/utils/Utils.js +157 -0
- package/lib/collab/loro/wsProvider.d.ts +8 -0
- package/lib/collab/loro/wsProvider.js +35 -0
- package/lib/collab/utils/invariant.d.ts +1 -0
- package/lib/collab/utils/invariant.js +15 -0
- package/lib/collab/utils/simpleDiffWithCursor.d.ts +5 -0
- package/lib/collab/utils/simpleDiffWithCursor.js +35 -0
- package/lib/collab/yjs/Bindings.d.ts +23 -0
- package/lib/collab/yjs/Bindings.js +26 -0
- package/lib/collab/yjs/Debug.d.ts +23 -0
- package/lib/collab/yjs/Debug.js +213 -0
- package/lib/collab/yjs/LexicalCollaborationContext.d.ts +10 -0
- package/lib/collab/yjs/LexicalCollaborationContext.js +37 -0
- package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +21 -0
- package/lib/collab/yjs/LexicalCollaborationPlugin.js +63 -0
- package/lib/collab/yjs/State.d.ts +51 -0
- package/lib/collab/yjs/State.js +35 -0
- package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +5 -0
- package/lib/collab/yjs/nodes/AnyCollabNode.js +1 -0
- package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +22 -0
- package/lib/collab/yjs/nodes/CollabDecoratorNode.js +64 -0
- package/lib/collab/yjs/nodes/CollabElementNode.d.ts +40 -0
- package/lib/collab/yjs/nodes/CollabElementNode.js +462 -0
- package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +19 -0
- package/lib/collab/yjs/nodes/CollabLineBreakNode.js +44 -0
- package/lib/collab/yjs/nodes/CollabTextNode.d.ts +25 -0
- package/lib/collab/yjs/nodes/CollabTextNode.js +103 -0
- package/lib/collab/yjs/provider/websocket.d.ts +88 -0
- package/lib/collab/yjs/provider/websocket.js +415 -0
- package/lib/collab/yjs/servers/index.d.ts +0 -0
- package/lib/collab/yjs/servers/index.js +0 -0
- package/lib/collab/yjs/servers/ws/callback.d.ts +5 -0
- package/lib/collab/yjs/servers/ws/callback.js +72 -0
- package/lib/collab/yjs/servers/ws/server.d.ts +2 -0
- package/lib/collab/yjs/servers/ws/server.js +25 -0
- package/lib/collab/yjs/servers/ws/utils.d.ts +49 -0
- package/lib/collab/yjs/servers/ws/utils.js +284 -0
- package/lib/collab/yjs/sync/SyncCursors.d.ts +39 -0
- package/lib/collab/yjs/sync/SyncCursors.js +351 -0
- package/lib/collab/yjs/sync/SyncEditorStates.d.ts +10 -0
- package/lib/collab/yjs/sync/SyncEditorStates.js +200 -0
- package/lib/collab/yjs/useCollaboration.d.ts +12 -0
- package/lib/collab/yjs/useCollaboration.js +255 -0
- package/lib/collab/yjs/utils/Utils.d.ts +25 -0
- package/lib/collab/yjs/utils/Utils.js +402 -0
- package/lib/collab/yjs/wsProvider.d.ts +3 -0
- package/lib/collab/yjs/wsProvider.js +21 -0
- package/lib/commenting/index.d.ts +41 -0
- package/lib/commenting/index.js +328 -0
- package/lib/context/FlashMessageContext.d.ts +7 -0
- package/lib/context/FlashMessageContext.js +24 -0
- package/lib/context/SettingsContext.d.ts +12 -0
- package/lib/context/SettingsContext.js +38 -0
- package/lib/context/SharedHistoryContext.d.ts +11 -0
- package/lib/context/SharedHistoryContext.js +11 -0
- package/lib/context/ToolbarContext.d.ts +65 -0
- package/lib/context/ToolbarContext.js +84 -0
- package/lib/demo.d.ts +12 -0
- package/lib/demo.js +45 -0
- package/lib/hooks/useFlashMessage.d.ts +2 -0
- package/lib/hooks/useFlashMessage.js +8 -0
- package/lib/hooks/useModal.d.ts +5 -0
- package/lib/hooks/useModal.js +26 -0
- package/lib/hooks/useReport.d.ts +1 -0
- package/lib/hooks/useReport.js +50 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +5 -0
- package/lib/nodes/AutocompleteNode.d.ts +27 -0
- package/lib/nodes/AutocompleteNode.js +60 -0
- package/lib/nodes/CounterComponent.d.ts +6 -0
- package/lib/nodes/CounterComponent.js +137 -0
- package/lib/nodes/CounterNode.d.ts +23 -0
- package/lib/nodes/CounterNode.js +47 -0
- package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +8 -0
- package/lib/nodes/DateTimeNode/DateTimeComponent.js +119 -0
- package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +27 -0
- package/lib/nodes/DateTimeNode/DateTimeNode.js +82 -0
- package/lib/nodes/EmojiNode.d.ts +18 -0
- package/lib/nodes/EmojiNode.js +54 -0
- package/lib/nodes/EquationComponent.d.ts +9 -0
- package/lib/nodes/EquationComponent.js +75 -0
- package/lib/nodes/EquationNode.d.ts +26 -0
- package/lib/nodes/EquationNode.js +109 -0
- package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +8 -0
- package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +110 -0
- package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +50 -0
- package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +55 -0
- package/lib/nodes/ExcalidrawNode/index.d.ts +32 -0
- package/lib/nodes/ExcalidrawNode/index.js +117 -0
- package/lib/nodes/FigmaNode.d.ts +20 -0
- package/lib/nodes/FigmaNode.js +52 -0
- package/lib/nodes/ImageComponent.d.ts +16 -0
- package/lib/nodes/ImageComponent.js +272 -0
- package/lib/nodes/ImageNode.d.ts +50 -0
- package/lib/nodes/ImageNode.js +151 -0
- package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +26 -0
- package/lib/nodes/InlineImageNode/InlineImageComponent.js +161 -0
- package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +59 -0
- package/lib/nodes/InlineImageNode/InlineImageNode.js +162 -0
- package/lib/nodes/KeywordNode.d.ts +14 -0
- package/lib/nodes/KeywordNode.js +37 -0
- package/lib/nodes/LayoutContainerNode.d.ts +24 -0
- package/lib/nodes/LayoutContainerNode.js +95 -0
- package/lib/nodes/LayoutItemNode.d.ts +16 -0
- package/lib/nodes/LayoutItemNode.js +69 -0
- package/lib/nodes/MentionNode.d.ts +20 -0
- package/lib/nodes/MentionNode.js +85 -0
- package/lib/nodes/PageBreakNode/index.d.ts +17 -0
- package/lib/nodes/PageBreakNode/index.js +83 -0
- package/lib/nodes/PlaygroundNodes.d.ts +3 -0
- package/lib/nodes/PlaygroundNodes.js +75 -0
- package/lib/nodes/PollComponent.d.ts +9 -0
- package/lib/nodes/PollComponent.js +85 -0
- package/lib/nodes/PollNode.d.ts +43 -0
- package/lib/nodes/PollNode.js +153 -0
- package/lib/nodes/SpecialTextNode.d.ts +24 -0
- package/lib/nodes/SpecialTextNode.js +54 -0
- package/lib/nodes/StickyComponent.d.ts +10 -0
- package/lib/nodes/StickyComponent.js +162 -0
- package/lib/nodes/StickyNode.d.ts +31 -0
- package/lib/nodes/StickyNode.js +76 -0
- package/lib/nodes/TweetNode.d.ts +21 -0
- package/lib/nodes/TweetNode.js +119 -0
- package/lib/nodes/YouTubeNode.d.ts +22 -0
- package/lib/nodes/YouTubeNode.js +84 -0
- package/lib/plugins/ActionsPlugin/index.d.ts +5 -0
- package/lib/plugins/ActionsPlugin/index.js +168 -0
- package/lib/plugins/AutoEmbedPlugin/index.d.ts +19 -0
- package/lib/plugins/AutoEmbedPlugin/index.js +158 -0
- package/lib/plugins/AutoLinkPlugin/index.d.ts +2 -0
- package/lib/plugins/AutoLinkPlugin/index.js +15 -0
- package/lib/plugins/AutocompletePlugin/index.d.ts +10 -0
- package/lib/plugins/AutocompletePlugin/index.js +2477 -0
- package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +7 -0
- package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +46 -0
- package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +17 -0
- package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +115 -0
- package/lib/plugins/CodeActionMenuPlugin/index.d.ts +5 -0
- package/lib/plugins/CodeActionMenuPlugin/index.js +104 -0
- package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +1 -0
- package/lib/plugins/CodeActionMenuPlugin/utils.js +22 -0
- package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +2 -0
- package/lib/plugins/CodeHighlightPrismPlugin/index.js +14 -0
- package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +2 -0
- package/lib/plugins/CodeHighlightShikiPlugin/index.js +14 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +25 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +135 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +16 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +83 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +16 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +85 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +2 -0
- package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +12 -0
- package/lib/plugins/CollapsiblePlugin/index.d.ts +3 -0
- package/lib/plugins/CollapsiblePlugin/index.js +132 -0
- package/lib/plugins/CommentPlugin/index.d.ts +9 -0
- package/lib/plugins/CommentPlugin/index.js +460 -0
- package/lib/plugins/ComponentPickerPlugin/index.d.ts +2 -0
- package/lib/plugins/ComponentPickerPlugin/index.js +276 -0
- package/lib/plugins/ContextMenuPlugin/index.d.ts +2 -0
- package/lib/plugins/ContextMenuPlugin/index.js +112 -0
- package/lib/plugins/CounterPlugin/index.d.ts +3 -0
- package/lib/plugins/CounterPlugin/index.js +24 -0
- package/lib/plugins/DateTimePlugin/index.d.ts +8 -0
- package/lib/plugins/DateTimePlugin/index.js +28 -0
- package/lib/plugins/DebugPlugin/index.d.ts +3 -0
- package/lib/plugins/DebugPlugin/index.js +219 -0
- package/lib/plugins/DocsPlugin/index.d.ts +2 -0
- package/lib/plugins/DocsPlugin/index.js +4 -0
- package/lib/plugins/DragDropPastePlugin/index.d.ts +1 -0
- package/lib/plugins/DragDropPastePlugin/index.js +37 -0
- package/lib/plugins/DraggableBlockPlugin/index.d.ts +12 -0
- package/lib/plugins/DraggableBlockPlugin/index.js +36 -0
- package/lib/plugins/EmojiPickerPlugin/index.d.ts +1 -0
- package/lib/plugins/EmojiPickerPlugin/index.js +84 -0
- package/lib/plugins/EmojisPlugin/index.d.ts +2 -0
- package/lib/plugins/EmojisPlugin/index.js +56 -0
- package/lib/plugins/EquationsPlugin/index.d.ts +14 -0
- package/lib/plugins/EquationsPlugin/index.js +34 -0
- package/lib/plugins/ExcalidrawPlugin/index.d.ts +5 -0
- package/lib/plugins/ExcalidrawPlugin/index.js +44 -0
- package/lib/plugins/FigmaPlugin/index.d.ts +4 -0
- package/lib/plugins/FigmaPlugin/index.js +24 -0
- package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +15 -0
- package/lib/plugins/FloatingLinkEditorPlugin/index.js +280 -0
- package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +7 -0
- package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +219 -0
- package/lib/plugins/ImagesPlugin/index.d.ts +24 -0
- package/lib/plugins/ImagesPlugin/index.js +195 -0
- package/lib/plugins/InlineImagePlugin/index.d.ts +17 -0
- package/lib/plugins/InlineImagePlugin/index.js +180 -0
- package/lib/plugins/KeywordsPlugin/index.d.ts +2 -0
- package/lib/plugins/KeywordsPlugin/index.js +35 -0
- package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +6 -0
- package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +21 -0
- package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +7 -0
- package/lib/plugins/LayoutPlugin/LayoutPlugin.js +135 -0
- package/lib/plugins/LinkPlugin/index.d.ts +6 -0
- package/lib/plugins/LinkPlugin/index.js +11 -0
- package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +2 -0
- package/lib/plugins/MarkdownShortcutPlugin/index.js +6 -0
- package/lib/plugins/MarkdownTransformers/index.d.ts +8 -0
- package/lib/plugins/MarkdownTransformers/index.js +238 -0
- package/lib/plugins/MaxLengthPlugin/index.d.ts +3 -0
- package/lib/plugins/MaxLengthPlugin/index.js +41 -0
- package/lib/plugins/MentionsPlugin/index.d.ts +2 -0
- package/lib/plugins/MentionsPlugin/index.js +564 -0
- package/lib/plugins/PageBreakPlugin/index.d.ts +4 -0
- package/lib/plugins/PageBreakPlugin/index.js +31 -0
- package/lib/plugins/PasteLogPlugin/index.d.ts +2 -0
- package/lib/plugins/PasteLogPlugin/index.js +27 -0
- package/lib/plugins/PollPlugin/index.d.ts +8 -0
- package/lib/plugins/PollPlugin/index.js +38 -0
- package/lib/plugins/ShortcutsPlugin/index.d.ts +6 -0
- package/lib/plugins/ShortcutsPlugin/index.js +116 -0
- package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +59 -0
- package/lib/plugins/ShortcutsPlugin/shortcuts.js +173 -0
- package/lib/plugins/SpecialTextPlugin/index.d.ts +2 -0
- package/lib/plugins/SpecialTextPlugin/index.js +50 -0
- package/lib/plugins/SpeechToTextPlugin/index.d.ts +5 -0
- package/lib/plugins/SpeechToTextPlugin/index.js +86 -0
- package/lib/plugins/StickyPlugin/index.d.ts +2 -0
- package/lib/plugins/StickyPlugin/index.js +16 -0
- package/lib/plugins/TabFocusPlugin/index.d.ts +1 -0
- package/lib/plugins/TabFocusPlugin/index.js +38 -0
- package/lib/plugins/TableActionMenuPlugin/index.d.ts +5 -0
- package/lib/plugins/TableActionMenuPlugin/index.js +492 -0
- package/lib/plugins/TableCellResizer/index.d.ts +3 -0
- package/lib/plugins/TableCellResizer/index.js +297 -0
- package/lib/plugins/TableHoverActionsPlugin/index.d.ts +4 -0
- package/lib/plugins/TableHoverActionsPlugin/index.js +188 -0
- package/lib/plugins/TableOfContentsPlugin/index.d.ts +2 -0
- package/lib/plugins/TableOfContentsPlugin/index.js +116 -0
- package/lib/plugins/TablePlugin.d.ts +31 -0
- package/lib/plugins/TablePlugin.js +63 -0
- package/lib/plugins/TestRecorderPlugin/index.d.ts +3 -0
- package/lib/plugins/TestRecorderPlugin/index.js +346 -0
- package/lib/plugins/ToolbarPlugin/fontSize.d.ts +9 -0
- package/lib/plugins/ToolbarPlugin/fontSize.js +84 -0
- package/lib/plugins/ToolbarPlugin/index.d.ts +9 -0
- package/lib/plugins/ToolbarPlugin/index.js +500 -0
- package/lib/plugins/ToolbarPlugin/utils.d.ts +26 -0
- package/lib/plugins/ToolbarPlugin/utils.js +247 -0
- package/lib/plugins/TreeViewPlugin/index.d.ts +2 -0
- package/lib/plugins/TreeViewPlugin/index.js +7 -0
- package/lib/plugins/TwitterPlugin/index.d.ts +4 -0
- package/lib/plugins/TwitterPlugin/index.js +24 -0
- package/lib/plugins/TypingPerfPlugin/index.d.ts +2 -0
- package/lib/plugins/TypingPerfPlugin/index.js +97 -0
- package/lib/plugins/YouTubePlugin/index.d.ts +4 -0
- package/lib/plugins/YouTubePlugin/index.js +24 -0
- package/lib/server/validation.d.ts +1 -0
- package/lib/server/validation.js +115 -0
- package/lib/setupEnv.d.ts +2 -0
- package/lib/setupEnv.js +29 -0
- package/lib/themes/CommentEditorTheme.d.ts +4 -0
- package/lib/themes/CommentEditorTheme.js +11 -0
- package/lib/themes/PlaygroundEditorTheme.d.ts +4 -0
- package/lib/themes/PlaygroundEditorTheme.js +124 -0
- package/lib/themes/StickyEditorTheme.d.ts +4 -0
- package/lib/themes/StickyEditorTheme.js +11 -0
- package/lib/tyes.dt.d.ts +12 -0
- package/lib/tyes.dt.js +4 -0
- package/lib/ui/Button.d.ts +12 -0
- package/lib/ui/Button.js +6 -0
- package/lib/ui/ColorPicker.d.ts +14 -0
- package/lib/ui/ColorPicker.js +219 -0
- package/lib/ui/ContentEditable.d.ts +9 -0
- package/lib/ui/ContentEditable.js +6 -0
- package/lib/ui/Dialog.d.ts +10 -0
- package/lib/ui/Dialog.js +8 -0
- package/lib/ui/DropDown.d.ts +18 -0
- package/lib/ui/DropDown.js +133 -0
- package/lib/ui/DropdownColorPicker.d.ts +13 -0
- package/lib/ui/DropdownColorPicker.js +6 -0
- package/lib/ui/EquationEditor.d.ts +8 -0
- package/lib/ui/EquationEditor.js +11 -0
- package/lib/ui/ExcalidrawModal.d.ts +42 -0
- package/lib/ui/ExcalidrawModal.js +103 -0
- package/lib/ui/FileInput.d.ts +10 -0
- package/lib/ui/FileInput.js +5 -0
- package/lib/ui/FlashMessage.d.ts +7 -0
- package/lib/ui/FlashMessage.js +6 -0
- package/lib/ui/ImageResizer.d.ts +17 -0
- package/lib/ui/ImageResizer.js +171 -0
- package/lib/ui/KatexEquationAlterer.d.ts +8 -0
- package/lib/ui/KatexEquationAlterer.js +23 -0
- package/lib/ui/KatexRenderer.d.ts +6 -0
- package/lib/ui/KatexRenderer.js +24 -0
- package/lib/ui/Modal.d.ts +9 -0
- package/lib/ui/Modal.js +48 -0
- package/lib/ui/Select.d.ts +8 -0
- package/lib/ui/Select.js +5 -0
- package/lib/ui/Switch.d.ts +8 -0
- package/lib/ui/Switch.js +6 -0
- package/lib/ui/TextInput.d.ts +13 -0
- package/lib/ui/TextInput.js +7 -0
- package/lib/utils/docSerialization.d.ts +3 -0
- package/lib/utils/docSerialization.js +60 -0
- package/lib/utils/emoji-list.d.ts +20 -0
- package/lib/utils/emoji-list.js +16609 -0
- package/lib/utils/getDOMRangeRect.d.ts +8 -0
- package/lib/utils/getDOMRangeRect.js +26 -0
- package/lib/utils/getSelectedNode.d.ts +2 -0
- package/lib/utils/getSelectedNode.js +28 -0
- package/lib/utils/getThemeSelector.d.ts +2 -0
- package/lib/utils/getThemeSelector.js +14 -0
- package/lib/utils/isMobileWidth.d.ts +7 -0
- package/lib/utils/isMobileWidth.js +11 -0
- package/lib/utils/joinClasses.d.ts +1 -0
- package/lib/utils/joinClasses.js +7 -0
- package/lib/utils/setFloatingElemPosition.d.ts +1 -0
- package/lib/utils/setFloatingElemPosition.js +59 -0
- package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +1 -0
- package/lib/utils/setFloatingElemPositionForLinkEditor.js +36 -0
- package/lib/utils/swipe.d.ts +4 -0
- package/lib/utils/swipe.js +94 -0
- package/lib/utils/url.d.ts +2 -0
- package/lib/utils/url.js +31 -0
- package/package.json +1 -1
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { DecoratorNode, $isDecoratorNode } from 'lexical';
|
|
6
|
+
import { getNodeMapper } from '../nodes/NodesMapper';
|
|
7
|
+
/**
|
|
8
|
+
* Create DecoratorNode in Loro tree
|
|
9
|
+
*/
|
|
10
|
+
export function createDecoratorNodeInLoro(nodeKey, decoratorType, // 'image', 'video', 'tweet', 'chart', etc.
|
|
11
|
+
decoratorData, // The data needed to render the decorator
|
|
12
|
+
parentId, index, metadata, lexicalNodeJSON, // JSON object from exportJSON()
|
|
13
|
+
options) {
|
|
14
|
+
const mapper = getNodeMapper();
|
|
15
|
+
// Use mapper to get or create the tree node (don't pass lexicalNode to avoid context issues)
|
|
16
|
+
const treeNode = mapper.getLoroNodeByLexicalKey(nodeKey, undefined, // don't pass lexicalNode to avoid context issues
|
|
17
|
+
parentId, index);
|
|
18
|
+
// Store complete lexical node data as clean JSON if provided
|
|
19
|
+
if (lexicalNodeJSON) {
|
|
20
|
+
// Store complete lexical JSON without all key-related fields and children
|
|
21
|
+
const { key, __key, lexicalKey, children, ...cleanedData } = lexicalNodeJSON;
|
|
22
|
+
treeNode.data.set('lexical', cleanedData);
|
|
23
|
+
}
|
|
24
|
+
// Store only essential metadata
|
|
25
|
+
treeNode.data.set('elementType', 'decorator');
|
|
26
|
+
treeNode.data.set('createdAt', Date.now());
|
|
27
|
+
// The exported Lexical node data is already propagated by the mapper
|
|
28
|
+
// Return the TreeID from the node's ID
|
|
29
|
+
return treeNode.id;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Update DecoratorNode in Loro tree
|
|
33
|
+
*/
|
|
34
|
+
export function updateDecoratorNodeInLoro(nodeKey, decoratorType, decoratorData, parentId, index, metadata, lexicalNodeJSON, // JSON object from exportJSON()
|
|
35
|
+
options) {
|
|
36
|
+
const mapper = getNodeMapper();
|
|
37
|
+
// Get the existing Loro node from the mapper
|
|
38
|
+
const treeNode = mapper.getLoroNodeByLexicalKey(nodeKey, undefined);
|
|
39
|
+
if (!treeNode) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const { tree } = options;
|
|
43
|
+
const treeId = treeNode.id;
|
|
44
|
+
// Store complete lexical node data as clean JSON if provided
|
|
45
|
+
if (lexicalNodeJSON) {
|
|
46
|
+
// Store complete lexical JSON without all key-related fields and children
|
|
47
|
+
const { key, __key, lexicalKey, children, ...cleanedData } = lexicalNodeJSON;
|
|
48
|
+
treeNode.data.set('lexical', cleanedData);
|
|
49
|
+
}
|
|
50
|
+
// All decorator information is now contained in lexical data object
|
|
51
|
+
// Move the node if parent or position changed
|
|
52
|
+
if (parentId !== undefined || index !== undefined) {
|
|
53
|
+
tree.move(treeId, parentId, index);
|
|
54
|
+
}
|
|
55
|
+
// Update only essential metadata
|
|
56
|
+
treeNode.data.set('elementType', 'decorator');
|
|
57
|
+
treeNode.data.set('lastUpdated', Date.now());
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Delete DecoratorNode from Loro tree
|
|
61
|
+
*/
|
|
62
|
+
export function deleteDecoratorNodeInLoro(nodeKey, options) {
|
|
63
|
+
const mapper = getNodeMapper();
|
|
64
|
+
// Use the mapper's delete method which propagates TreeID lookup internally
|
|
65
|
+
mapper.deleteMapping(nodeKey);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create DecoratorNode in Lexical from Loro tree data
|
|
69
|
+
* Note: This is a generic implementation. In practice, you'd need
|
|
70
|
+
* specific decorator node classes for each type (ImageNode, VideoNode, etc.)
|
|
71
|
+
*/
|
|
72
|
+
export function createDecoratorNodeFromLoro(treeId, parentNode, index, options) {
|
|
73
|
+
const { tree } = options;
|
|
74
|
+
if (!tree.has(treeId)) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const treeNode = tree.getNodeByID(treeId);
|
|
78
|
+
if (!treeNode) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
// Get LexicalNodeData (JSON object format only)
|
|
82
|
+
const lexicalData = treeNode.data.get('lexical');
|
|
83
|
+
let decoratorNode;
|
|
84
|
+
if (lexicalData && typeof lexicalData === 'object') {
|
|
85
|
+
// For DecoratorNode, we need to propagate this case appropriately
|
|
86
|
+
// But DecoratorNodes are complex and might need special handling
|
|
87
|
+
console.warn(`DecoratorNode creation from JSON object not fully implemented for TreeID: ${treeId}`);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// No lexical JSON data found - cannot create DecoratorNode
|
|
92
|
+
console.warn('No lexical JSON data found for DecoratorNode TreeID:', treeId);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
// Insert into the parent at the specified index
|
|
96
|
+
if (index !== undefined && index >= 0) {
|
|
97
|
+
parentNode.splice(index, 0, [decoratorNode]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
parentNode.append(decoratorNode);
|
|
101
|
+
}
|
|
102
|
+
return decoratorNode;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Update DecoratorNode in Lexical from Loro tree data
|
|
106
|
+
*/
|
|
107
|
+
export function updateDecoratorNodeFromLoro(treeId, lexicalNode, newParentNode, newIndex, options) {
|
|
108
|
+
const { tree } = options;
|
|
109
|
+
if (!tree.has(treeId)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const treeNode = tree.getNodeByID(treeId);
|
|
113
|
+
if (!treeNode || treeNode.data.get('nodeType') !== 'decorator') {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Update decorator data if it has changed
|
|
117
|
+
const decoratorDataStr = treeNode.data.get('decoratorData');
|
|
118
|
+
let decoratorData;
|
|
119
|
+
try {
|
|
120
|
+
decoratorData = decoratorDataStr && typeof decoratorDataStr === 'string'
|
|
121
|
+
? JSON.parse(decoratorDataStr) : {};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.warn('Failed to parse decorator data:', error);
|
|
125
|
+
decoratorData = {};
|
|
126
|
+
}
|
|
127
|
+
// Update the decorator's data (implementation depends on the specific decorator type)
|
|
128
|
+
if (typeof lexicalNode.updateData === 'function') {
|
|
129
|
+
lexicalNode.updateData(decoratorData);
|
|
130
|
+
}
|
|
131
|
+
// If parent or position changed, move the node
|
|
132
|
+
if (newParentNode && newIndex !== undefined) {
|
|
133
|
+
// Remove from current location
|
|
134
|
+
lexicalNode.remove();
|
|
135
|
+
// Insert at new location
|
|
136
|
+
newParentNode.splice(newIndex, 0, [lexicalNode]);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Delete DecoratorNode from Lexical
|
|
141
|
+
*/
|
|
142
|
+
export function deleteDecoratorNodeFromLoro(treeId, lexicalNode, options) {
|
|
143
|
+
if ($isDecoratorNode(lexicalNode)) {
|
|
144
|
+
lexicalNode.remove();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Utility to check if a tree node represents a DecoratorNode
|
|
149
|
+
*/
|
|
150
|
+
export function isDecoratorNodeInTree(treeId, tree) {
|
|
151
|
+
if (!tree.has(treeId)) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const treeNode = tree.getNodeByID(treeId);
|
|
155
|
+
return treeNode?.data.get('nodeType') === 'decorator';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get DecoratorNode data from Loro tree
|
|
159
|
+
*/
|
|
160
|
+
export function getDecoratorNodeDataFromTree(treeId, tree) {
|
|
161
|
+
if (!tree.has(treeId)) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const treeNode = tree.getNodeByID(treeId);
|
|
165
|
+
if (!treeNode || treeNode.data.get('nodeType') !== 'decorator') {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const decoratorDataStr = treeNode.data.get('decoratorData');
|
|
169
|
+
let decoratorData;
|
|
170
|
+
try {
|
|
171
|
+
decoratorData = decoratorDataStr && typeof decoratorDataStr === 'string'
|
|
172
|
+
? JSON.parse(decoratorDataStr) : {};
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.warn('Failed to parse decorator data:', error);
|
|
176
|
+
decoratorData = {};
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
nodeType: 'decorator',
|
|
180
|
+
decoratorType: treeNode.data.get('decoratorType'),
|
|
181
|
+
decoratorData,
|
|
182
|
+
createdAt: treeNode.data.get('createdAt'),
|
|
183
|
+
lastUpdated: treeNode.data.get('lastUpdated'),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Generic DecoratorNode implementation for demonstration purposes
|
|
188
|
+
* In a real application, you'd have specific decorator node classes
|
|
189
|
+
*/
|
|
190
|
+
class GenericDecoratorNode extends DecoratorNode {
|
|
191
|
+
__decoratorType;
|
|
192
|
+
__decoratorData;
|
|
193
|
+
constructor(decoratorType, decoratorData, key) {
|
|
194
|
+
super(key);
|
|
195
|
+
this.__decoratorType = decoratorType;
|
|
196
|
+
this.__decoratorData = decoratorData;
|
|
197
|
+
}
|
|
198
|
+
static getType() {
|
|
199
|
+
return 'generic-decorator';
|
|
200
|
+
}
|
|
201
|
+
static clone(node) {
|
|
202
|
+
return new GenericDecoratorNode(node.__decoratorType, node.__decoratorData, node.__key);
|
|
203
|
+
}
|
|
204
|
+
createDOM() {
|
|
205
|
+
const div = document.createElement('div');
|
|
206
|
+
div.className = `decorator-${this.__decoratorType}`;
|
|
207
|
+
div.textContent = `[${this.__decoratorType}]`;
|
|
208
|
+
return div;
|
|
209
|
+
}
|
|
210
|
+
updateDOM() {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
decorate() {
|
|
214
|
+
return {
|
|
215
|
+
type: this.__decoratorType,
|
|
216
|
+
data: this.__decoratorData,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
isInline() {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
updateData(newData) {
|
|
223
|
+
const writable = this.getWritable();
|
|
224
|
+
writable.__decoratorData = newData;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Main propagate method for DecoratorNode - propagates all mutation types
|
|
229
|
+
*/
|
|
230
|
+
export function propagateDecoratorNode(update, mutation, nodeKey, options) {
|
|
231
|
+
const { tree, peerId } = options;
|
|
232
|
+
switch (mutation) {
|
|
233
|
+
case 'created': {
|
|
234
|
+
const currentNode = update.editorState._nodeMap.get(nodeKey);
|
|
235
|
+
if (currentNode && $isDecoratorNode(currentNode)) {
|
|
236
|
+
// Get node data using editor state context
|
|
237
|
+
const { parentId, index, decoratorType, decoratorData, metadata, lexicalNodeJSON } = update.editorState.read(() => {
|
|
238
|
+
// Get parent and index for proper positioning
|
|
239
|
+
const parent = currentNode.getParent();
|
|
240
|
+
// Get parentId from the mapper instead of constructing it manually
|
|
241
|
+
const mapper = getNodeMapper();
|
|
242
|
+
const parentId = parent ? mapper.getTreeIDByLexicalKey(parent.getKey()) : undefined;
|
|
243
|
+
const index = currentNode.getIndexWithinParent();
|
|
244
|
+
// Get decorator type and data
|
|
245
|
+
const decoratorType = currentNode.getType();
|
|
246
|
+
// For DecoratorNode, we'll store the node's internal data instead of calling decorate
|
|
247
|
+
const decoratorData = currentNode.__decoratorData || {};
|
|
248
|
+
// Collect additional metadata
|
|
249
|
+
const metadata = {};
|
|
250
|
+
if (typeof currentNode.isInline === 'function') {
|
|
251
|
+
metadata.isInline = currentNode.isInline();
|
|
252
|
+
}
|
|
253
|
+
// Export node data within editor context where node methods are available
|
|
254
|
+
let lexicalNodeJSON = undefined;
|
|
255
|
+
try {
|
|
256
|
+
lexicalNodeJSON = currentNode.exportJSON();
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.warn('Failed to export node data in propagateDecoratorNode created:', error);
|
|
260
|
+
}
|
|
261
|
+
return { parentId, index, decoratorType, decoratorData, metadata, lexicalNodeJSON };
|
|
262
|
+
});
|
|
263
|
+
createDecoratorNodeInLoro(nodeKey, decoratorType, decoratorData, parentId, index, metadata, lexicalNodeJSON, options);
|
|
264
|
+
}
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
case 'updated': {
|
|
268
|
+
const currentNode = update.editorState._nodeMap.get(nodeKey);
|
|
269
|
+
if (currentNode && $isDecoratorNode(currentNode)) {
|
|
270
|
+
// Get node data using editor state context
|
|
271
|
+
const { parentId, index, decoratorType, decoratorData, metadata, lexicalNodeJSON } = update.editorState.read(() => {
|
|
272
|
+
// Get current position
|
|
273
|
+
const parent = currentNode.getParent();
|
|
274
|
+
// Get parentId from the mapper instead of constructing it manually
|
|
275
|
+
const mapper = getNodeMapper();
|
|
276
|
+
const parentId = parent ? mapper.getTreeIDByLexicalKey(parent.getKey()) : undefined;
|
|
277
|
+
const index = currentNode.getIndexWithinParent();
|
|
278
|
+
// Get updated decorator type and data
|
|
279
|
+
const decoratorType = currentNode.getType();
|
|
280
|
+
// For DecoratorNode, we'll store the node's internal data instead of calling decorate
|
|
281
|
+
const decoratorData = currentNode.__decoratorData || {};
|
|
282
|
+
// Collect metadata
|
|
283
|
+
const metadata = {};
|
|
284
|
+
if (typeof currentNode.isInline === 'function') {
|
|
285
|
+
metadata.isInline = currentNode.isInline();
|
|
286
|
+
}
|
|
287
|
+
// Export node data within editor context where node methods are available
|
|
288
|
+
let lexicalNodeJSON = undefined;
|
|
289
|
+
try {
|
|
290
|
+
lexicalNodeJSON = currentNode.exportJSON();
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
console.warn('Failed to export node data in propagateDecoratorNode updated:', error);
|
|
294
|
+
}
|
|
295
|
+
return { parentId, index, decoratorType, decoratorData, metadata, lexicalNodeJSON };
|
|
296
|
+
});
|
|
297
|
+
updateDecoratorNodeInLoro(nodeKey, decoratorType, decoratorData, parentId, index, metadata, lexicalNodeJSON, options);
|
|
298
|
+
}
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
case 'destroyed': {
|
|
302
|
+
deleteDecoratorNodeInLoro(nodeKey, options);
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { TreeID, LoroTree } from 'loro-crdt';
|
|
2
|
+
import { ElementNode, UpdateListenerPayload, NodeKey } from 'lexical';
|
|
3
|
+
import { Binding } from '../Bindings';
|
|
4
|
+
/**
|
|
5
|
+
* ElementNode Propagator for Loro Tree Collaboration
|
|
6
|
+
*
|
|
7
|
+
* ElementNode characteristics:
|
|
8
|
+
* - Parent nodes that can contain other nodes (including other ElementNodes)
|
|
9
|
+
* - Examples: ParagraphNode, HeadingNode, QuoteNode, LinkNode, etc.
|
|
10
|
+
* - Can have formatting (bold, italic, etc.) and styles
|
|
11
|
+
* - Can have children and maintain parent/child relationships
|
|
12
|
+
* - Can be extended to create custom element types
|
|
13
|
+
*/
|
|
14
|
+
export interface ElementNodeMutatorOptions {
|
|
15
|
+
binding: Binding;
|
|
16
|
+
tree: LoroTree;
|
|
17
|
+
peerId: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create ElementNode in Loro tree
|
|
21
|
+
*/
|
|
22
|
+
export declare function createElementNodeInLoro(nodeKey: NodeKey, elementType: string, // 'paragraph', 'heading', 'quote', 'link', etc.
|
|
23
|
+
parentId?: TreeID, index?: number, metadata?: Record<string, any>, lexicalNodeJSON?: any, // JSON object from exportJSON()
|
|
24
|
+
options?: ElementNodeMutatorOptions): TreeID;
|
|
25
|
+
/**
|
|
26
|
+
* Update ElementNode in Loro tree
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateElementNodeInLoro(nodeKey: NodeKey, elementType?: string, parentId?: TreeID, index?: number, metadata?: Record<string, any>, lexicalNodeJSON?: any, // JSON object from exportJSON()
|
|
29
|
+
options?: ElementNodeMutatorOptions): void;
|
|
30
|
+
/**
|
|
31
|
+
* Delete ElementNode from Loro tree
|
|
32
|
+
*/
|
|
33
|
+
export declare function deleteElementNodeInLoro(nodeKey: NodeKey, options: ElementNodeMutatorOptions): void;
|
|
34
|
+
/**
|
|
35
|
+
* Create ElementNode in Lexical from Loro tree data
|
|
36
|
+
*/
|
|
37
|
+
export declare function createElementNodeFromLoro(treeId: TreeID, parentNode: ElementNode, // The Lexical parent node where this should be inserted
|
|
38
|
+
index?: number, options?: ElementNodeMutatorOptions): ElementNode | null;
|
|
39
|
+
/**
|
|
40
|
+
* Update ElementNode in Lexical from Loro tree data
|
|
41
|
+
*/
|
|
42
|
+
export declare function updateElementNodeFromLoro(treeId: TreeID, lexicalNode: ElementNode, newParentNode?: ElementNode, newIndex?: number, options?: ElementNodeMutatorOptions): void;
|
|
43
|
+
/**
|
|
44
|
+
* Delete ElementNode from Lexical
|
|
45
|
+
*/
|
|
46
|
+
export declare function deleteElementNodeFromLoro(treeId: TreeID, lexicalNode: ElementNode, options?: ElementNodeMutatorOptions): void;
|
|
47
|
+
/**
|
|
48
|
+
* Utility to check if a tree node represents an ElementNode
|
|
49
|
+
*/
|
|
50
|
+
export declare function isElementNodeInTree(treeId: TreeID, tree: LoroTree): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get ElementNode data from Loro tree
|
|
53
|
+
*/
|
|
54
|
+
export declare function getElementNodeDataFromTree(treeId: TreeID, tree: LoroTree): any;
|
|
55
|
+
/**
|
|
56
|
+
* Sync ElementNode children relationships in Loro tree
|
|
57
|
+
*/
|
|
58
|
+
export declare function syncElementNodeChildrenInLoro(nodeKey: NodeKey, childKeys: string[], options: ElementNodeMutatorOptions): void;
|
|
59
|
+
/**
|
|
60
|
+
* Main propagate method for ElementNode - propagates all mutation types
|
|
61
|
+
*/
|
|
62
|
+
export declare function propagateElementNode(update: UpdateListenerPayload, mutation: 'created' | 'updated' | 'destroyed', nodeKey: NodeKey, options: ElementNodeMutatorOptions): void;
|