@datalayer/lexical-loro 0.1.0 → 0.2.2

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.
Files changed (400) hide show
  1. package/README.md +1 -1
  2. package/package.json +7 -7
  3. package/lib/App.d.ts +0 -2
  4. package/lib/App.js +0 -141
  5. package/lib/Editor.d.ts +0 -2
  6. package/lib/Editor.js +0 -111
  7. package/lib/Settings.d.ts +0 -2
  8. package/lib/Settings.js +0 -57
  9. package/lib/appSettings.d.ts +0 -36
  10. package/lib/appSettings.js +0 -44
  11. package/lib/collab/loro/Bindings.d.ts +0 -41
  12. package/lib/collab/loro/Bindings.js +0 -95
  13. package/lib/collab/loro/Debug.d.ts +0 -33
  14. package/lib/collab/loro/Debug.js +0 -448
  15. package/lib/collab/loro/LexicalCollaborationContext.d.ts +0 -19
  16. package/lib/collab/loro/LexicalCollaborationContext.js +0 -48
  17. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +0 -24
  18. package/lib/collab/loro/LexicalCollaborationPlugin.js +0 -83
  19. package/lib/collab/loro/State.d.ts +0 -53
  20. package/lib/collab/loro/State.js +0 -90
  21. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +0 -13
  22. package/lib/collab/loro/components/LoroCollaborationUI.js +0 -9
  23. package/lib/collab/loro/components/LoroCollaborators.d.ts +0 -8
  24. package/lib/collab/loro/components/LoroCollaborators.js +0 -97
  25. package/lib/collab/loro/components/index.d.ts +0 -2
  26. package/lib/collab/loro/components/index.js +0 -2
  27. package/lib/collab/loro/index.d.ts +0 -6
  28. package/lib/collab/loro/index.js +0 -6
  29. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +0 -14
  30. package/lib/collab/loro/integrators/BaseIntegrator.js +0 -1
  31. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +0 -23
  32. package/lib/collab/loro/integrators/CounterIntegrator.js +0 -40
  33. package/lib/collab/loro/integrators/ListIntegrator.d.ts +0 -23
  34. package/lib/collab/loro/integrators/ListIntegrator.js +0 -49
  35. package/lib/collab/loro/integrators/MapIntegrator.d.ts +0 -24
  36. package/lib/collab/loro/integrators/MapIntegrator.js +0 -177
  37. package/lib/collab/loro/integrators/TextIntegrator.d.ts +0 -25
  38. package/lib/collab/loro/integrators/TextIntegrator.js +0 -51
  39. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +0 -25
  40. package/lib/collab/loro/integrators/TreeIntegrator.js +0 -201
  41. package/lib/collab/loro/nodes/NodeFactory.d.ts +0 -8
  42. package/lib/collab/loro/nodes/NodeFactory.js +0 -105
  43. package/lib/collab/loro/nodes/NodesMapper.d.ts +0 -111
  44. package/lib/collab/loro/nodes/NodesMapper.js +0 -258
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +0 -60
  46. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +0 -302
  47. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +0 -62
  48. package/lib/collab/loro/propagators/ElementNodePropagator.js +0 -335
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +0 -57
  50. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +0 -196
  51. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +0 -55
  52. package/lib/collab/loro/propagators/RootNodePropagator.js +0 -168
  53. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +0 -60
  54. package/lib/collab/loro/propagators/TextNodePropagator.js +0 -434
  55. package/lib/collab/loro/propagators/index.d.ts +0 -49
  56. package/lib/collab/loro/propagators/index.js +0 -32
  57. package/lib/collab/loro/provider/websocket.d.ts +0 -116
  58. package/lib/collab/loro/provider/websocket.js +0 -907
  59. package/lib/collab/loro/servers/index.d.ts +0 -0
  60. package/lib/collab/loro/servers/index.js +0 -0
  61. package/lib/collab/loro/servers/ws/callback.d.ts +0 -5
  62. package/lib/collab/loro/servers/ws/callback.js +0 -85
  63. package/lib/collab/loro/servers/ws/server.d.ts +0 -2
  64. package/lib/collab/loro/servers/ws/server.js +0 -25
  65. package/lib/collab/loro/servers/ws/utils.d.ts +0 -40
  66. package/lib/collab/loro/servers/ws/utils.js +0 -513
  67. package/lib/collab/loro/sync/SyncCursors.d.ts +0 -32
  68. package/lib/collab/loro/sync/SyncCursors.js +0 -435
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +0 -4
  70. package/lib/collab/loro/sync/SyncLexicalToLoro.js +0 -80
  71. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +0 -5
  72. package/lib/collab/loro/sync/SyncLoroToLexical.js +0 -96
  73. package/lib/collab/loro/types/LexicalNodeData.d.ts +0 -32
  74. package/lib/collab/loro/types/LexicalNodeData.js +0 -71
  75. package/lib/collab/loro/useCollaboration.d.ts +0 -12
  76. package/lib/collab/loro/useCollaboration.js +0 -248
  77. package/lib/collab/loro/utils/InitialContent.d.ts +0 -64
  78. package/lib/collab/loro/utils/InitialContent.js +0 -109
  79. package/lib/collab/loro/utils/LexicalToLoro.d.ts +0 -18
  80. package/lib/collab/loro/utils/LexicalToLoro.js +0 -96
  81. package/lib/collab/loro/utils/Utils.d.ts +0 -44
  82. package/lib/collab/loro/utils/Utils.js +0 -153
  83. package/lib/collab/loro/wsProvider.d.ts +0 -8
  84. package/lib/collab/loro/wsProvider.js +0 -31
  85. package/lib/collab/utils/invariant.d.ts +0 -1
  86. package/lib/collab/utils/invariant.js +0 -11
  87. package/lib/collab/utils/simpleDiffWithCursor.d.ts +0 -5
  88. package/lib/collab/utils/simpleDiffWithCursor.js +0 -31
  89. package/lib/collab/yjs/Bindings.d.ts +0 -23
  90. package/lib/collab/yjs/Bindings.js +0 -26
  91. package/lib/collab/yjs/Debug.d.ts +0 -23
  92. package/lib/collab/yjs/Debug.js +0 -213
  93. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +0 -10
  94. package/lib/collab/yjs/LexicalCollaborationContext.js +0 -37
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +0 -21
  96. package/lib/collab/yjs/LexicalCollaborationPlugin.js +0 -63
  97. package/lib/collab/yjs/State.d.ts +0 -51
  98. package/lib/collab/yjs/State.js +0 -35
  99. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +0 -5
  100. package/lib/collab/yjs/nodes/AnyCollabNode.js +0 -1
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +0 -22
  102. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +0 -64
  103. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +0 -40
  104. package/lib/collab/yjs/nodes/CollabElementNode.js +0 -462
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +0 -19
  106. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +0 -44
  107. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +0 -25
  108. package/lib/collab/yjs/nodes/CollabTextNode.js +0 -103
  109. package/lib/collab/yjs/provider/websocket.d.ts +0 -88
  110. package/lib/collab/yjs/provider/websocket.js +0 -415
  111. package/lib/collab/yjs/servers/index.d.ts +0 -0
  112. package/lib/collab/yjs/servers/index.js +0 -0
  113. package/lib/collab/yjs/servers/ws/callback.d.ts +0 -5
  114. package/lib/collab/yjs/servers/ws/callback.js +0 -72
  115. package/lib/collab/yjs/servers/ws/server.d.ts +0 -2
  116. package/lib/collab/yjs/servers/ws/server.js +0 -25
  117. package/lib/collab/yjs/servers/ws/utils.d.ts +0 -49
  118. package/lib/collab/yjs/servers/ws/utils.js +0 -284
  119. package/lib/collab/yjs/sync/SyncCursors.d.ts +0 -39
  120. package/lib/collab/yjs/sync/SyncCursors.js +0 -351
  121. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +0 -10
  122. package/lib/collab/yjs/sync/SyncEditorStates.js +0 -200
  123. package/lib/collab/yjs/useCollaboration.d.ts +0 -12
  124. package/lib/collab/yjs/useCollaboration.js +0 -255
  125. package/lib/collab/yjs/utils/Utils.d.ts +0 -25
  126. package/lib/collab/yjs/utils/Utils.js +0 -402
  127. package/lib/collab/yjs/wsProvider.d.ts +0 -3
  128. package/lib/collab/yjs/wsProvider.js +0 -21
  129. package/lib/commenting/index.d.ts +0 -41
  130. package/lib/commenting/index.js +0 -324
  131. package/lib/context/FlashMessageContext.d.ts +0 -7
  132. package/lib/context/FlashMessageContext.js +0 -24
  133. package/lib/context/SettingsContext.d.ts +0 -12
  134. package/lib/context/SettingsContext.js +0 -38
  135. package/lib/context/SharedHistoryContext.d.ts +0 -11
  136. package/lib/context/SharedHistoryContext.js +0 -11
  137. package/lib/context/ToolbarContext.d.ts +0 -65
  138. package/lib/context/ToolbarContext.js +0 -84
  139. package/lib/demo.d.ts +0 -12
  140. package/lib/demo.js +0 -41
  141. package/lib/hooks/useFlashMessage.d.ts +0 -2
  142. package/lib/hooks/useFlashMessage.js +0 -4
  143. package/lib/hooks/useModal.d.ts +0 -5
  144. package/lib/hooks/useModal.js +0 -26
  145. package/lib/hooks/useReport.d.ts +0 -1
  146. package/lib/hooks/useReport.js +0 -46
  147. package/lib/index.d.ts +0 -1
  148. package/lib/index.js +0 -1
  149. package/lib/nodes/AutocompleteNode.d.ts +0 -27
  150. package/lib/nodes/AutocompleteNode.js +0 -56
  151. package/lib/nodes/CounterComponent.d.ts +0 -6
  152. package/lib/nodes/CounterComponent.js +0 -137
  153. package/lib/nodes/CounterNode.d.ts +0 -23
  154. package/lib/nodes/CounterNode.js +0 -47
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +0 -8
  156. package/lib/nodes/DateTimeNode/DateTimeComponent.js +0 -119
  157. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +0 -27
  158. package/lib/nodes/DateTimeNode/DateTimeNode.js +0 -82
  159. package/lib/nodes/EmojiNode.d.ts +0 -18
  160. package/lib/nodes/EmojiNode.js +0 -50
  161. package/lib/nodes/EquationComponent.d.ts +0 -9
  162. package/lib/nodes/EquationComponent.js +0 -75
  163. package/lib/nodes/EquationNode.d.ts +0 -26
  164. package/lib/nodes/EquationNode.js +0 -109
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +0 -8
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +0 -110
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +0 -50
  168. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +0 -55
  169. package/lib/nodes/ExcalidrawNode/index.d.ts +0 -32
  170. package/lib/nodes/ExcalidrawNode/index.js +0 -117
  171. package/lib/nodes/FigmaNode.d.ts +0 -20
  172. package/lib/nodes/FigmaNode.js +0 -52
  173. package/lib/nodes/ImageComponent.d.ts +0 -16
  174. package/lib/nodes/ImageComponent.js +0 -272
  175. package/lib/nodes/ImageNode.d.ts +0 -50
  176. package/lib/nodes/ImageNode.js +0 -151
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +0 -26
  178. package/lib/nodes/InlineImageNode/InlineImageComponent.js +0 -161
  179. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +0 -59
  180. package/lib/nodes/InlineImageNode/InlineImageNode.js +0 -162
  181. package/lib/nodes/KeywordNode.d.ts +0 -14
  182. package/lib/nodes/KeywordNode.js +0 -33
  183. package/lib/nodes/LayoutContainerNode.d.ts +0 -24
  184. package/lib/nodes/LayoutContainerNode.js +0 -91
  185. package/lib/nodes/LayoutItemNode.d.ts +0 -16
  186. package/lib/nodes/LayoutItemNode.js +0 -65
  187. package/lib/nodes/MentionNode.d.ts +0 -20
  188. package/lib/nodes/MentionNode.js +0 -81
  189. package/lib/nodes/PageBreakNode/index.d.ts +0 -17
  190. package/lib/nodes/PageBreakNode/index.js +0 -83
  191. package/lib/nodes/PlaygroundNodes.d.ts +0 -3
  192. package/lib/nodes/PlaygroundNodes.js +0 -71
  193. package/lib/nodes/PollComponent.d.ts +0 -9
  194. package/lib/nodes/PollComponent.js +0 -85
  195. package/lib/nodes/PollNode.d.ts +0 -43
  196. package/lib/nodes/PollNode.js +0 -153
  197. package/lib/nodes/SpecialTextNode.d.ts +0 -24
  198. package/lib/nodes/SpecialTextNode.js +0 -50
  199. package/lib/nodes/StickyComponent.d.ts +0 -10
  200. package/lib/nodes/StickyComponent.js +0 -162
  201. package/lib/nodes/StickyNode.d.ts +0 -31
  202. package/lib/nodes/StickyNode.js +0 -76
  203. package/lib/nodes/TweetNode.d.ts +0 -21
  204. package/lib/nodes/TweetNode.js +0 -119
  205. package/lib/nodes/YouTubeNode.d.ts +0 -22
  206. package/lib/nodes/YouTubeNode.js +0 -84
  207. package/lib/plugins/ActionsPlugin/index.d.ts +0 -5
  208. package/lib/plugins/ActionsPlugin/index.js +0 -168
  209. package/lib/plugins/AutoEmbedPlugin/index.d.ts +0 -19
  210. package/lib/plugins/AutoEmbedPlugin/index.js +0 -158
  211. package/lib/plugins/AutoLinkPlugin/index.d.ts +0 -2
  212. package/lib/plugins/AutoLinkPlugin/index.js +0 -15
  213. package/lib/plugins/AutocompletePlugin/index.d.ts +0 -10
  214. package/lib/plugins/AutocompletePlugin/index.js +0 -2473
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -7
  216. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -42
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -17
  218. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -111
  219. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +0 -5
  220. package/lib/plugins/CodeActionMenuPlugin/index.js +0 -104
  221. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  222. package/lib/plugins/CodeActionMenuPlugin/utils.js +0 -18
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +0 -2
  224. package/lib/plugins/CodeHighlightPrismPlugin/index.js +0 -10
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +0 -2
  226. package/lib/plugins/CodeHighlightShikiPlugin/index.js +0 -10
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +0 -25
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +0 -131
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +0 -16
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +0 -79
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +0 -16
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +0 -81
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +0 -2
  234. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +0 -8
  235. package/lib/plugins/CollapsiblePlugin/index.d.ts +0 -3
  236. package/lib/plugins/CollapsiblePlugin/index.js +0 -128
  237. package/lib/plugins/CommentPlugin/index.d.ts +0 -9
  238. package/lib/plugins/CommentPlugin/index.js +0 -460
  239. package/lib/plugins/ComponentPickerPlugin/index.d.ts +0 -2
  240. package/lib/plugins/ComponentPickerPlugin/index.js +0 -276
  241. package/lib/plugins/ContextMenuPlugin/index.d.ts +0 -2
  242. package/lib/plugins/ContextMenuPlugin/index.js +0 -112
  243. package/lib/plugins/CounterPlugin/index.d.ts +0 -3
  244. package/lib/plugins/CounterPlugin/index.js +0 -20
  245. package/lib/plugins/DatalayerPlugin/index.d.ts +0 -2
  246. package/lib/plugins/DatalayerPlugin/index.js +0 -218
  247. package/lib/plugins/DateTimePlugin/index.d.ts +0 -8
  248. package/lib/plugins/DateTimePlugin/index.js +0 -24
  249. package/lib/plugins/DocsPlugin/index.d.ts +0 -2
  250. package/lib/plugins/DocsPlugin/index.js +0 -4
  251. package/lib/plugins/DragDropPastePlugin/index.d.ts +0 -1
  252. package/lib/plugins/DragDropPastePlugin/index.js +0 -33
  253. package/lib/plugins/DraggableBlockPlugin/index.d.ts +0 -12
  254. package/lib/plugins/DraggableBlockPlugin/index.js +0 -36
  255. package/lib/plugins/EmojiPickerPlugin/index.d.ts +0 -1
  256. package/lib/plugins/EmojiPickerPlugin/index.js +0 -80
  257. package/lib/plugins/EmojisPlugin/index.d.ts +0 -2
  258. package/lib/plugins/EmojisPlugin/index.js +0 -52
  259. package/lib/plugins/EquationsPlugin/index.d.ts +0 -14
  260. package/lib/plugins/EquationsPlugin/index.js +0 -34
  261. package/lib/plugins/ExcalidrawPlugin/index.d.ts +0 -5
  262. package/lib/plugins/ExcalidrawPlugin/index.js +0 -44
  263. package/lib/plugins/FigmaPlugin/index.d.ts +0 -4
  264. package/lib/plugins/FigmaPlugin/index.js +0 -20
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -15
  266. package/lib/plugins/FloatingLinkEditorPlugin/index.js +0 -280
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -7
  268. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +0 -219
  269. package/lib/plugins/ImagesPlugin/index.d.ts +0 -24
  270. package/lib/plugins/ImagesPlugin/index.js +0 -195
  271. package/lib/plugins/InlineImagePlugin/index.d.ts +0 -17
  272. package/lib/plugins/InlineImagePlugin/index.js +0 -180
  273. package/lib/plugins/KeywordsPlugin/index.d.ts +0 -2
  274. package/lib/plugins/KeywordsPlugin/index.js +0 -31
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +0 -6
  276. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +0 -21
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +0 -7
  278. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +0 -131
  279. package/lib/plugins/LinkPlugin/index.d.ts +0 -6
  280. package/lib/plugins/LinkPlugin/index.js +0 -11
  281. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +0 -2
  282. package/lib/plugins/MarkdownShortcutPlugin/index.js +0 -6
  283. package/lib/plugins/MarkdownTransformers/index.d.ts +0 -8
  284. package/lib/plugins/MarkdownTransformers/index.js +0 -234
  285. package/lib/plugins/MaxLengthPlugin/index.d.ts +0 -3
  286. package/lib/plugins/MaxLengthPlugin/index.js +0 -37
  287. package/lib/plugins/MentionsPlugin/index.d.ts +0 -2
  288. package/lib/plugins/MentionsPlugin/index.js +0 -564
  289. package/lib/plugins/PageBreakPlugin/index.d.ts +0 -4
  290. package/lib/plugins/PageBreakPlugin/index.js +0 -27
  291. package/lib/plugins/PasteLogPlugin/index.d.ts +0 -2
  292. package/lib/plugins/PasteLogPlugin/index.js +0 -27
  293. package/lib/plugins/PollPlugin/index.d.ts +0 -8
  294. package/lib/plugins/PollPlugin/index.js +0 -38
  295. package/lib/plugins/ShortcutsPlugin/index.d.ts +0 -6
  296. package/lib/plugins/ShortcutsPlugin/index.js +0 -112
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +0 -59
  298. package/lib/plugins/ShortcutsPlugin/shortcuts.js +0 -169
  299. package/lib/plugins/SpecialTextPlugin/index.d.ts +0 -2
  300. package/lib/plugins/SpecialTextPlugin/index.js +0 -46
  301. package/lib/plugins/SpeechToTextPlugin/index.d.ts +0 -5
  302. package/lib/plugins/SpeechToTextPlugin/index.js +0 -82
  303. package/lib/plugins/StickyPlugin/index.d.ts +0 -2
  304. package/lib/plugins/StickyPlugin/index.js +0 -12
  305. package/lib/plugins/TabFocusPlugin/index.d.ts +0 -1
  306. package/lib/plugins/TabFocusPlugin/index.js +0 -34
  307. package/lib/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  308. package/lib/plugins/TableActionMenuPlugin/index.js +0 -492
  309. package/lib/plugins/TableCellResizer/index.d.ts +0 -3
  310. package/lib/plugins/TableCellResizer/index.js +0 -297
  311. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +0 -4
  312. package/lib/plugins/TableHoverActionsPlugin/index.js +0 -188
  313. package/lib/plugins/TableOfContentsPlugin/index.d.ts +0 -2
  314. package/lib/plugins/TableOfContentsPlugin/index.js +0 -116
  315. package/lib/plugins/TablePlugin.d.ts +0 -31
  316. package/lib/plugins/TablePlugin.js +0 -63
  317. package/lib/plugins/TestRecorderPlugin/index.d.ts +0 -3
  318. package/lib/plugins/TestRecorderPlugin/index.js +0 -346
  319. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +0 -9
  320. package/lib/plugins/ToolbarPlugin/fontSize.js +0 -80
  321. package/lib/plugins/ToolbarPlugin/index.d.ts +0 -9
  322. package/lib/plugins/ToolbarPlugin/index.js +0 -500
  323. package/lib/plugins/ToolbarPlugin/utils.d.ts +0 -26
  324. package/lib/plugins/ToolbarPlugin/utils.js +0 -243
  325. package/lib/plugins/TreeViewPlugin/index.d.ts +0 -2
  326. package/lib/plugins/TreeViewPlugin/index.js +0 -7
  327. package/lib/plugins/TwitterPlugin/index.d.ts +0 -4
  328. package/lib/plugins/TwitterPlugin/index.js +0 -20
  329. package/lib/plugins/TypingPerfPlugin/index.d.ts +0 -2
  330. package/lib/plugins/TypingPerfPlugin/index.js +0 -93
  331. package/lib/plugins/YouTubePlugin/index.d.ts +0 -4
  332. package/lib/plugins/YouTubePlugin/index.js +0 -20
  333. package/lib/server/validation.d.ts +0 -1
  334. package/lib/server/validation.js +0 -111
  335. package/lib/setupEnv.d.ts +0 -2
  336. package/lib/setupEnv.js +0 -25
  337. package/lib/themes/CommentEditorTheme.d.ts +0 -4
  338. package/lib/themes/CommentEditorTheme.js +0 -7
  339. package/lib/themes/PlaygroundEditorTheme.d.ts +0 -4
  340. package/lib/themes/PlaygroundEditorTheme.js +0 -120
  341. package/lib/themes/StickyEditorTheme.d.ts +0 -4
  342. package/lib/themes/StickyEditorTheme.js +0 -7
  343. package/lib/tyes.dt.d.ts +0 -12
  344. package/lib/tyes.dt.js +0 -0
  345. package/lib/ui/Button.d.ts +0 -12
  346. package/lib/ui/Button.js +0 -6
  347. package/lib/ui/ColorPicker.d.ts +0 -14
  348. package/lib/ui/ColorPicker.js +0 -219
  349. package/lib/ui/ContentEditable.d.ts +0 -9
  350. package/lib/ui/ContentEditable.js +0 -6
  351. package/lib/ui/Dialog.d.ts +0 -10
  352. package/lib/ui/Dialog.js +0 -8
  353. package/lib/ui/DropDown.d.ts +0 -18
  354. package/lib/ui/DropDown.js +0 -133
  355. package/lib/ui/DropdownColorPicker.d.ts +0 -13
  356. package/lib/ui/DropdownColorPicker.js +0 -6
  357. package/lib/ui/EquationEditor.d.ts +0 -8
  358. package/lib/ui/EquationEditor.js +0 -11
  359. package/lib/ui/ExcalidrawModal.d.ts +0 -42
  360. package/lib/ui/ExcalidrawModal.js +0 -103
  361. package/lib/ui/FileInput.d.ts +0 -10
  362. package/lib/ui/FileInput.js +0 -5
  363. package/lib/ui/FlashMessage.d.ts +0 -7
  364. package/lib/ui/FlashMessage.js +0 -6
  365. package/lib/ui/ImageResizer.d.ts +0 -17
  366. package/lib/ui/ImageResizer.js +0 -171
  367. package/lib/ui/KatexEquationAlterer.d.ts +0 -8
  368. package/lib/ui/KatexEquationAlterer.js +0 -23
  369. package/lib/ui/KatexRenderer.d.ts +0 -6
  370. package/lib/ui/KatexRenderer.js +0 -24
  371. package/lib/ui/Modal.d.ts +0 -9
  372. package/lib/ui/Modal.js +0 -48
  373. package/lib/ui/Select.d.ts +0 -8
  374. package/lib/ui/Select.js +0 -5
  375. package/lib/ui/Switch.d.ts +0 -8
  376. package/lib/ui/Switch.js +0 -6
  377. package/lib/ui/TextInput.d.ts +0 -13
  378. package/lib/ui/TextInput.js +0 -7
  379. package/lib/utils/docSerialization.d.ts +0 -3
  380. package/lib/utils/docSerialization.js +0 -56
  381. package/lib/utils/emoji-list.d.ts +0 -20
  382. package/lib/utils/emoji-list.js +0 -16605
  383. package/lib/utils/getDOMRangeRect.d.ts +0 -8
  384. package/lib/utils/getDOMRangeRect.js +0 -22
  385. package/lib/utils/getSelectedNode.d.ts +0 -2
  386. package/lib/utils/getSelectedNode.js +0 -24
  387. package/lib/utils/getThemeSelector.d.ts +0 -2
  388. package/lib/utils/getThemeSelector.js +0 -10
  389. package/lib/utils/isMobileWidth.d.ts +0 -7
  390. package/lib/utils/isMobileWidth.js +0 -7
  391. package/lib/utils/joinClasses.d.ts +0 -1
  392. package/lib/utils/joinClasses.js +0 -3
  393. package/lib/utils/setFloatingElemPosition.d.ts +0 -1
  394. package/lib/utils/setFloatingElemPosition.js +0 -55
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -1
  396. package/lib/utils/setFloatingElemPositionForLinkEditor.js +0 -32
  397. package/lib/utils/swipe.d.ts +0 -4
  398. package/lib/utils/swipe.js +0 -90
  399. package/lib/utils/url.d.ts +0 -2
  400. package/lib/utils/url.js +0 -27
