@datalayer/lexical-loro 0.0.7 → 0.1.0

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