@datalayer/lexical-loro 0.2.3 → 0.2.5

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