@datalayer/lexical-loro 0.2.5 → 1.0.1
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/package.json +1 -1
- package/lib/App.d.ts +0 -2
- package/lib/App.js +0 -141
- package/lib/Editor.d.ts +0 -2
- package/lib/Editor.js +0 -115
- package/lib/Settings.d.ts +0 -2
- package/lib/Settings.js +0 -57
- package/lib/appSettings.d.ts +0 -36
- package/lib/appSettings.js +0 -48
- package/lib/collab/loro/Bindings.d.ts +0 -41
- package/lib/collab/loro/Bindings.js +0 -99
- package/lib/collab/loro/Debug.d.ts +0 -33
- package/lib/collab/loro/Debug.js +0 -452
- package/lib/collab/loro/LexicalCollaborationContext.d.ts +0 -19
- package/lib/collab/loro/LexicalCollaborationContext.js +0 -52
- package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +0 -24
- package/lib/collab/loro/LexicalCollaborationPlugin.js +0 -83
- package/lib/collab/loro/State.d.ts +0 -53
- package/lib/collab/loro/State.js +0 -94
- package/lib/collab/loro/components/LoroCollaborationUI.d.ts +0 -13
- package/lib/collab/loro/components/LoroCollaborationUI.js +0 -9
- package/lib/collab/loro/components/LoroCollaborators.d.ts +0 -8
- package/lib/collab/loro/components/LoroCollaborators.js +0 -102
- package/lib/collab/loro/components/index.d.ts +0 -2
- package/lib/collab/loro/components/index.js +0 -6
- package/lib/collab/loro/index.d.ts +0 -6
- package/lib/collab/loro/index.js +0 -10
- package/lib/collab/loro/integrators/BaseIntegrator.d.ts +0 -14
- package/lib/collab/loro/integrators/BaseIntegrator.js +0 -5
- package/lib/collab/loro/integrators/CounterIntegrator.d.ts +0 -23
- package/lib/collab/loro/integrators/CounterIntegrator.js +0 -44
- package/lib/collab/loro/integrators/ListIntegrator.d.ts +0 -23
- package/lib/collab/loro/integrators/ListIntegrator.js +0 -53
- package/lib/collab/loro/integrators/MapIntegrator.d.ts +0 -24
- package/lib/collab/loro/integrators/MapIntegrator.js +0 -235
- package/lib/collab/loro/integrators/TextIntegrator.d.ts +0 -25
- package/lib/collab/loro/integrators/TextIntegrator.js +0 -55
- package/lib/collab/loro/integrators/TreeIntegrator.d.ts +0 -36
- package/lib/collab/loro/integrators/TreeIntegrator.js +0 -251
- package/lib/collab/loro/nodes/NodeFactory.d.ts +0 -15
- package/lib/collab/loro/nodes/NodeFactory.js +0 -101
- package/lib/collab/loro/nodes/NodesMapper.d.ts +0 -120
- package/lib/collab/loro/nodes/NodesMapper.js +0 -277
- package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +0 -60
- package/lib/collab/loro/propagators/DecoratorNodePropagator.js +0 -306
- package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +0 -62
- package/lib/collab/loro/propagators/ElementNodePropagator.js +0 -326
- package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +0 -57
- package/lib/collab/loro/propagators/LineBreakNodePropagator.js +0 -200
- package/lib/collab/loro/propagators/RootNodePropagator.d.ts +0 -55
- package/lib/collab/loro/propagators/RootNodePropagator.js +0 -174
- package/lib/collab/loro/propagators/TextNodePropagator.d.ts +0 -60
- package/lib/collab/loro/propagators/TextNodePropagator.js +0 -440
- package/lib/collab/loro/propagators/index.d.ts +0 -49
- package/lib/collab/loro/propagators/index.js +0 -30
- package/lib/collab/loro/provider/websocket.d.ts +0 -116
- package/lib/collab/loro/provider/websocket.js +0 -911
- package/lib/collab/loro/servers/index.d.ts +0 -0
- package/lib/collab/loro/servers/index.js +0 -4
- package/lib/collab/loro/servers/ws/callback.d.ts +0 -5
- package/lib/collab/loro/servers/ws/callback.js +0 -89
- package/lib/collab/loro/servers/ws/server.d.ts +0 -2
- package/lib/collab/loro/servers/ws/server.js +0 -29
- package/lib/collab/loro/servers/ws/utils.d.ts +0 -40
- package/lib/collab/loro/servers/ws/utils.js +0 -517
- package/lib/collab/loro/sync/SyncCursors.d.ts +0 -32
- package/lib/collab/loro/sync/SyncCursors.js +0 -475
- package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +0 -4
- package/lib/collab/loro/sync/SyncLexicalToLoro.js +0 -113
- package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +0 -5
- package/lib/collab/loro/sync/SyncLoroToLexical.js +0 -100
- package/lib/collab/loro/types/LexicalNodeData.d.ts +0 -32
- package/lib/collab/loro/types/LexicalNodeData.js +0 -75
- package/lib/collab/loro/useCollaboration.d.ts +0 -12
- package/lib/collab/loro/useCollaboration.js +0 -260
- package/lib/collab/loro/utils/InitialContent.d.ts +0 -64
- package/lib/collab/loro/utils/InitialContent.js +0 -113
- package/lib/collab/loro/utils/LexicalToLoro.d.ts +0 -18
- package/lib/collab/loro/utils/LexicalToLoro.js +0 -100
- package/lib/collab/loro/utils/Utils.d.ts +0 -44
- package/lib/collab/loro/utils/Utils.js +0 -157
- package/lib/collab/loro/wsProvider.d.ts +0 -8
- package/lib/collab/loro/wsProvider.js +0 -35
- package/lib/collab/utils/invariant.d.ts +0 -1
- package/lib/collab/utils/invariant.js +0 -15
- package/lib/collab/utils/simpleDiffWithCursor.d.ts +0 -5
- package/lib/collab/utils/simpleDiffWithCursor.js +0 -35
- package/lib/collab/yjs/Bindings.d.ts +0 -23
- package/lib/collab/yjs/Bindings.js +0 -26
- package/lib/collab/yjs/Debug.d.ts +0 -23
- package/lib/collab/yjs/Debug.js +0 -213
- package/lib/collab/yjs/LexicalCollaborationContext.d.ts +0 -10
- package/lib/collab/yjs/LexicalCollaborationContext.js +0 -37
- package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +0 -21
- package/lib/collab/yjs/LexicalCollaborationPlugin.js +0 -63
- package/lib/collab/yjs/State.d.ts +0 -51
- package/lib/collab/yjs/State.js +0 -35
- package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +0 -5
- package/lib/collab/yjs/nodes/AnyCollabNode.js +0 -1
- package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +0 -22
- package/lib/collab/yjs/nodes/CollabDecoratorNode.js +0 -64
- package/lib/collab/yjs/nodes/CollabElementNode.d.ts +0 -40
- package/lib/collab/yjs/nodes/CollabElementNode.js +0 -462
- package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +0 -19
- package/lib/collab/yjs/nodes/CollabLineBreakNode.js +0 -44
- package/lib/collab/yjs/nodes/CollabTextNode.d.ts +0 -25
- package/lib/collab/yjs/nodes/CollabTextNode.js +0 -103
- package/lib/collab/yjs/provider/websocket.d.ts +0 -88
- package/lib/collab/yjs/provider/websocket.js +0 -415
- 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 +0 -5
- package/lib/collab/yjs/servers/ws/callback.js +0 -72
- package/lib/collab/yjs/servers/ws/server.d.ts +0 -2
- package/lib/collab/yjs/servers/ws/server.js +0 -25
- package/lib/collab/yjs/servers/ws/utils.d.ts +0 -49
- package/lib/collab/yjs/servers/ws/utils.js +0 -284
- package/lib/collab/yjs/sync/SyncCursors.d.ts +0 -39
- package/lib/collab/yjs/sync/SyncCursors.js +0 -351
- package/lib/collab/yjs/sync/SyncEditorStates.d.ts +0 -10
- package/lib/collab/yjs/sync/SyncEditorStates.js +0 -200
- package/lib/collab/yjs/useCollaboration.d.ts +0 -12
- package/lib/collab/yjs/useCollaboration.js +0 -255
- package/lib/collab/yjs/utils/Utils.d.ts +0 -25
- package/lib/collab/yjs/utils/Utils.js +0 -402
- package/lib/collab/yjs/wsProvider.d.ts +0 -3
- package/lib/collab/yjs/wsProvider.js +0 -21
- package/lib/commenting/index.d.ts +0 -41
- package/lib/commenting/index.js +0 -328
- package/lib/context/FlashMessageContext.d.ts +0 -7
- package/lib/context/FlashMessageContext.js +0 -24
- package/lib/context/SettingsContext.d.ts +0 -12
- package/lib/context/SettingsContext.js +0 -38
- package/lib/context/SharedHistoryContext.d.ts +0 -11
- package/lib/context/SharedHistoryContext.js +0 -11
- package/lib/context/ToolbarContext.d.ts +0 -65
- package/lib/context/ToolbarContext.js +0 -84
- package/lib/demo.d.ts +0 -12
- package/lib/demo.js +0 -45
- package/lib/hooks/useFlashMessage.d.ts +0 -2
- package/lib/hooks/useFlashMessage.js +0 -8
- package/lib/hooks/useModal.d.ts +0 -5
- package/lib/hooks/useModal.js +0 -26
- package/lib/hooks/useReport.d.ts +0 -1
- package/lib/hooks/useReport.js +0 -50
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -5
- package/lib/nodes/AutocompleteNode.d.ts +0 -27
- package/lib/nodes/AutocompleteNode.js +0 -60
- package/lib/nodes/CounterComponent.d.ts +0 -6
- package/lib/nodes/CounterComponent.js +0 -137
- package/lib/nodes/CounterNode.d.ts +0 -23
- package/lib/nodes/CounterNode.js +0 -47
- package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +0 -8
- package/lib/nodes/DateTimeNode/DateTimeComponent.js +0 -119
- package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +0 -27
- package/lib/nodes/DateTimeNode/DateTimeNode.js +0 -82
- package/lib/nodes/EmojiNode.d.ts +0 -18
- package/lib/nodes/EmojiNode.js +0 -54
- package/lib/nodes/EquationComponent.d.ts +0 -9
- package/lib/nodes/EquationComponent.js +0 -75
- package/lib/nodes/EquationNode.d.ts +0 -26
- package/lib/nodes/EquationNode.js +0 -109
- package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +0 -8
- package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +0 -110
- package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +0 -50
- package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +0 -55
- package/lib/nodes/ExcalidrawNode/index.d.ts +0 -32
- package/lib/nodes/ExcalidrawNode/index.js +0 -117
- package/lib/nodes/FigmaNode.d.ts +0 -20
- package/lib/nodes/FigmaNode.js +0 -52
- package/lib/nodes/ImageComponent.d.ts +0 -16
- package/lib/nodes/ImageComponent.js +0 -272
- package/lib/nodes/ImageNode.d.ts +0 -50
- package/lib/nodes/ImageNode.js +0 -151
- package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +0 -26
- package/lib/nodes/InlineImageNode/InlineImageComponent.js +0 -161
- package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +0 -59
- package/lib/nodes/InlineImageNode/InlineImageNode.js +0 -162
- package/lib/nodes/KeywordNode.d.ts +0 -14
- package/lib/nodes/KeywordNode.js +0 -37
- package/lib/nodes/LayoutContainerNode.d.ts +0 -24
- package/lib/nodes/LayoutContainerNode.js +0 -95
- package/lib/nodes/LayoutItemNode.d.ts +0 -16
- package/lib/nodes/LayoutItemNode.js +0 -69
- package/lib/nodes/MentionNode.d.ts +0 -20
- package/lib/nodes/MentionNode.js +0 -85
- package/lib/nodes/PageBreakNode/index.d.ts +0 -17
- package/lib/nodes/PageBreakNode/index.js +0 -83
- package/lib/nodes/PlaygroundNodes.d.ts +0 -3
- package/lib/nodes/PlaygroundNodes.js +0 -75
- package/lib/nodes/PollComponent.d.ts +0 -9
- package/lib/nodes/PollComponent.js +0 -85
- package/lib/nodes/PollNode.d.ts +0 -43
- package/lib/nodes/PollNode.js +0 -153
- package/lib/nodes/SpecialTextNode.d.ts +0 -24
- package/lib/nodes/SpecialTextNode.js +0 -54
- package/lib/nodes/StickyComponent.d.ts +0 -10
- package/lib/nodes/StickyComponent.js +0 -162
- package/lib/nodes/StickyNode.d.ts +0 -31
- package/lib/nodes/StickyNode.js +0 -76
- package/lib/nodes/TweetNode.d.ts +0 -21
- package/lib/nodes/TweetNode.js +0 -119
- package/lib/nodes/YouTubeNode.d.ts +0 -22
- package/lib/nodes/YouTubeNode.js +0 -84
- package/lib/plugins/ActionsPlugin/index.d.ts +0 -5
- package/lib/plugins/ActionsPlugin/index.js +0 -168
- package/lib/plugins/AutoEmbedPlugin/index.d.ts +0 -19
- package/lib/plugins/AutoEmbedPlugin/index.js +0 -158
- package/lib/plugins/AutoLinkPlugin/index.d.ts +0 -2
- package/lib/plugins/AutoLinkPlugin/index.js +0 -15
- package/lib/plugins/AutocompletePlugin/index.d.ts +0 -10
- package/lib/plugins/AutocompletePlugin/index.js +0 -2477
- package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -7
- package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -46
- package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -17
- package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -115
- package/lib/plugins/CodeActionMenuPlugin/index.d.ts +0 -5
- package/lib/plugins/CodeActionMenuPlugin/index.js +0 -104
- package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
- package/lib/plugins/CodeActionMenuPlugin/utils.js +0 -22
- package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +0 -2
- package/lib/plugins/CodeHighlightPrismPlugin/index.js +0 -14
- package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +0 -2
- package/lib/plugins/CodeHighlightShikiPlugin/index.js +0 -14
- package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +0 -25
- package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +0 -135
- package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +0 -16
- package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +0 -83
- package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +0 -16
- package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +0 -85
- package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +0 -2
- package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +0 -12
- package/lib/plugins/CollapsiblePlugin/index.d.ts +0 -3
- package/lib/plugins/CollapsiblePlugin/index.js +0 -132
- package/lib/plugins/CommentPlugin/index.d.ts +0 -9
- package/lib/plugins/CommentPlugin/index.js +0 -460
- package/lib/plugins/ComponentPickerPlugin/index.d.ts +0 -2
- package/lib/plugins/ComponentPickerPlugin/index.js +0 -276
- package/lib/plugins/ContextMenuPlugin/index.d.ts +0 -2
- package/lib/plugins/ContextMenuPlugin/index.js +0 -112
- package/lib/plugins/CounterPlugin/index.d.ts +0 -3
- package/lib/plugins/CounterPlugin/index.js +0 -24
- package/lib/plugins/DateTimePlugin/index.d.ts +0 -8
- package/lib/plugins/DateTimePlugin/index.js +0 -28
- package/lib/plugins/DebugPlugin/index.d.ts +0 -3
- package/lib/plugins/DebugPlugin/index.js +0 -219
- package/lib/plugins/DocsPlugin/index.d.ts +0 -2
- package/lib/plugins/DocsPlugin/index.js +0 -4
- package/lib/plugins/DragDropPastePlugin/index.d.ts +0 -1
- package/lib/plugins/DragDropPastePlugin/index.js +0 -37
- package/lib/plugins/DraggableBlockPlugin/index.d.ts +0 -12
- package/lib/plugins/DraggableBlockPlugin/index.js +0 -36
- package/lib/plugins/EmojiPickerPlugin/index.d.ts +0 -1
- package/lib/plugins/EmojiPickerPlugin/index.js +0 -84
- package/lib/plugins/EmojisPlugin/index.d.ts +0 -2
- package/lib/plugins/EmojisPlugin/index.js +0 -56
- package/lib/plugins/EquationsPlugin/index.d.ts +0 -14
- package/lib/plugins/EquationsPlugin/index.js +0 -34
- package/lib/plugins/ExcalidrawPlugin/index.d.ts +0 -5
- package/lib/plugins/ExcalidrawPlugin/index.js +0 -44
- package/lib/plugins/FigmaPlugin/index.d.ts +0 -4
- package/lib/plugins/FigmaPlugin/index.js +0 -24
- package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -15
- package/lib/plugins/FloatingLinkEditorPlugin/index.js +0 -280
- package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -7
- package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +0 -219
- package/lib/plugins/ImagesPlugin/index.d.ts +0 -24
- package/lib/plugins/ImagesPlugin/index.js +0 -195
- package/lib/plugins/InlineImagePlugin/index.d.ts +0 -17
- package/lib/plugins/InlineImagePlugin/index.js +0 -180
- package/lib/plugins/KeywordsPlugin/index.d.ts +0 -2
- package/lib/plugins/KeywordsPlugin/index.js +0 -35
- package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +0 -6
- package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +0 -21
- package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +0 -7
- package/lib/plugins/LayoutPlugin/LayoutPlugin.js +0 -135
- package/lib/plugins/LinkPlugin/index.d.ts +0 -6
- package/lib/plugins/LinkPlugin/index.js +0 -11
- package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +0 -2
- package/lib/plugins/MarkdownShortcutPlugin/index.js +0 -6
- package/lib/plugins/MarkdownTransformers/index.d.ts +0 -8
- package/lib/plugins/MarkdownTransformers/index.js +0 -238
- package/lib/plugins/MaxLengthPlugin/index.d.ts +0 -3
- package/lib/plugins/MaxLengthPlugin/index.js +0 -41
- package/lib/plugins/MentionsPlugin/index.d.ts +0 -2
- package/lib/plugins/MentionsPlugin/index.js +0 -564
- package/lib/plugins/PageBreakPlugin/index.d.ts +0 -4
- package/lib/plugins/PageBreakPlugin/index.js +0 -31
- package/lib/plugins/PasteLogPlugin/index.d.ts +0 -2
- package/lib/plugins/PasteLogPlugin/index.js +0 -27
- package/lib/plugins/PollPlugin/index.d.ts +0 -8
- package/lib/plugins/PollPlugin/index.js +0 -38
- package/lib/plugins/ShortcutsPlugin/index.d.ts +0 -6
- package/lib/plugins/ShortcutsPlugin/index.js +0 -116
- package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +0 -59
- package/lib/plugins/ShortcutsPlugin/shortcuts.js +0 -173
- package/lib/plugins/SpecialTextPlugin/index.d.ts +0 -2
- package/lib/plugins/SpecialTextPlugin/index.js +0 -50
- package/lib/plugins/SpeechToTextPlugin/index.d.ts +0 -5
- package/lib/plugins/SpeechToTextPlugin/index.js +0 -86
- package/lib/plugins/StickyPlugin/index.d.ts +0 -2
- package/lib/plugins/StickyPlugin/index.js +0 -16
- package/lib/plugins/TabFocusPlugin/index.d.ts +0 -1
- package/lib/plugins/TabFocusPlugin/index.js +0 -38
- package/lib/plugins/TableActionMenuPlugin/index.d.ts +0 -5
- package/lib/plugins/TableActionMenuPlugin/index.js +0 -492
- package/lib/plugins/TableCellResizer/index.d.ts +0 -3
- package/lib/plugins/TableCellResizer/index.js +0 -297
- package/lib/plugins/TableHoverActionsPlugin/index.d.ts +0 -4
- package/lib/plugins/TableHoverActionsPlugin/index.js +0 -188
- package/lib/plugins/TableOfContentsPlugin/index.d.ts +0 -2
- package/lib/plugins/TableOfContentsPlugin/index.js +0 -116
- package/lib/plugins/TablePlugin.d.ts +0 -31
- package/lib/plugins/TablePlugin.js +0 -63
- package/lib/plugins/TestRecorderPlugin/index.d.ts +0 -3
- package/lib/plugins/TestRecorderPlugin/index.js +0 -346
- package/lib/plugins/ToolbarPlugin/fontSize.d.ts +0 -9
- package/lib/plugins/ToolbarPlugin/fontSize.js +0 -84
- package/lib/plugins/ToolbarPlugin/index.d.ts +0 -9
- package/lib/plugins/ToolbarPlugin/index.js +0 -500
- package/lib/plugins/ToolbarPlugin/utils.d.ts +0 -26
- package/lib/plugins/ToolbarPlugin/utils.js +0 -247
- package/lib/plugins/TreeViewPlugin/index.d.ts +0 -2
- package/lib/plugins/TreeViewPlugin/index.js +0 -7
- package/lib/plugins/TwitterPlugin/index.d.ts +0 -4
- package/lib/plugins/TwitterPlugin/index.js +0 -24
- package/lib/plugins/TypingPerfPlugin/index.d.ts +0 -2
- package/lib/plugins/TypingPerfPlugin/index.js +0 -97
- package/lib/plugins/YouTubePlugin/index.d.ts +0 -4
- package/lib/plugins/YouTubePlugin/index.js +0 -24
- package/lib/server/validation.d.ts +0 -1
- package/lib/server/validation.js +0 -115
- package/lib/setupEnv.d.ts +0 -2
- package/lib/setupEnv.js +0 -29
- package/lib/themes/CommentEditorTheme.d.ts +0 -4
- package/lib/themes/CommentEditorTheme.js +0 -11
- package/lib/themes/PlaygroundEditorTheme.d.ts +0 -4
- package/lib/themes/PlaygroundEditorTheme.js +0 -124
- package/lib/themes/StickyEditorTheme.d.ts +0 -4
- package/lib/themes/StickyEditorTheme.js +0 -11
- package/lib/tyes.dt.d.ts +0 -12
- package/lib/tyes.dt.js +0 -4
- package/lib/ui/Button.d.ts +0 -12
- package/lib/ui/Button.js +0 -6
- package/lib/ui/ColorPicker.d.ts +0 -14
- package/lib/ui/ColorPicker.js +0 -219
- package/lib/ui/ContentEditable.d.ts +0 -9
- package/lib/ui/ContentEditable.js +0 -6
- package/lib/ui/Dialog.d.ts +0 -10
- package/lib/ui/Dialog.js +0 -8
- package/lib/ui/DropDown.d.ts +0 -18
- package/lib/ui/DropDown.js +0 -133
- package/lib/ui/DropdownColorPicker.d.ts +0 -13
- package/lib/ui/DropdownColorPicker.js +0 -6
- package/lib/ui/EquationEditor.d.ts +0 -8
- package/lib/ui/EquationEditor.js +0 -11
- package/lib/ui/ExcalidrawModal.d.ts +0 -42
- package/lib/ui/ExcalidrawModal.js +0 -103
- package/lib/ui/FileInput.d.ts +0 -10
- package/lib/ui/FileInput.js +0 -5
- package/lib/ui/FlashMessage.d.ts +0 -7
- package/lib/ui/FlashMessage.js +0 -6
- package/lib/ui/ImageResizer.d.ts +0 -17
- package/lib/ui/ImageResizer.js +0 -171
- package/lib/ui/KatexEquationAlterer.d.ts +0 -8
- package/lib/ui/KatexEquationAlterer.js +0 -23
- package/lib/ui/KatexRenderer.d.ts +0 -6
- package/lib/ui/KatexRenderer.js +0 -24
- package/lib/ui/Modal.d.ts +0 -9
- package/lib/ui/Modal.js +0 -48
- package/lib/ui/Select.d.ts +0 -8
- package/lib/ui/Select.js +0 -5
- package/lib/ui/Switch.d.ts +0 -8
- package/lib/ui/Switch.js +0 -6
- package/lib/ui/TextInput.d.ts +0 -13
- package/lib/ui/TextInput.js +0 -7
- package/lib/utils/docSerialization.d.ts +0 -3
- package/lib/utils/docSerialization.js +0 -60
- package/lib/utils/emoji-list.d.ts +0 -20
- package/lib/utils/emoji-list.js +0 -16609
- package/lib/utils/getDOMRangeRect.d.ts +0 -8
- package/lib/utils/getDOMRangeRect.js +0 -26
- package/lib/utils/getSelectedNode.d.ts +0 -2
- package/lib/utils/getSelectedNode.js +0 -28
- package/lib/utils/getThemeSelector.d.ts +0 -2
- package/lib/utils/getThemeSelector.js +0 -14
- package/lib/utils/isMobileWidth.d.ts +0 -7
- package/lib/utils/isMobileWidth.js +0 -11
- package/lib/utils/joinClasses.d.ts +0 -1
- package/lib/utils/joinClasses.js +0 -7
- package/lib/utils/setFloatingElemPosition.d.ts +0 -1
- package/lib/utils/setFloatingElemPosition.js +0 -59
- package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -1
- package/lib/utils/setFloatingElemPositionForLinkEditor.js +0 -36
- package/lib/utils/swipe.d.ts +0 -4
- package/lib/utils/swipe.js +0 -94
- package/lib/utils/url.d.ts +0 -2
- package/lib/utils/url.js +0 -31
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Convert a Lexical JSON structure to a Loro tree
|
|
7
|
-
* This is used to initialize a Loro tree from existing Lexical content
|
|
8
|
-
*/
|
|
9
|
-
export function lexicalToLoroTree(lexicalJson, tree) {
|
|
10
|
-
let parsedJson;
|
|
11
|
-
if (typeof lexicalJson === 'string') {
|
|
12
|
-
try {
|
|
13
|
-
parsedJson = JSON.parse(lexicalJson);
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
throw new Error(`Failed to parse Lexical JSON: ${error}`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
parsedJson = lexicalJson;
|
|
21
|
-
}
|
|
22
|
-
// Start with the root node - create it without a parent
|
|
23
|
-
const rootTreeNode = tree.createNode();
|
|
24
|
-
const rootTreeID = rootTreeNode.id;
|
|
25
|
-
processLexicalNode(parsedJson.root, tree, rootTreeNode);
|
|
26
|
-
return rootTreeID;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Recursively process a Lexical node and add it to the Loro tree
|
|
30
|
-
*/
|
|
31
|
-
function processLexicalNode(lexicalNode, tree, treeNode) {
|
|
32
|
-
// Store the lexical data in the tree node
|
|
33
|
-
const nodeData = treeNode.data;
|
|
34
|
-
if (nodeData) {
|
|
35
|
-
// Store element type for quick access
|
|
36
|
-
nodeData.set('elementType', lexicalNode.type);
|
|
37
|
-
// Store lexical node data directly as JSON object
|
|
38
|
-
const lexicalNodeData = createLexicalNodeFromJSON(lexicalNode);
|
|
39
|
-
const lexicalNodeJSON = lexicalNodeData.lexicalNode.exportJSON();
|
|
40
|
-
// Remove all key-related fields to avoid duplication (TreeID serves as the key)
|
|
41
|
-
if ('__key' in lexicalNodeJSON || 'key' in lexicalNodeJSON || 'lexicalKey' in lexicalNodeJSON) {
|
|
42
|
-
const { __key, key, lexicalKey, ...cleanedData } = lexicalNodeJSON;
|
|
43
|
-
nodeData.set('lexical', cleanedData);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
nodeData.set('lexical', lexicalNodeJSON);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Process children if they exist
|
|
50
|
-
if (lexicalNode.children && Array.isArray(lexicalNode.children)) {
|
|
51
|
-
lexicalNode.children.forEach((child, childIndex) => {
|
|
52
|
-
// Create child node under current node
|
|
53
|
-
const childTreeNode = tree.createNode(treeNode.id, childIndex);
|
|
54
|
-
processLexicalNode(child, tree, childTreeNode);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Create a minimal Lexical node representation from JSON data
|
|
60
|
-
* This doesn't create actual Lexical nodes, just the data structure needed for serialization
|
|
61
|
-
*/
|
|
62
|
-
function createLexicalNodeFromJSON(nodeJson) {
|
|
63
|
-
// Create a minimal node-like object with the essential properties
|
|
64
|
-
const nodeData = {
|
|
65
|
-
__key: generateNodeKey(), // Generate a temporary key
|
|
66
|
-
__type: nodeJson.type,
|
|
67
|
-
__parent: null, // Will be set during tree construction
|
|
68
|
-
__text: nodeJson.text || undefined,
|
|
69
|
-
__format: nodeJson.format || 0,
|
|
70
|
-
__style: nodeJson.style || '',
|
|
71
|
-
__mode: nodeJson.mode || undefined,
|
|
72
|
-
__detail: nodeJson.detail || undefined,
|
|
73
|
-
__indent: nodeJson.indent || 0,
|
|
74
|
-
__direction: nodeJson.direction || null,
|
|
75
|
-
__tag: nodeJson.tag || undefined,
|
|
76
|
-
__textFormat: nodeJson.textFormat || undefined,
|
|
77
|
-
__textStyle: nodeJson.textStyle || undefined,
|
|
78
|
-
__version: nodeJson.version || 1
|
|
79
|
-
};
|
|
80
|
-
// Remove undefined properties
|
|
81
|
-
Object.keys(nodeData).forEach(key => {
|
|
82
|
-
if (nodeData[key] === undefined) {
|
|
83
|
-
delete nodeData[key];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
// Return in the format expected by LexicalNodeDataHelper
|
|
87
|
-
return {
|
|
88
|
-
lexicalNode: {
|
|
89
|
-
getType: () => nodeJson.type,
|
|
90
|
-
exportJSON: () => nodeData,
|
|
91
|
-
getKey: () => nodeData.__key
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Generate a simple node key for temporary use
|
|
97
|
-
*/
|
|
98
|
-
function generateNodeKey() {
|
|
99
|
-
return Math.random().toString(36).substr(2, 9);
|
|
100
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { LoroDoc, TreeID } from 'loro-crdt';
|
|
2
|
-
import { EditorState, LexicalNode, NodeKey, RangeSelection, TextNode } from 'lexical';
|
|
3
|
-
export declare const DEFAULT_TREE_NAME = "lexical-tree";
|
|
4
|
-
/**
|
|
5
|
-
* Generates a consistent client ID from a Loro document.
|
|
6
|
-
* Uses the numeric peer ID directly to ensure consistency across all components.
|
|
7
|
-
*
|
|
8
|
-
* @param doc - The Loro document
|
|
9
|
-
* @returns A number representing the client ID
|
|
10
|
-
*/
|
|
11
|
-
export declare function generateClientID(doc: LoroDoc): number;
|
|
12
|
-
/**
|
|
13
|
-
* Generates a client ID for cases where no document is available.
|
|
14
|
-
* Creates a random ID within the safe integer range.
|
|
15
|
-
*
|
|
16
|
-
* @returns A randomly generated client ID
|
|
17
|
-
*/
|
|
18
|
-
export declare function generateRandomClientID(): number;
|
|
19
|
-
/**
|
|
20
|
-
* Ensure doc has a LoroTree instance
|
|
21
|
-
*/
|
|
22
|
-
export declare function getLoroTree(doc: LoroDoc, treeName?: string): import("loro-crdt").LoroTree<Record<string, unknown>>;
|
|
23
|
-
/**
|
|
24
|
-
* Helper function to parse TreeID back to nodeKey and peerId
|
|
25
|
-
*/
|
|
26
|
-
export declare function parseTreeID(treeId: TreeID): {
|
|
27
|
-
nodeKey: NodeKey;
|
|
28
|
-
peerId: number;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Helper function to get Lexical node information for Loro sync
|
|
32
|
-
*/
|
|
33
|
-
export declare function getLexicalNodeInfo(node: LexicalNode): {
|
|
34
|
-
parentKey?: string;
|
|
35
|
-
index?: number;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Check if a class extends another class (proper inheritance checking)
|
|
39
|
-
*/
|
|
40
|
-
export declare function isClassExtending(Klass: any, BaseClass: any): boolean;
|
|
41
|
-
export declare function toKeyNodeNumber(nodeKey: NodeKey): number;
|
|
42
|
-
export declare function $diffTextContentAndApplyDelta(textNode: TextNode, key: NodeKey, prevText: string, nextText: string): void;
|
|
43
|
-
export declare function doesSelectionNeedRecovering(selection: RangeSelection): boolean;
|
|
44
|
-
export declare function $moveSelectionToPreviousNode(anchorNodeKey: string, currentEditorState: EditorState): void;
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { $getNodeByKey, $getRoot, $getSelection, $isRangeSelection, $isTextNode } from 'lexical';
|
|
6
|
-
import simpleDiffWithCursor from '../../utils/simpleDiffWithCursor';
|
|
7
|
-
export const DEFAULT_TREE_NAME = 'lexical-tree';
|
|
8
|
-
/**
|
|
9
|
-
* Generates a consistent client ID from a Loro document.
|
|
10
|
-
* Uses the numeric peer ID directly to ensure consistency across all components.
|
|
11
|
-
*
|
|
12
|
-
* @param doc - The Loro document
|
|
13
|
-
* @returns A number representing the client ID
|
|
14
|
-
*/
|
|
15
|
-
export function generateClientID(doc) {
|
|
16
|
-
return Number(doc.peerId);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Generates a client ID for cases where no document is available.
|
|
20
|
-
* Creates a random ID within the safe integer range.
|
|
21
|
-
*
|
|
22
|
-
* @returns A randomly generated client ID
|
|
23
|
-
*/
|
|
24
|
-
export function generateRandomClientID() {
|
|
25
|
-
return Math.floor(Math.random() * 2147483647);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Ensure doc has a LoroTree instance
|
|
29
|
-
*/
|
|
30
|
-
export function getLoroTree(doc, treeName = DEFAULT_TREE_NAME) {
|
|
31
|
-
const tree = doc.getTree(treeName);
|
|
32
|
-
// Enable fractional index for ordered siblings (useful for maintaining order)
|
|
33
|
-
// tree.enableFractionalIndex(0.001);
|
|
34
|
-
return tree;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Helper function to parse TreeID back to nodeKey and peerId
|
|
38
|
-
*/
|
|
39
|
-
export function parseTreeID(treeId) {
|
|
40
|
-
const [nodeKey, peerId] = treeId.split('@');
|
|
41
|
-
return {
|
|
42
|
-
nodeKey: nodeKey,
|
|
43
|
-
peerId: Number(peerId)
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Helper function to get Lexical node information for Loro sync
|
|
48
|
-
*/
|
|
49
|
-
export function getLexicalNodeInfo(node) {
|
|
50
|
-
// TODO: Implement logic to get parent and index from Lexical node
|
|
51
|
-
// This is a placeholder that should be replaced with actual Lexical API calls
|
|
52
|
-
return {
|
|
53
|
-
parentKey: node.getParent()?.getKey(),
|
|
54
|
-
index: node.getIndexWithinParent()
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Check if a class extends another class (proper inheritance checking)
|
|
59
|
-
*/
|
|
60
|
-
export function isClassExtending(Klass, BaseClass) {
|
|
61
|
-
// Direct class equality
|
|
62
|
-
if (Klass === BaseClass) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
// Check by name (for cases where classes might be different instances)
|
|
66
|
-
if (Klass.name === BaseClass.name) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
// Check prototype chain for inheritance
|
|
70
|
-
if (Klass.prototype && Object.prototype.isPrototypeOf.call(BaseClass, Klass)) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
export function toKeyNodeNumber(nodeKey) {
|
|
76
|
-
// Special case for root node
|
|
77
|
-
if (nodeKey === "root") {
|
|
78
|
-
return 0;
|
|
79
|
-
}
|
|
80
|
-
// Attempt to convert NodeKey (string) to a number
|
|
81
|
-
const keyAsNumber = Number(nodeKey);
|
|
82
|
-
if (!isNaN(keyAsNumber)) {
|
|
83
|
-
return keyAsNumber;
|
|
84
|
-
}
|
|
85
|
-
// If conversion fails, throw an error
|
|
86
|
-
throw new Error(`NodeKey "${nodeKey}" cannot be converted to a number. Expected numeric string or "root".`);
|
|
87
|
-
}
|
|
88
|
-
export function $diffTextContentAndApplyDelta(textNode, key, prevText, nextText) {
|
|
89
|
-
const selection = $getSelection();
|
|
90
|
-
let cursorOffset = nextText.length;
|
|
91
|
-
if ($isRangeSelection(selection) && selection.isCollapsed()) {
|
|
92
|
-
const anchor = selection.anchor;
|
|
93
|
-
if (anchor.key === key) {
|
|
94
|
-
// Ensure cursor offset doesn't exceed the new text length
|
|
95
|
-
// This prevents errors when text is split or content changes significantly
|
|
96
|
-
cursorOffset = Math.min(anchor.offset, nextText.length);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
const diff = simpleDiffWithCursor(prevText, nextText, cursorOffset);
|
|
100
|
-
const beforeSplice = textNode.getTextContent();
|
|
101
|
-
textNode.spliceText(diff.index, diff.remove, diff.insert);
|
|
102
|
-
const afterSplice = textNode.getTextContent();
|
|
103
|
-
}
|
|
104
|
-
export function doesSelectionNeedRecovering(selection) {
|
|
105
|
-
const anchor = selection.anchor;
|
|
106
|
-
const focus = selection.focus;
|
|
107
|
-
let recoveryNeeded = false;
|
|
108
|
-
try {
|
|
109
|
-
const anchorNode = anchor.getNode();
|
|
110
|
-
const focusNode = focus.getNode();
|
|
111
|
-
if (
|
|
112
|
-
// We might have removed a node that no longer exists
|
|
113
|
-
!anchorNode.isAttached() ||
|
|
114
|
-
!focusNode.isAttached() ||
|
|
115
|
-
// If we've split a node, then the offset might not be right
|
|
116
|
-
($isTextNode(anchorNode) &&
|
|
117
|
-
anchor.offset > anchorNode.getTextContentSize()) ||
|
|
118
|
-
($isTextNode(focusNode) && focus.offset > focusNode.getTextContentSize())) {
|
|
119
|
-
recoveryNeeded = true;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
// Sometimes checking nor a node via getNode might trigger
|
|
124
|
-
// an error, so we need recovery then too.
|
|
125
|
-
recoveryNeeded = true;
|
|
126
|
-
}
|
|
127
|
-
return recoveryNeeded;
|
|
128
|
-
}
|
|
129
|
-
export function $moveSelectionToPreviousNode(anchorNodeKey, currentEditorState) {
|
|
130
|
-
const anchorNode = currentEditorState._nodeMap.get(anchorNodeKey);
|
|
131
|
-
if (!anchorNode) {
|
|
132
|
-
$getRoot().selectStart();
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
// Get previous node
|
|
136
|
-
const prevNodeKey = anchorNode.__prev;
|
|
137
|
-
let prevNode = null;
|
|
138
|
-
if (prevNodeKey) {
|
|
139
|
-
prevNode = $getNodeByKey(prevNodeKey);
|
|
140
|
-
}
|
|
141
|
-
// If previous node not found, get parent node
|
|
142
|
-
if (prevNode === null && anchorNode.__parent !== null) {
|
|
143
|
-
prevNode = $getNodeByKey(anchorNode.__parent);
|
|
144
|
-
}
|
|
145
|
-
if (prevNode === null) {
|
|
146
|
-
$getRoot().selectStart();
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (prevNode !== null && prevNode.isAttached()) {
|
|
150
|
-
prevNode.selectEnd();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// If the found node is also deleted, select the next one
|
|
155
|
-
$moveSelectionToPreviousNode(prevNode.__key, currentEditorState);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LoroDoc } from 'loro-crdt';
|
|
2
|
-
import { Provider } from './State';
|
|
3
|
-
/**
|
|
4
|
-
* Create a WebSocket provider for Loro collaboration with periodic ephemeral state synchronization.
|
|
5
|
-
* The resyncInterval enables client-side periodic querying to complement server-side cleanup,
|
|
6
|
-
* preventing stale user states from accumulating after browser refreshes.
|
|
7
|
-
*/
|
|
8
|
-
export declare function createWebsocketProvider(id: string, docMap: Map<string, LoroDoc>, websocketUrl?: string): Provider;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { LoroDoc } from 'loro-crdt';
|
|
6
|
-
import { WebsocketProvider } from './provider/websocket';
|
|
7
|
-
const url = new URL(window.location.href);
|
|
8
|
-
const params = new URLSearchParams(url.search);
|
|
9
|
-
const RESYNC_INTERVAL = parseInt(params.get('resyncInterval') || '30000', 10); // Default 30s, configurable via URL
|
|
10
|
-
/**
|
|
11
|
-
* Create a WebSocket provider for Loro collaboration with periodic ephemeral state synchronization.
|
|
12
|
-
* The resyncInterval enables client-side periodic querying to complement server-side cleanup,
|
|
13
|
-
* preventing stale user states from accumulating after browser refreshes.
|
|
14
|
-
*/
|
|
15
|
-
export function createWebsocketProvider(id, docMap, websocketUrl) {
|
|
16
|
-
let doc = docMap.get(id);
|
|
17
|
-
if (doc === undefined) {
|
|
18
|
-
doc = new LoroDoc();
|
|
19
|
-
docMap.set(id, doc);
|
|
20
|
-
}
|
|
21
|
-
const providerInstanceId = Math.random().toString(36).substr(2, 9);
|
|
22
|
-
console.log(`🏭 Creating WebsocketProvider instance (ID: ${providerInstanceId}) for docId: ${id}`);
|
|
23
|
-
// Use provided websocketUrl or fallback to URL parameters/defaults
|
|
24
|
-
const finalWebsocketUrl = websocketUrl || (() => {
|
|
25
|
-
const url = new URL(window.location.href);
|
|
26
|
-
const params = new URLSearchParams(url.search);
|
|
27
|
-
return params.get('collabEndpoint') || 'ws://localhost:3002';
|
|
28
|
-
})();
|
|
29
|
-
const websocketProvider = new WebsocketProvider(finalWebsocketUrl, id, doc, {
|
|
30
|
-
connect: false,
|
|
31
|
-
resyncInterval: RESYNC_INTERVAL, // Poll ephemeral state periodically to prevent stale user accumulation
|
|
32
|
-
});
|
|
33
|
-
console.log(`🏭 WebsocketProvider created for: ${finalWebsocketUrl}/${id} with resyncInterval: ${RESYNC_INTERVAL}ms`);
|
|
34
|
-
return websocketProvider;
|
|
35
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function invariant(cond?: boolean, message?: string, ...args: string[]): asserts cond;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
// invariant(condition, message) will refine types based on "condition", and
|
|
6
|
-
// if "condition" is false will throw an error. This function is special-cased
|
|
7
|
-
// in flow itself, so we can't name it anything else.
|
|
8
|
-
export default function invariant(cond, message, ...args) {
|
|
9
|
-
if (cond) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile ' +
|
|
13
|
-
'time. There is no runtime version. Error: ' +
|
|
14
|
-
message);
|
|
15
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
export default function simpleDiffWithCursor(a, b, cursor) {
|
|
6
|
-
const aLength = a.length;
|
|
7
|
-
const bLength = b.length;
|
|
8
|
-
let left = 0; // number of same characters counting from left
|
|
9
|
-
let right = 0; // number of same characters counting from right
|
|
10
|
-
// Iterate left to the right until we find a changed character
|
|
11
|
-
// First iteration considers the current cursor position
|
|
12
|
-
while (left < aLength &&
|
|
13
|
-
left < bLength &&
|
|
14
|
-
a[left] === b[left] &&
|
|
15
|
-
left < cursor) {
|
|
16
|
-
left++;
|
|
17
|
-
}
|
|
18
|
-
// Iterate right to the left until we find a changed character
|
|
19
|
-
while (right + left < aLength &&
|
|
20
|
-
right + left < bLength &&
|
|
21
|
-
a[aLength - right - 1] === b[bLength - right - 1]) {
|
|
22
|
-
right++;
|
|
23
|
-
}
|
|
24
|
-
// Try to iterate left further to the right without caring about the current cursor position
|
|
25
|
-
while (right + left < aLength &&
|
|
26
|
-
right + left < bLength &&
|
|
27
|
-
a[left] === b[left]) {
|
|
28
|
-
left++;
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
index: left,
|
|
32
|
-
insert: b.slice(left, bLength - right),
|
|
33
|
-
remove: aLength - left - right,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { LexicalEditor, NodeKey } from 'lexical';
|
|
2
|
-
import { Klass, LexicalNode } from 'lexical';
|
|
3
|
-
import type { Doc } from 'yjs';
|
|
4
|
-
import type { CollabElementNode } from './nodes/CollabElementNode';
|
|
5
|
-
import { AnyCollabNode } from './nodes/AnyCollabNode';
|
|
6
|
-
import type { Cursor } from './sync/SyncCursors';
|
|
7
|
-
import { Provider } from './State';
|
|
8
|
-
export type ClientID = number;
|
|
9
|
-
export type Binding = {
|
|
10
|
-
clientID: ClientID;
|
|
11
|
-
collabNodeMap: Map<NodeKey, AnyCollabNode>;
|
|
12
|
-
cursors: Map<ClientID, Cursor>;
|
|
13
|
-
cursorsContainer: null | HTMLElement;
|
|
14
|
-
doc: Doc;
|
|
15
|
-
docMap: Map<string, Doc>;
|
|
16
|
-
editor: LexicalEditor;
|
|
17
|
-
id: string;
|
|
18
|
-
nodeProperties: Map<string, Array<string>>;
|
|
19
|
-
root: CollabElementNode;
|
|
20
|
-
excludedProperties: ExcludedProperties;
|
|
21
|
-
};
|
|
22
|
-
export type ExcludedProperties = Map<Klass<LexicalNode>, Set<string>>;
|
|
23
|
-
export declare function createBinding(editor: LexicalEditor, provider: Provider, id: string, doc: Doc | null | undefined, docMap: Map<string, Doc>, excludedProperties?: ExcludedProperties): Binding;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { XmlText } from 'yjs';
|
|
2
|
-
import invariant from '../utils/invariant';
|
|
3
|
-
import { $createCollabElementNode } from './nodes/CollabElementNode';
|
|
4
|
-
import { setupYjsDebugging } from './Debug';
|
|
5
|
-
export function createBinding(editor, provider, id, doc, docMap, excludedProperties) {
|
|
6
|
-
invariant(doc !== undefined && doc !== null, 'createBinding: doc is null or undefined');
|
|
7
|
-
const rootXmlText = doc.get('root', XmlText);
|
|
8
|
-
const collabRoot = $createCollabElementNode(rootXmlText, null, 'root');
|
|
9
|
-
collabRoot._key = 'root';
|
|
10
|
-
const binding = {
|
|
11
|
-
clientID: doc.clientID,
|
|
12
|
-
collabNodeMap: new Map(),
|
|
13
|
-
cursors: new Map(),
|
|
14
|
-
cursorsContainer: null,
|
|
15
|
-
doc,
|
|
16
|
-
docMap,
|
|
17
|
-
editor,
|
|
18
|
-
excludedProperties: excludedProperties || new Map(),
|
|
19
|
-
id,
|
|
20
|
-
nodeProperties: new Map(),
|
|
21
|
-
root: collabRoot,
|
|
22
|
-
};
|
|
23
|
-
// Setup Y.js debugging utilities
|
|
24
|
-
setupYjsDebugging(binding);
|
|
25
|
-
return binding;
|
|
26
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { Binding } from './Bindings';
|
|
2
|
-
/**
|
|
3
|
-
* YJS Debugging Interface - Provides comprehensive debugging utilities for Y.js collaboration
|
|
4
|
-
*/
|
|
5
|
-
export interface YjsDebugger {
|
|
6
|
-
binding: Binding | null;
|
|
7
|
-
logStructure: () => void;
|
|
8
|
-
verifyStructure: () => void;
|
|
9
|
-
inspectNode: (nodeKey: string) => void;
|
|
10
|
-
generateTreeHTML: (node: any, prefix?: string, isLast?: boolean) => string;
|
|
11
|
-
addDebugToPage: () => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Setup global debugging utilities for Y.js collaboration
|
|
15
|
-
* This function creates comprehensive debugging tools including:
|
|
16
|
-
* - Tree structure visualization
|
|
17
|
-
* - Node inspection utilities
|
|
18
|
-
* - Interactive debug panel
|
|
19
|
-
* - Console logging functions
|
|
20
|
-
*
|
|
21
|
-
* @param binding - The Y.js binding instance to debug
|
|
22
|
-
*/
|
|
23
|
-
export declare function setupYjsDebugging(binding: Binding): void;
|