@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,247 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
import { $createCodeNode } from '@lexical/code';
|
|
13
|
-
import { INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, } from '@lexical/list';
|
|
14
|
-
import { $isDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode';
|
|
15
|
-
import { $createHeadingNode, $createQuoteNode, $isHeadingNode, $isQuoteNode, } from '@lexical/rich-text';
|
|
16
|
-
import { $patchStyleText, $setBlocksType } from '@lexical/selection';
|
|
17
|
-
import { $isTableSelection } from '@lexical/table';
|
|
18
|
-
import { $getNearestBlockElementAncestorOrThrow } from '@lexical/utils';
|
|
19
|
-
import { $createParagraphNode, $getSelection, $isRangeSelection, $isTextNode, } from 'lexical';
|
|
20
|
-
import { DEFAULT_FONT_SIZE, MAX_ALLOWED_FONT_SIZE, MIN_ALLOWED_FONT_SIZE, } from '../../context/ToolbarContext';
|
|
21
|
-
// eslint-disable-next-line no-shadow
|
|
22
|
-
export var UpdateFontSizeType;
|
|
23
|
-
(function (UpdateFontSizeType) {
|
|
24
|
-
UpdateFontSizeType[UpdateFontSizeType["increment"] = 1] = "increment";
|
|
25
|
-
UpdateFontSizeType[UpdateFontSizeType["decrement"] = 2] = "decrement";
|
|
26
|
-
})(UpdateFontSizeType || (UpdateFontSizeType = {}));
|
|
27
|
-
/**
|
|
28
|
-
* Calculates the new font size based on the update type.
|
|
29
|
-
* @param currentFontSize - The current font size
|
|
30
|
-
* @param updateType - The type of change, either increment or decrement
|
|
31
|
-
* @returns the next font size
|
|
32
|
-
*/
|
|
33
|
-
export const calculateNextFontSize = (currentFontSize, updateType) => {
|
|
34
|
-
if (!updateType) {
|
|
35
|
-
return currentFontSize;
|
|
36
|
-
}
|
|
37
|
-
let updatedFontSize = currentFontSize;
|
|
38
|
-
switch (updateType) {
|
|
39
|
-
case UpdateFontSizeType.decrement:
|
|
40
|
-
switch (true) {
|
|
41
|
-
case currentFontSize > MAX_ALLOWED_FONT_SIZE:
|
|
42
|
-
updatedFontSize = MAX_ALLOWED_FONT_SIZE;
|
|
43
|
-
break;
|
|
44
|
-
case currentFontSize >= 48:
|
|
45
|
-
updatedFontSize -= 12;
|
|
46
|
-
break;
|
|
47
|
-
case currentFontSize >= 24:
|
|
48
|
-
updatedFontSize -= 4;
|
|
49
|
-
break;
|
|
50
|
-
case currentFontSize >= 14:
|
|
51
|
-
updatedFontSize -= 2;
|
|
52
|
-
break;
|
|
53
|
-
case currentFontSize >= 9:
|
|
54
|
-
updatedFontSize -= 1;
|
|
55
|
-
break;
|
|
56
|
-
default:
|
|
57
|
-
updatedFontSize = MIN_ALLOWED_FONT_SIZE;
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
break;
|
|
61
|
-
case UpdateFontSizeType.increment:
|
|
62
|
-
switch (true) {
|
|
63
|
-
case currentFontSize < MIN_ALLOWED_FONT_SIZE:
|
|
64
|
-
updatedFontSize = MIN_ALLOWED_FONT_SIZE;
|
|
65
|
-
break;
|
|
66
|
-
case currentFontSize < 12:
|
|
67
|
-
updatedFontSize += 1;
|
|
68
|
-
break;
|
|
69
|
-
case currentFontSize < 20:
|
|
70
|
-
updatedFontSize += 2;
|
|
71
|
-
break;
|
|
72
|
-
case currentFontSize < 36:
|
|
73
|
-
updatedFontSize += 4;
|
|
74
|
-
break;
|
|
75
|
-
case currentFontSize <= 60:
|
|
76
|
-
updatedFontSize += 12;
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
updatedFontSize = MAX_ALLOWED_FONT_SIZE;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
break;
|
|
83
|
-
default:
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
return updatedFontSize;
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Patches the selection with the updated font size.
|
|
90
|
-
*/
|
|
91
|
-
export const updateFontSizeInSelection = (editor, newFontSize, updateType) => {
|
|
92
|
-
const getNextFontSize = (prevFontSize) => {
|
|
93
|
-
if (!prevFontSize) {
|
|
94
|
-
prevFontSize = `${DEFAULT_FONT_SIZE}px`;
|
|
95
|
-
}
|
|
96
|
-
prevFontSize = prevFontSize.slice(0, -2);
|
|
97
|
-
const nextFontSize = calculateNextFontSize(Number(prevFontSize), updateType);
|
|
98
|
-
return `${nextFontSize}px`;
|
|
99
|
-
};
|
|
100
|
-
editor.update(() => {
|
|
101
|
-
if (editor.isEditable()) {
|
|
102
|
-
const selection = $getSelection();
|
|
103
|
-
if (selection !== null) {
|
|
104
|
-
$patchStyleText(selection, {
|
|
105
|
-
'font-size': newFontSize || getNextFontSize,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
export const updateFontSize = (editor, updateType, inputValue) => {
|
|
112
|
-
if (inputValue !== '') {
|
|
113
|
-
const nextFontSize = calculateNextFontSize(Number(inputValue), updateType);
|
|
114
|
-
updateFontSizeInSelection(editor, String(nextFontSize) + 'px', null);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
updateFontSizeInSelection(editor, null, updateType);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
export const formatParagraph = (editor) => {
|
|
121
|
-
editor.update(() => {
|
|
122
|
-
const selection = $getSelection();
|
|
123
|
-
$setBlocksType(selection, () => $createParagraphNode());
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
export const formatHeading = (editor, blockType, headingSize) => {
|
|
127
|
-
if (blockType !== headingSize) {
|
|
128
|
-
editor.update(() => {
|
|
129
|
-
const selection = $getSelection();
|
|
130
|
-
$setBlocksType(selection, () => $createHeadingNode(headingSize));
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
export const formatBulletList = (editor, blockType) => {
|
|
135
|
-
if (blockType !== 'bullet') {
|
|
136
|
-
editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
formatParagraph(editor);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
export const formatCheckList = (editor, blockType) => {
|
|
143
|
-
if (blockType !== 'check') {
|
|
144
|
-
editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined);
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
formatParagraph(editor);
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
export const formatNumberedList = (editor, blockType) => {
|
|
151
|
-
if (blockType !== 'number') {
|
|
152
|
-
editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
formatParagraph(editor);
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
export const formatQuote = (editor, blockType) => {
|
|
159
|
-
if (blockType !== 'quote') {
|
|
160
|
-
editor.update(() => {
|
|
161
|
-
const selection = $getSelection();
|
|
162
|
-
$setBlocksType(selection, () => $createQuoteNode());
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
export const formatCode = (editor, blockType) => {
|
|
167
|
-
if (blockType !== 'code') {
|
|
168
|
-
editor.update(() => {
|
|
169
|
-
let selection = $getSelection();
|
|
170
|
-
if (!selection) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (!$isRangeSelection(selection) || selection.isCollapsed()) {
|
|
174
|
-
$setBlocksType(selection, () => $createCodeNode());
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
const textContent = selection.getTextContent();
|
|
178
|
-
const codeNode = $createCodeNode();
|
|
179
|
-
selection.insertNodes([codeNode]);
|
|
180
|
-
selection = $getSelection();
|
|
181
|
-
if ($isRangeSelection(selection)) {
|
|
182
|
-
selection.insertRawText(textContent);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
export const clearFormatting = (editor) => {
|
|
189
|
-
editor.update(() => {
|
|
190
|
-
const selection = $getSelection();
|
|
191
|
-
if ($isRangeSelection(selection) || $isTableSelection(selection)) {
|
|
192
|
-
const anchor = selection.anchor;
|
|
193
|
-
const focus = selection.focus;
|
|
194
|
-
const nodes = selection.getNodes();
|
|
195
|
-
const extractedNodes = selection.extract();
|
|
196
|
-
if (anchor.key === focus.key && anchor.offset === focus.offset) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
nodes.forEach((node, idx) => {
|
|
200
|
-
// We split the first and last node by the selection
|
|
201
|
-
// So that we don't format unselected text inside those nodes
|
|
202
|
-
if ($isTextNode(node)) {
|
|
203
|
-
// Use a separate variable to ensure TS does not lose the refinement
|
|
204
|
-
let textNode = node;
|
|
205
|
-
if (idx === 0 && anchor.offset !== 0) {
|
|
206
|
-
textNode = textNode.splitText(anchor.offset)[1] || textNode;
|
|
207
|
-
}
|
|
208
|
-
if (idx === nodes.length - 1) {
|
|
209
|
-
textNode = textNode.splitText(focus.offset)[0] || textNode;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* If the selected text has one format applied
|
|
213
|
-
* selecting a portion of the text, could
|
|
214
|
-
* clear the format to the wrong portion of the text.
|
|
215
|
-
*
|
|
216
|
-
* The cleared text is based on the length of the selected text.
|
|
217
|
-
*/
|
|
218
|
-
// We need this in case the selected text only has one format
|
|
219
|
-
const extractedTextNode = extractedNodes[0];
|
|
220
|
-
if (nodes.length === 1 && $isTextNode(extractedTextNode)) {
|
|
221
|
-
textNode = extractedTextNode;
|
|
222
|
-
}
|
|
223
|
-
if (textNode.__style !== '') {
|
|
224
|
-
textNode.setStyle('');
|
|
225
|
-
}
|
|
226
|
-
if (textNode.__format !== 0) {
|
|
227
|
-
textNode.setFormat(0);
|
|
228
|
-
}
|
|
229
|
-
const nearestBlockElement = $getNearestBlockElementAncestorOrThrow(textNode);
|
|
230
|
-
if (nearestBlockElement.__format !== 0) {
|
|
231
|
-
nearestBlockElement.setFormat('');
|
|
232
|
-
}
|
|
233
|
-
if (nearestBlockElement.__indent !== 0) {
|
|
234
|
-
nearestBlockElement.setIndent(0);
|
|
235
|
-
}
|
|
236
|
-
node = textNode;
|
|
237
|
-
}
|
|
238
|
-
else if ($isHeadingNode(node) || $isQuoteNode(node)) {
|
|
239
|
-
node.replace($createParagraphNode(), true);
|
|
240
|
-
}
|
|
241
|
-
else if ($isDecoratorBlockNode(node)) {
|
|
242
|
-
node.setFormat('');
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
|
-
import { TreeView } from '@lexical/react/LexicalTreeView';
|
|
4
|
-
export default function TreeViewPlugin() {
|
|
5
|
-
const [editor] = useLexicalComposerContext();
|
|
6
|
-
return (_jsx(TreeView, { viewClassName: "tree-view-output", treeTypeButtonClassName: "debug-treetype-button", timeTravelPanelClassName: "debug-timetravel-panel", timeTravelButtonClassName: "debug-timetravel-button", timeTravelPanelSliderClassName: "debug-timetravel-panel-slider", timeTravelPanelButtonClassName: "debug-timetravel-panel-button", editor: editor }));
|
|
7
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
6
|
-
import { $insertNodeToNearestRoot } from '@lexical/utils';
|
|
7
|
-
import { COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
|
|
8
|
-
import { useEffect } from 'react';
|
|
9
|
-
import { $createTweetNode, TweetNode } from '../../nodes/TweetNode';
|
|
10
|
-
export const INSERT_TWEET_COMMAND = createCommand('INSERT_TWEET_COMMAND');
|
|
11
|
-
export default function TwitterPlugin() {
|
|
12
|
-
const [editor] = useLexicalComposerContext();
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
if (!editor.hasNodes([TweetNode])) {
|
|
15
|
-
throw new Error('TwitterPlugin: TweetNode not registered on editor');
|
|
16
|
-
}
|
|
17
|
-
return editor.registerCommand(INSERT_TWEET_COMMAND, (payload) => {
|
|
18
|
-
const tweetNode = $createTweetNode(payload);
|
|
19
|
-
$insertNodeToNearestRoot(tweetNode);
|
|
20
|
-
return true;
|
|
21
|
-
}, COMMAND_PRIORITY_EDITOR);
|
|
22
|
-
}, [editor]);
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { useEffect } from 'react';
|
|
6
|
-
import useReport from '../../hooks/useReport';
|
|
7
|
-
const validInputTypes = new Set([
|
|
8
|
-
'insertText',
|
|
9
|
-
'insertCompositionText',
|
|
10
|
-
'insertFromComposition',
|
|
11
|
-
'insertLineBreak',
|
|
12
|
-
'insertParagraph',
|
|
13
|
-
'deleteCompositionText',
|
|
14
|
-
'deleteContentBackward',
|
|
15
|
-
'deleteByComposition',
|
|
16
|
-
'deleteContent',
|
|
17
|
-
'deleteContentForward',
|
|
18
|
-
'deleteWordBackward',
|
|
19
|
-
'deleteWordForward',
|
|
20
|
-
'deleteHardLineBackward',
|
|
21
|
-
'deleteSoftLineBackward',
|
|
22
|
-
'deleteHardLineForward',
|
|
23
|
-
'deleteSoftLineForward',
|
|
24
|
-
]);
|
|
25
|
-
export default function TypingPerfPlugin() {
|
|
26
|
-
const report = useReport();
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
let start = 0;
|
|
29
|
-
let timerId;
|
|
30
|
-
let keyPressTimerId;
|
|
31
|
-
let log = [];
|
|
32
|
-
let invalidatingEvent = false;
|
|
33
|
-
const measureEventEnd = function logKeyPress() {
|
|
34
|
-
if (keyPressTimerId != null) {
|
|
35
|
-
if (invalidatingEvent) {
|
|
36
|
-
invalidatingEvent = false;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
log.push(performance.now() - start);
|
|
40
|
-
}
|
|
41
|
-
clearTimeout(keyPressTimerId);
|
|
42
|
-
keyPressTimerId = null;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const measureEventStart = function measureEvent() {
|
|
46
|
-
if (timerId != null) {
|
|
47
|
-
clearTimeout(timerId);
|
|
48
|
-
timerId = null;
|
|
49
|
-
}
|
|
50
|
-
// We use a setTimeout(0) instead of requestAnimationFrame, due to
|
|
51
|
-
// inconsistencies between the sequencing of rAF in different browsers.
|
|
52
|
-
keyPressTimerId = setTimeout(measureEventEnd, 0);
|
|
53
|
-
// Schedule a timer to report the results.
|
|
54
|
-
timerId = setTimeout(() => {
|
|
55
|
-
const total = log.reduce((a, b) => a + b, 0);
|
|
56
|
-
const reportedText = 'Typing Perf: ' + Math.round((total / log.length) * 100) / 100 + 'ms';
|
|
57
|
-
report(reportedText);
|
|
58
|
-
log = [];
|
|
59
|
-
}, 2000);
|
|
60
|
-
// Make the time after we do the previous logic, so we don't measure the overhead
|
|
61
|
-
// for it all.
|
|
62
|
-
start = performance.now();
|
|
63
|
-
};
|
|
64
|
-
const beforeInputHandler = function beforeInputHandler(event) {
|
|
65
|
-
if (!validInputTypes.has(event.inputType) || invalidatingEvent) {
|
|
66
|
-
invalidatingEvent = false;
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
measureEventStart();
|
|
70
|
-
};
|
|
71
|
-
const keyDownHandler = function keyDownHandler(event) {
|
|
72
|
-
const key = event.key;
|
|
73
|
-
if (key === 'Backspace' || key === 'Enter') {
|
|
74
|
-
measureEventStart();
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const pasteHandler = function pasteHandler() {
|
|
78
|
-
invalidatingEvent = true;
|
|
79
|
-
};
|
|
80
|
-
const cutHandler = function cutHandler() {
|
|
81
|
-
invalidatingEvent = true;
|
|
82
|
-
};
|
|
83
|
-
window.addEventListener('keydown', keyDownHandler, true);
|
|
84
|
-
window.addEventListener('selectionchange', measureEventEnd, true);
|
|
85
|
-
window.addEventListener('beforeinput', beforeInputHandler, true);
|
|
86
|
-
window.addEventListener('paste', pasteHandler, true);
|
|
87
|
-
window.addEventListener('cut', cutHandler, true);
|
|
88
|
-
return () => {
|
|
89
|
-
window.removeEventListener('keydown', keyDownHandler, true);
|
|
90
|
-
window.removeEventListener('selectionchange', measureEventEnd, true);
|
|
91
|
-
window.removeEventListener('beforeinput', beforeInputHandler, true);
|
|
92
|
-
window.removeEventListener('paste', pasteHandler, true);
|
|
93
|
-
window.removeEventListener('cut', cutHandler, true);
|
|
94
|
-
};
|
|
95
|
-
}, [report]);
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
6
|
-
import { $insertNodeToNearestRoot } from '@lexical/utils';
|
|
7
|
-
import { COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
|
|
8
|
-
import { useEffect } from 'react';
|
|
9
|
-
import { $createYouTubeNode, YouTubeNode } from '../../nodes/YouTubeNode';
|
|
10
|
-
export const INSERT_YOUTUBE_COMMAND = createCommand('INSERT_YOUTUBE_COMMAND');
|
|
11
|
-
export default function YouTubePlugin() {
|
|
12
|
-
const [editor] = useLexicalComposerContext();
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
if (!editor.hasNodes([YouTubeNode])) {
|
|
15
|
-
throw new Error('YouTubePlugin: YouTubeNode not registered on editor');
|
|
16
|
-
}
|
|
17
|
-
return editor.registerCommand(INSERT_YOUTUBE_COMMAND, (payload) => {
|
|
18
|
-
const youTubeNode = $createYouTubeNode(payload);
|
|
19
|
-
$insertNodeToNearestRoot(youTubeNode);
|
|
20
|
-
return true;
|
|
21
|
-
}, COMMAND_PRIORITY_EDITOR);
|
|
22
|
-
}, [editor]);
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/server/validation.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { createHeadlessEditor } from '@lexical/headless';
|
|
6
|
-
import { $isMarkNode, $unwrapMarkNode } from '@lexical/mark';
|
|
7
|
-
import * as http from 'http';
|
|
8
|
-
import { $getRoot, $isElementNode } from 'lexical';
|
|
9
|
-
import * as url from 'url';
|
|
10
|
-
import PlaygroundNodes from '../nodes/PlaygroundNodes';
|
|
11
|
-
const hostname = 'localhost';
|
|
12
|
-
const port = 1235;
|
|
13
|
-
let stringifiedEditorStateJSON = '';
|
|
14
|
-
global.__DEV__ = true;
|
|
15
|
-
const editor = createHeadlessEditor({
|
|
16
|
-
namespace: 'validation',
|
|
17
|
-
nodes: [...PlaygroundNodes],
|
|
18
|
-
onError: (error) => {
|
|
19
|
-
console.error(error);
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
const getJSONData = (req) => {
|
|
23
|
-
const body = [];
|
|
24
|
-
return new Promise((resolve) => {
|
|
25
|
-
req
|
|
26
|
-
.on('data', (chunk) => {
|
|
27
|
-
body.push(chunk);
|
|
28
|
-
})
|
|
29
|
-
.on('end', () => {
|
|
30
|
-
resolve(Buffer.concat(body).toString());
|
|
31
|
-
})
|
|
32
|
-
.on('error', (error) => {
|
|
33
|
-
// eslint-disable-next-line no-console
|
|
34
|
-
console.log(error);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
const $sanitizeNode = (node) => {
|
|
39
|
-
if ($isMarkNode(node)) {
|
|
40
|
-
$unwrapMarkNode(node);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if ($isElementNode(node)) {
|
|
44
|
-
const children = node.getChildren();
|
|
45
|
-
for (const child of children) {
|
|
46
|
-
$sanitizeNode(child);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const validateEditorState = async (stringifiedJSON) => {
|
|
51
|
-
if (stringifiedEditorStateJSON === stringifiedJSON) {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
const prevEditorState = editor.getEditorState();
|
|
55
|
-
const nextEditorState = editor.parseEditorState(stringifiedJSON);
|
|
56
|
-
editor.setEditorState(nextEditorState);
|
|
57
|
-
editor.update(() => {
|
|
58
|
-
const root = $getRoot();
|
|
59
|
-
$sanitizeNode(root);
|
|
60
|
-
});
|
|
61
|
-
await Promise.resolve().then();
|
|
62
|
-
const assertion = JSON.stringify(editor.getEditorState().toJSON());
|
|
63
|
-
const success = assertion === stringifiedEditorStateJSON;
|
|
64
|
-
if (success) {
|
|
65
|
-
// eslint-disable-next-line no-console
|
|
66
|
-
console.log('Editor state updated successfully.');
|
|
67
|
-
editor.setEditorState(nextEditorState);
|
|
68
|
-
stringifiedEditorStateJSON = assertion;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// eslint-disable-next-line no-console
|
|
72
|
-
console.log('Editor state was rejected!');
|
|
73
|
-
editor.setEditorState(prevEditorState);
|
|
74
|
-
}
|
|
75
|
-
return success;
|
|
76
|
-
};
|
|
77
|
-
const server = http.createServer(async (req, res) => {
|
|
78
|
-
const pathname = url.parse(req.url).pathname;
|
|
79
|
-
const { method } = req;
|
|
80
|
-
res.setHeader('Content-Type', 'application/json');
|
|
81
|
-
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
82
|
-
res.setHeader('Access-Control-Request-Method', '*');
|
|
83
|
-
res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, POST, GET');
|
|
84
|
-
res.setHeader('Access-Control-Allow-Headers', '*');
|
|
85
|
-
if (method === 'OPTIONS') {
|
|
86
|
-
res.end();
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
if (method === 'POST' && pathname === '/setEditorState') {
|
|
90
|
-
const stringifiedJSON = await getJSONData(req);
|
|
91
|
-
const editorState = editor.parseEditorState(stringifiedJSON);
|
|
92
|
-
editor.setEditorState(editorState);
|
|
93
|
-
stringifiedEditorStateJSON = stringifiedJSON;
|
|
94
|
-
res.statusCode = 200;
|
|
95
|
-
res.end();
|
|
96
|
-
}
|
|
97
|
-
else if (method === 'POST' && pathname === '/validateEditorState') {
|
|
98
|
-
const stringifiedJSON = await getJSONData(req);
|
|
99
|
-
if (await validateEditorState(stringifiedJSON)) {
|
|
100
|
-
res.statusCode = 200;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
res.statusCode = 403;
|
|
104
|
-
}
|
|
105
|
-
res.end();
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
res.statusCode = 404;
|
|
109
|
-
res.end();
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
server.listen(port, hostname, () => {
|
|
113
|
-
// eslint-disable-next-line no-console
|
|
114
|
-
console.log(`Read-only validation server running at http://${hostname}:${port}/`);
|
|
115
|
-
});
|
package/lib/setupEnv.d.ts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: Record<"useYjs" | "disableBeforeInput" | "emptyEditor" | "hasLinkAttributes" | "isAutocomplete" | "isCharLimit" | "isCharLimitUtf8" | "isCodeHighlighted" | "isCodeShiki" | "isCollab" | "isMaxLength" | "isRichText" | "listStrictIndent" | "measureTypingPerf" | "selectionAlwaysOnDisplay" | "shouldAllowHighlightingWithBrackets" | "shouldPreserveNewLinesInMarkdown" | "shouldUseLexicalContextMenu" | "showNestedEditorTreeView" | "showTableOfContents" | "showTreeView" | "tableCellBackgroundColor" | "tableCellMerge" | "tableHorizontalScroll" | "debug", boolean>;
|
|
2
|
-
export default _default;
|
package/lib/setupEnv.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { INITIAL_SETTINGS } from './appSettings';
|
|
6
|
-
// Export a function so this is not tree-shaken,
|
|
7
|
-
// but evaluate it immediately so it executes before
|
|
8
|
-
// lexical computes CAN_USE_BEFORE_INPUT
|
|
9
|
-
export default (() => {
|
|
10
|
-
// override default options with query parameters if any
|
|
11
|
-
const urlSearchParams = new URLSearchParams(window.location.search);
|
|
12
|
-
for (const param of Object.keys(INITIAL_SETTINGS)) {
|
|
13
|
-
if (urlSearchParams.has(param)) {
|
|
14
|
-
try {
|
|
15
|
-
const value = JSON.parse(urlSearchParams.get(param) ?? 'true');
|
|
16
|
-
INITIAL_SETTINGS[param] = Boolean(value);
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
console.warn(`Unable to parse query parameter "${param}"`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (INITIAL_SETTINGS.disableBeforeInput) {
|
|
24
|
-
delete window.InputEvent.prototype.getTargetRanges;
|
|
25
|
-
}
|
|
26
|
-
// @ts-ignore
|
|
27
|
-
window.EXCALIDRAW_ASSET_PATH = process.env.EXCALIDRAW_ASSET_PATH;
|
|
28
|
-
return INITIAL_SETTINGS;
|
|
29
|
-
})();
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import './CommentEditorTheme.css';
|
|
6
|
-
import baseTheme from './PlaygroundEditorTheme';
|
|
7
|
-
const theme = {
|
|
8
|
-
...baseTheme,
|
|
9
|
-
paragraph: 'CommentEditorTheme__paragraph',
|
|
10
|
-
};
|
|
11
|
-
export default theme;
|