@@ -1,32 +0,0 @@
1
- import { LexicalNode } from 'lexical';
2
- /**
3
- * Data structure stored in Loro tree node data
4
- */
5
- export interface LexicalNodeData {
6
- lexicalNode: LexicalNode;
7
- }
8
- /**
9
- * Helper functions for working with LexicalNodeData
10
- */
11
- export declare class LexicalNodeDataHelper {
12
- /**
13
- * Create LexicalNodeData from a Lexical node
14
- */
15
- static create(lexicalNode: LexicalNode): LexicalNodeData;
16
- /**
17
- * Serialize LexicalNodeData for storage in Loro
18
- */
19
- static serialize(data: LexicalNodeData): string;
20
- /**
21
- * Deserialize LexicalNodeData from Loro storage
22
- */
23
- static deserialize(serialized: string): LexicalNodeData | null;
24
- /**
25
- * Extract the LexicalNode from LexicalNodeData
26
- */
27
- static getLexicalNode(data: LexicalNodeData): LexicalNode;
28
- /**
29
- * Get node type from LexicalNodeData
30
- */
31
- static getNodeType(data: LexicalNodeData): string;
32
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Helper functions for working with LexicalNodeData
3
- */
4
- export class LexicalNodeDataHelper {
5
- /**
6
- * Create LexicalNodeData from a Lexical node
7
- */
8
- static create(lexicalNode) {
9
- return {
10
- lexicalNode
11
- };
12
- }
13
- /**
14
- * Serialize LexicalNodeData for storage in Loro
15
- */
16
- static serialize(data) {
17
- try {
18
- return JSON.stringify({
19
- lexicalNode: data.lexicalNode.exportJSON()
20
- });
21
- }
22
- catch (error) {
23
- console.warn('Failed to serialize LexicalNodeData:', error);
24
- return JSON.stringify({
25
- lexicalNode: {
26
- type: data.lexicalNode.getType(),
27
- key: data.lexicalNode.getKey()
28
- }
29
- });
30
- }
31
- }
32
- /**
33
- * Deserialize LexicalNodeData from Loro storage
34
- */
35
- static deserialize(serialized) {
36
- try {
37
- const parsed = JSON.parse(serialized);
38
- // Validate that we have the expected structure
39
- if (!parsed || !parsed.lexicalNode) {
40
- console.warn('Invalid LexicalNodeData structure:', parsed);
41
- return null;
42
- }
43
- return {
44
- lexicalNode: parsed.lexicalNode
45
- };
46
- }
47
- catch (error) {
48
- console.warn('Failed to deserialize LexicalNodeData:', error);
49
- return null;
50
- }
51
- }
52
- /**
53
- * Extract the LexicalNode from LexicalNodeData
54
- */
55
- static getLexicalNode(data) {
56
- return data.lexicalNode;
57
- }
58
- /**
59
- * Get node type from LexicalNodeData
60
- */
61
- static getNodeType(data) {
62
- // Handle both actual Lexical nodes (with getType method) and deserialized JSON objects
63
- if (typeof data.lexicalNode.getType === 'function') {
64
- return data.lexicalNode.getType();
65
- }
66
- else {
67
- // Fallback to direct property access for deserialized JSON
68
- return data.lexicalNode.__type || 'unknown';
69
- }
70
- }
71
- }
@@ -1,12 +0,0 @@
1
- import * as React from 'react';
2
- import type { JSX } from 'react';
3
- import type { LexicalEditor } from 'lexical';
4
- import { InitialEditorStateType } from '@lexical/react/LexicalComposer';
5
- import { LoroDoc } from 'loro-crdt';
6
- import type { Provider } from './State';
7
- import { Binding } from './Bindings';
8
- import { SyncCursorPositionsFn } from './sync/SyncCursors';
9
- export type CursorsContainerRef = React.MutableRefObject<HTMLElement | null>;
10
- export declare function useCollaboration(editor: LexicalEditor, id: string, provider: Provider, docMap: Map<string, LoroDoc>, name: string, color: string, shouldBootstrap: boolean, binding: Binding, setDoc: React.Dispatch<React.SetStateAction<LoroDoc | undefined>>, cursorsContainerRef?: CursorsContainerRef, initialEditorState?: InitialEditorStateType, awarenessData?: object, syncCursorPositionsFn?: SyncCursorPositionsFn, onInitialization?: (isInitialized: boolean) => void): JSX.Element;
11
- export declare function useFocusTracking(editor: LexicalEditor, provider: Provider, name: string, color: string, awarenessData?: object): void;
12
- export declare function useHistory(editor: LexicalEditor, binding: Binding): () => void;
@@ -1,248 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import * as React from 'react';
3
- import { useCallback, useEffect, useMemo, useRef } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { mergeRegister } from '@lexical/utils';
6
- import { $getRoot, BLUR_COMMAND, CAN_REDO_COMMAND, CAN_UNDO_COMMAND, COMMAND_PRIORITY_EDITOR, FOCUS_COMMAND, HISTORY_MERGE_TAG, REDO_COMMAND, SKIP_COLLAB_TAG, UNDO_COMMAND, } from 'lexical';
7
- import { CONNECTED_COMMAND, createUndoManager, initLocalState, setLocalStateFocus, TOGGLE_CONNECT_COMMAND, } from './State';
8
- import { syncLexicalToLoro } from './sync/SyncLexicalToLoro';
9
- import { syncLoroToLexical } from './sync/SyncLoroToLexical';
10
- import { syncCursorPositions } from './sync/SyncCursors';
11
- export function useCollaboration(editor, id, provider, docMap, name, color, shouldBootstrap, binding, setDoc, cursorsContainerRef, initialEditorState, awarenessData, syncCursorPositionsFn = syncCursorPositions, onInitialization) {
12
- const isReloadingDoc = useRef(false);
13
- const connect = useCallback(() => provider.connect(), [provider]);
14
- const disconnect = useCallback(() => {
15
- try {
16
- provider.disconnect();
17
- }
18
- catch (e) {
19
- // Do nothing
20
- }
21
- }, [provider]);
22
- useEffect(() => {
23
- const { awareness } = provider;
24
- const onStatus = ({ status }) => {
25
- editor.dispatchCommand(CONNECTED_COMMAND, status === 'connected');
26
- };
27
- const onSync = (isSynced) => {
28
- if (shouldBootstrap &&
29
- isSynced &&
30
- isReloadingDoc.current === false) {
31
- initializeEditor(editor, initialEditorState);
32
- // Call the initialization callback after initializing the editor
33
- if (onInitialization) {
34
- console.log('🎉 Editor initialized after sync, calling onInitialization callback');
35
- onInitialization(true);
36
- }
37
- }
38
- isReloadingDoc.current = false;
39
- };
40
- const onAwarenessUpdate = () => {
41
- syncCursorPositionsFn(binding, provider);
42
- };
43
- initLocalState(provider, name, color, document.activeElement === editor.getRootElement(), awarenessData || {});
44
- const onProviderDocReload = (doc) => {
45
- clearEditorSkipCollab(editor, binding);
46
- setDoc(doc);
47
- docMap.set(id, doc);
48
- isReloadingDoc.current = true;
49
- };
50
- provider.on('reload', onProviderDocReload);
51
- provider.on('status', onStatus);
52
- provider.on('sync', onSync);
53
- awareness.on('update', onAwarenessUpdate);
54
- const onLoroUpdates = (eventBatch) => {
55
- // Only skip if the origin is from this specific editor's changes.
56
- // We set 'lexical-edit' as origin when making changes from this editor.
57
- // So we should skip only if the origin is 'lexical-edit' (our own changes).
58
- if (eventBatch.origin !== binding.doc.peerIdStr) {
59
- // Check if this change is from the undo manager
60
- // const isFromUndoManger = origin instanceof UndoManager;
61
- const isFromUndoManager = false;
62
- syncLoroToLexical(binding, provider, eventBatch, isFromUndoManager, syncCursorPositionsFn);
63
- }
64
- };
65
- // This updates the local editor state when we receive updates from other clients.
66
- const unsubscribe = binding.doc.subscribe(onLoroUpdates);
67
- const removeListener = editor.registerUpdateListener((update) => {
68
- if (update.tags.has(SKIP_COLLAB_TAG) === false) {
69
- syncLexicalToLoro(binding, provider, update);
70
- }
71
- });
72
- const connectionPromise = connect();
73
- return () => {
74
- if (isReloadingDoc.current === false) {
75
- if (connectionPromise) {
76
- connectionPromise.then(disconnect);
77
- }
78
- else {
79
- // Workaround for race condition in StrictMode. It's possible there
80
- // is a different race for the above case where connect returns a
81
- // promise, but we don't have an example of that in-repo.
82
- // It's possible that there is a similar issue with
83
- // TOGGLE_CONNECT_COMMAND below when the provider connect returns a
84
- // promise.
85
- // https://github.com/facebook/lexical/issues/6640
86
- disconnect();
87
- }
88
- }
89
- provider.off('sync', onSync);
90
- provider.off('status', onStatus);
91
- provider.off('reload', onProviderDocReload);
92
- awareness.off('update', onAwarenessUpdate);
93
- // Unsubscribe from Loro document changes
94
- unsubscribe?.();
95
- docMap.delete(id);
96
- removeListener();
97
- };
98
- }, [
99
- binding,
100
- color,
101
- connect,
102
- disconnect,
103
- docMap,
104
- editor,
105
- id,
106
- initialEditorState,
107
- name,
108
- provider,
109
- shouldBootstrap,
110
- awarenessData,
111
- setDoc,
112
- syncCursorPositionsFn,
113
- onInitialization,
114
- ]);
115
- const cursorsContainer = useMemo(() => {
116
- const ref = (element) => {
117
- binding.cursorsContainer = element;
118
- };
119
- return createPortal(_jsx("div", { ref: ref }), (cursorsContainerRef && cursorsContainerRef.current) || document.body);
120
- }, [binding, cursorsContainerRef]);
121
- useEffect(() => {
122
- return editor.registerCommand(TOGGLE_CONNECT_COMMAND, (payload) => {
123
- const shouldConnect = payload;
124
- if (shouldConnect) {
125
- connect();
126
- }
127
- else {
128
- disconnect();
129
- }
130
- return true;
131
- }, COMMAND_PRIORITY_EDITOR);
132
- }, [connect, disconnect, editor]);
133
- return cursorsContainer;
134
- }
135
- export function useFocusTracking(editor, provider, name, color, awarenessData) {
136
- useEffect(() => {
137
- return mergeRegister(editor.registerCommand(FOCUS_COMMAND, () => {
138
- setLocalStateFocus(provider, name, color, true, awarenessData || {});
139
- return false;
140
- }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(BLUR_COMMAND, () => {
141
- setLocalStateFocus(provider, name, color, false, awarenessData || {});
142
- return false;
143
- }, COMMAND_PRIORITY_EDITOR));
144
- }, [color, editor, name, provider, awarenessData]);
145
- }
146
- export function useHistory(editor, binding) {
147
- const undoManager = useMemo(() => createUndoManager(binding), [binding]);
148
- useEffect(() => {
149
- const undo = () => {
150
- undoManager.undo();
151
- };
152
- const redo = () => {
153
- undoManager.redo();
154
- };
155
- return mergeRegister(editor.registerCommand(UNDO_COMMAND, () => {
156
- undo();
157
- return true;
158
- }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(REDO_COMMAND, () => {
159
- redo();
160
- return true;
161
- }, COMMAND_PRIORITY_EDITOR));
162
- });
163
- const clearHistory = useCallback(() => {
164
- undoManager.clear();
165
- }, [undoManager]);
166
- // Exposing undo and redo states
167
- React.useEffect(() => {
168
- const updateUndoRedoStates = () => {
169
- editor.dispatchCommand(CAN_UNDO_COMMAND, undoManager.canUndo());
170
- editor.dispatchCommand(CAN_REDO_COMMAND, undoManager.canRedo());
171
- };
172
- // Initial state update
173
- updateUndoRedoStates();
174
- // Loro UndoManager doesn't have event listeners like YJS
175
- // We would need to check state periodically or after operations
176
- // For now, update after each operation
177
- return () => {
178
- // No cleanup needed for Loro UndoManager events
179
- };
180
- }, [editor, undoManager]);
181
- return clearHistory;
182
- }
183
- function initializeEditor(editor, initialEditorState) {
184
- editor.update(() => {
185
- const root = $getRoot();
186
- if (root.isEmpty()) {
187
- if (initialEditorState) {
188
- switch (typeof initialEditorState) {
189
- case 'string': {
190
- const parsedEditorState = editor.parseEditorState(initialEditorState);
191
- editor.setEditorState(parsedEditorState, {
192
- tag: HISTORY_MERGE_TAG,
193
- });
194
- break;
195
- }
196
- case 'object': {
197
- editor.setEditorState(initialEditorState, {
198
- tag: HISTORY_MERGE_TAG,
199
- });
200
- break;
201
- }
202
- case 'function': {
203
- editor.update(() => {
204
- const root1 = $getRoot();
205
- if (root1.isEmpty()) {
206
- initialEditorState(editor);
207
- }
208
- }, { tag: HISTORY_MERGE_TAG });
209
- break;
210
- }
211
- }
212
- }
213
- }
214
- }, { tag: HISTORY_MERGE_TAG });
215
- }
216
- function clearEditorSkipCollab(editor, binding) {
217
- // reset editor state
218
- editor.update(() => {
219
- const root = $getRoot();
220
- root.clear();
221
- root.select();
222
- }, {
223
- tag: SKIP_COLLAB_TAG,
224
- });
225
- if (binding.cursors == null) {
226
- return;
227
- }
228
- const cursors = binding.cursors;
229
- if (cursors == null) {
230
- return;
231
- }
232
- const cursorsContainer = binding.cursorsContainer;
233
- if (cursorsContainer == null) {
234
- return;
235
- }
236
- // reset cursors in dom
237
- const cursorsArr = Array.from(cursors.values());
238
- for (let i = 0; i < cursorsArr.length; i++) {
239
- const cursor = cursorsArr[i];
240
- const selection = cursor.selection;
241
- if (selection && selection.selections != null) {
242
- const selections = selection.selections;
243
- for (let j = 0; j < selections.length; j++) {
244
- cursorsContainer.removeChild(selections[i]);
245
- }
246
- }
247
- }
248
- }
@@ -1,64 +0,0 @@
1
- import { LoroDoc } from 'loro-crdt';
2
- /**
3
- * Initial Lexical JSON structure that matches what the Python server uses
4
- */
5
- export declare const INITIAL_LEXICAL_JSON: {
6
- root: {
7
- children: ({
8
- children: {
9
- detail: number;
10
- format: number;
11
- mode: string;
12
- style: string;
13
- text: string;
14
- type: string;
15
- version: number;
16
- }[];
17
- direction: any;
18
- format: string;
19
- indent: number;
20
- type: string;
21
- version: number;
22
- tag: string;
23
- textFormat?: undefined;
24
- textStyle?: undefined;
25
- } | {
26
- children: {
27
- detail: number;
28
- format: number;
29
- mode: string;
30
- style: string;
31
- text: string;
32
- type: string;
33
- version: number;
34
- }[];
35
- direction: any;
36
- format: string;
37
- indent: number;
38
- type: string;
39
- version: number;
40
- textFormat: number;
41
- textStyle: string;
42
- tag?: undefined;
43
- })[];
44
- direction: any;
45
- format: string;
46
- indent: number;
47
- type: string;
48
- version: number;
49
- };
50
- };
51
- /**
52
- * Initialize a new Loro document with the initial Lexical content
53
- * This ensures consistent starting state across all clients
54
- */
55
- export declare function initializeLoroDocWithLexicalContent(doc: LoroDoc): void;
56
- /**
57
- * Check if a Loro document is empty (has no tree content)
58
- */
59
- export declare function isLoroDocumentEmpty(doc: LoroDoc): boolean;
60
- /**
61
- * Check if a Loro document should be initialized (more robust check)
62
- * This helps prevent race conditions where multiple clients try to initialize
63
- */
64
- export declare function shouldInitializeLoroDoc(doc: LoroDoc): boolean;
@@ -1,109 +0,0 @@
1
- import { lexicalToLoroTree } from './LexicalToLoro';
2
- /**
3
- * Initial Lexical JSON structure that matches what the Python server uses
4
- */
5
- export const INITIAL_LEXICAL_JSON = {
6
- "root": {
7
- "children": [
8
- {
9
- "children": [
10
- {
11
- "detail": 0,
12
- "format": 0,
13
- "mode": "normal",
14
- "style": "",
15
- "text": "Lexical with Loro",
16
- "type": "text",
17
- "version": 1
18
- }
19
- ],
20
- "direction": null,
21
- "format": "",
22
- "indent": 0,
23
- "type": "heading",
24
- "version": 1,
25
- "tag": "h1"
26
- },
27
- {
28
- "children": [
29
- {
30
- "detail": 0,
31
- "format": 0,
32
- "mode": "normal",
33
- "style": "",
34
- "text": "Type something...",
35
- "type": "text",
36
- "version": 1
37
- }
38
- ],
39
- "direction": null,
40
- "format": "",
41
- "indent": 0,
42
- "type": "paragraph",
43
- "version": 1,
44
- "textFormat": 0,
45
- "textStyle": ""
46
- }
47
- ],
48
- "direction": null,
49
- "format": "",
50
- "indent": 0,
51
- "type": "root",
52
- "version": 1
53
- }
54
- };
55
- /**
56
- * Initialize a new Loro document with the initial Lexical content
57
- * This ensures consistent starting state across all clients
58
- */
59
- export function initializeLoroDocWithLexicalContent(doc) {
60
- const tree = doc.getTree('tree');
61
- tree.enableFractionalIndex(0.001);
62
- // Convert the initial Lexical JSON to Loro tree structure
63
- lexicalToLoroTree(INITIAL_LEXICAL_JSON, tree);
64
- }
65
- /**
66
- * Check if a Loro document is empty (has no tree content)
67
- */
68
- export function isLoroDocumentEmpty(doc) {
69
- const tree = doc.getTree('tree');
70
- try {
71
- // Get all root nodes
72
- const roots = tree.roots();
73
- // Also check if the document has any nodes at all
74
- const allNodes = tree.nodes();
75
- return roots.length === 0 && allNodes.length === 0;
76
- }
77
- catch (error) {
78
- // If there's an error accessing roots, consider it empty
79
- return true;
80
- }
81
- }
82
- /**
83
- * Check if a Loro document should be initialized (more robust check)
84
- * This helps prevent race conditions where multiple clients try to initialize
85
- */
86
- export function shouldInitializeLoroDoc(doc) {
87
- const tree = doc.getTree('tree');
88
- try {
89
- const allNodes = tree.nodes();
90
- const roots = tree.roots();
91
- // Only initialize if there are truly no nodes
92
- const isEmpty = allNodes.length === 0;
93
- // Additional check: look for any existing root nodes with our content
94
- if (!isEmpty) {
95
- // Check if any root has the expected initial structure
96
- for (const root of roots) {
97
- const data = Object.fromEntries(root.data.entries());
98
- if (data.elementType === 'root') {
99
- return false;
100
- }
101
- }
102
- }
103
- return isEmpty;
104
- }
105
- catch (error) {
106
- console.warn('Error checking if doc should be initialized:', error);
107
- return false; // Don't initialize if there's an error
108
- }
109
- }
@@ -1,18 +0,0 @@
1
- import { LoroTree, TreeID } from 'loro-crdt';
2
- /**
3
- * Utility to convert Lexical JSON structure to Loro tree
4
- */
5
- interface LexicalNodeJSON {
6
- type: string;
7
- children?: LexicalNodeJSON[];
8
- [key: string]: any;
9
- }
10
- interface LexicalJSON {
11
- root: LexicalNodeJSON;
12
- }
13
- /**
14
- * Convert a Lexical JSON structure to a Loro tree
15
- * This is used to initialize a Loro tree from existing Lexical content
16
- */
17
- export declare function lexicalToLoroTree(lexicalJson: string | LexicalJSON, tree: LoroTree): TreeID;
18
- export {};
@@ -1,96 +0,0 @@
1
- /**
2
- * Convert a Lexical JSON structure to a Loro tree
3
- * This is used to initialize a Loro tree from existing Lexical content
4
- */
5
- export function lexicalToLoroTree(lexicalJson, tree) {
6
- let parsedJson;
7
- if (typeof lexicalJson === 'string') {
8
- try {
9
- parsedJson = JSON.parse(lexicalJson);
10
- }
11
- catch (error) {
12
- throw new Error(`Failed to parse Lexical JSON: ${error}`);
13
- }
14
- }
15
- else {
16
- parsedJson = lexicalJson;
17
- }
18
- // Start with the root node - create it without a parent
19
- const rootTreeNode = tree.createNode();
20
- const rootTreeID = rootTreeNode.id;
21
- processLexicalNode(parsedJson.root, tree, rootTreeNode);
22
- return rootTreeID;
23
- }
24
- /**
25
- * Recursively process a Lexical node and add it to the Loro tree
26
- */
27
- function processLexicalNode(lexicalNode, tree, treeNode) {
28
- // Store the lexical data in the tree node
29
- const nodeData = treeNode.data;
30
- if (nodeData) {
31
- // Store element type for quick access
32
- nodeData.set('elementType', lexicalNode.type);
33
- // Store lexical node data directly as JSON object
34
- const lexicalNodeData = createLexicalNodeFromJSON(lexicalNode);
35
- const lexicalNodeJSON = lexicalNodeData.lexicalNode.exportJSON();
36
- // Remove all key-related fields to avoid duplication (TreeID serves as the key)
37
- if ('__key' in lexicalNodeJSON || 'key' in lexicalNodeJSON || 'lexicalKey' in lexicalNodeJSON) {
38
- const { __key, key, lexicalKey, ...cleanedData } = lexicalNodeJSON;
39
- nodeData.set('lexical', cleanedData);
40
- }
41
- else {
42
- nodeData.set('lexical', lexicalNodeJSON);
43
- }
44
- }
45
- // Process children if they exist
46
- if (lexicalNode.children && Array.isArray(lexicalNode.children)) {
47
- lexicalNode.children.forEach((child, childIndex) => {
48
- // Create child node under current node
49
- const childTreeNode = tree.createNode(treeNode.id, childIndex);
50
- processLexicalNode(child, tree, childTreeNode);
51
- });
52
- }
53
- }
54
- /**
55
- * Create a minimal Lexical node representation from JSON data
56
- * This doesn't create actual Lexical nodes, just the data structure needed for serialization
57
- */
58
- function createLexicalNodeFromJSON(nodeJson) {
59
- // Create a minimal node-like object with the essential properties
60
- const nodeData = {
61
- __key: generateNodeKey(), // Generate a temporary key
62
- __type: nodeJson.type,
63
- __parent: null, // Will be set during tree construction
64
- __text: nodeJson.text || undefined,
65
- __format: nodeJson.format || 0,
66
- __style: nodeJson.style || '',
67
- __mode: nodeJson.mode || undefined,
68
- __detail: nodeJson.detail || undefined,
69
- __indent: nodeJson.indent || 0,
70
- __direction: nodeJson.direction || null,
71
- __tag: nodeJson.tag || undefined,
72
- __textFormat: nodeJson.textFormat || undefined,
73
- __textStyle: nodeJson.textStyle || undefined,
74
- __version: nodeJson.version || 1
75
- };
76
- // Remove undefined properties
77
- Object.keys(nodeData).forEach(key => {
78
- if (nodeData[key] === undefined) {
79
- delete nodeData[key];
80
- }
81
- });
82
- // Return in the format expected by LexicalNodeDataHelper
83
- return {
84
- lexicalNode: {
85
- getType: () => nodeJson.type,
86
- exportJSON: () => nodeData,
87
- getKey: () => nodeData.__key
88
- }
89
- };
90
- }
91
- /**
92
- * Generate a simple node key for temporary use
93
- */
94
- function generateNodeKey() {
95
- return Math.random().toString(36).substr(2, 9);
96
- }