@datalayer/lexical-loro 0.2.4 → 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,53 @@
1
+ import type { LexicalCommand } from 'lexical';
2
+ import type { LoroDoc, Cursor } from 'loro-crdt';
3
+ import { UndoManager } from 'loro-crdt';
4
+ import type { Binding } from './Bindings';
5
+ export type UserState = {
6
+ anchorPos: Cursor | null;
7
+ color: string;
8
+ focusing: boolean;
9
+ focusPos: Cursor | null;
10
+ name: string;
11
+ awarenessData: object;
12
+ [key: string]: unknown;
13
+ };
14
+ export declare const CONNECTED_COMMAND: LexicalCommand<boolean>;
15
+ export declare const TOGGLE_CONNECT_COMMAND: LexicalCommand<boolean>;
16
+ export type AwarenessProvider = {
17
+ getLocalState: () => UserState | null;
18
+ getStates: () => Map<number, UserState>;
19
+ off: (type: 'update', cb: () => void) => void;
20
+ on: (type: 'update', cb: () => void) => void;
21
+ setLocalState: (userState: UserState) => void;
22
+ setLocalStateField: (field: string, value: unknown) => void;
23
+ };
24
+ export type Provider = {
25
+ awareness: AwarenessProvider;
26
+ connect(): void | Promise<void>;
27
+ disconnect(): void;
28
+ off(type: 'sync', cb: (isSynced: boolean) => void): void;
29
+ off(type: 'update', cb: (update: unknown) => void): void;
30
+ off(type: 'status', cb: (status: {
31
+ status: string;
32
+ }) => void): void;
33
+ off(type: 'reload', cb: (doc: LoroDoc) => void): void;
34
+ on(type: 'sync', cb: (isSynced: boolean) => void): void;
35
+ on(type: 'status', cb: (status: {
36
+ status: string;
37
+ }) => void): void;
38
+ on(type: 'update', cb: (update: unknown) => void): void;
39
+ on(type: 'reload', cb: (doc: LoroDoc) => void): void;
40
+ };
41
+ export type Operation = {
42
+ attributes: {
43
+ __type: string;
44
+ };
45
+ insert: string | Record<string, unknown>;
46
+ };
47
+ export type Delta = Array<Operation>;
48
+ export type LoroNode = Record<string, unknown>;
49
+ export type LoroEvent = Record<string, unknown>;
50
+ export declare function createUndoManager(binding: Binding): UndoManager;
51
+ export declare function initLocalState(provider: Provider, name: string, color: string, focusing: boolean, awarenessData: object): void;
52
+ export declare function setLocalStateFocus(provider: Provider, name: string, color: string, focusing: boolean, awarenessData: object): void;
53
+ export declare function updateLocalStateName(provider: Provider, name: string, color: string): void;
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ import { createCommand } from 'lexical';
6
+ import { UndoManager } from 'loro-crdt';
7
+ export const CONNECTED_COMMAND = createCommand('CONNECTED_COMMAND');
8
+ export const TOGGLE_CONNECT_COMMAND = createCommand('TOGGLE_CONNECT_COMMAND');
9
+ export function createUndoManager(binding) {
10
+ // Create Loro UndoManager with configuration
11
+ const undoManager = new UndoManager(binding.doc, {
12
+ mergeInterval: 1000, // Merge operations within 1 second
13
+ maxUndoSteps: 100, // Keep up to 100 undo steps
14
+ excludeOriginPrefixes: ['collab-', 'sync-'], // Exclude collaboration operations
15
+ /*
16
+ onPush: (isUndo, counterRange, event) => {
17
+ // Save cursor positions when adding to undo stack
18
+ const selection = binding.editor.getEditorState().read(() => {
19
+ return binding.editor.getEditorState()._selection;
20
+ });
21
+ // Get cursors for the current state
22
+ const cursors: Cursor[] = [];
23
+ if (selection) {
24
+ // TODO: Convert Lexical selection to Loro cursors
25
+ // This would need to be implemented based on the specific selection format
26
+ }
27
+ return {
28
+ value: binding.doc.toJSON(), // Save document state
29
+ cursors: cursors
30
+ };
31
+ },
32
+ onPop: (isUndo, metadata, counterRange) => {
33
+ // Restore cursor positions when undoing/redoing
34
+ if (metadata?.cursors && metadata.cursors.length > 0) {
35
+ binding.editor.update(() => {
36
+ // TODO: Restore selection state from cursors
37
+ // This would need to convert Loro cursors back to Lexical selection
38
+ });
39
+ }
40
+ }
41
+ */
42
+ });
43
+ return undoManager;
44
+ }
45
+ export function initLocalState(provider, name, color, focusing, awarenessData) {
46
+ provider.awareness.setLocalState({
47
+ anchorPos: null,
48
+ awarenessData,
49
+ color,
50
+ focusPos: null,
51
+ focusing,
52
+ name,
53
+ });
54
+ }
55
+ export function setLocalStateFocus(provider, name, color, focusing, awarenessData) {
56
+ const { awareness } = provider;
57
+ let localState = awareness.getLocalState();
58
+ if (localState === null) {
59
+ localState = {
60
+ anchorPos: null,
61
+ awarenessData,
62
+ color,
63
+ focusPos: null,
64
+ focusing: focusing,
65
+ name,
66
+ };
67
+ }
68
+ // Always update name and color in case they changed
69
+ localState.name = name;
70
+ localState.color = color;
71
+ localState.focusing = focusing;
72
+ awareness.setLocalState(localState);
73
+ }
74
+ export function updateLocalStateName(provider, name, color) {
75
+ const { awareness } = provider;
76
+ let localState = awareness.getLocalState();
77
+ if (localState === null) {
78
+ // Initialize with the new name if no state exists
79
+ localState = {
80
+ anchorPos: null,
81
+ awarenessData: {},
82
+ color,
83
+ focusPos: null,
84
+ focusing: false,
85
+ name,
86
+ };
87
+ }
88
+ else {
89
+ // Update existing state with new name and color
90
+ localState.name = name;
91
+ localState.color = color;
92
+ }
93
+ awareness.setLocalState(localState);
94
+ }
@@ -0,0 +1,13 @@
1
+ import type { Binding } from '../Bindings';
2
+ export interface LoroCollaborationUIProps {
3
+ binding: Binding;
4
+ cursorsContainer: JSX.Element | null;
5
+ currentUserName?: string;
6
+ currentUserColor?: string;
7
+ showCollaborators?: boolean;
8
+ }
9
+ /**
10
+ * Combines the cursors container with the collaborators list
11
+ */
12
+ export declare function LoroCollaborationUI({ binding, cursorsContainer, currentUserName, currentUserColor, showCollaborators }: LoroCollaborationUIProps): JSX.Element;
13
+ export default LoroCollaborationUI;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LoroCollaborators } from './LoroCollaborators';
3
+ /**
4
+ * Combines the cursors container with the collaborators list
5
+ */
6
+ export function LoroCollaborationUI({ binding, cursorsContainer, currentUserName = 'You', currentUserColor = '#007acc', showCollaborators = true }) {
7
+ return (_jsxs(_Fragment, { children: [showCollaborators && (_jsx(LoroCollaborators, { binding: binding, currentUserName: currentUserName, currentUserColor: currentUserColor })), cursorsContainer] }));
8
+ }
9
+ export default LoroCollaborationUI;
@@ -0,0 +1,8 @@
1
+ import type { Binding } from '../Bindings';
2
+ export interface LoroCollaboratorsProps {
3
+ binding: Binding;
4
+ currentUserName?: string;
5
+ currentUserColor?: string;
6
+ }
7
+ export declare function LoroCollaborators({ binding, currentUserName, currentUserColor }: LoroCollaboratorsProps): JSX.Element;
8
+ export default LoroCollaborators;
@@ -0,0 +1,102 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2023-2025 Datalayer, Inc.
4
+ * Distributed under the terms of the MIT License.
5
+ */
6
+ import { useState, useEffect } from 'react';
7
+ export function LoroCollaborators({ binding, currentUserName = 'Me', currentUserColor = '#007acc' }) {
8
+ // Force re-render when cursors change
9
+ const [updateTrigger, setUpdateTrigger] = useState(0);
10
+ // Monitor cursors map changes
11
+ useEffect(() => {
12
+ const interval = setInterval(() => {
13
+ setUpdateTrigger(prev => prev + 1);
14
+ }, 1000); // Check for updates every second
15
+ return () => clearInterval(interval);
16
+ }, []);
17
+ // Get current user's client ID
18
+ const currentClientID = binding.clientID;
19
+ // Debug: Log cursor information
20
+ const allCursorsDebug = Array.from(binding.cursors.entries()).map(([id, cursor]) => ({
21
+ clientId: id,
22
+ name: cursor.name,
23
+ color: cursor.color,
24
+ isCurrentUser: id === currentClientID
25
+ }));
26
+ // Get all collaborators including current user
27
+ const allCollaborators = Array.from(binding.cursors.entries())
28
+ .map(([clientId, cursor]) => ({ clientId, cursor, isCurrentUser: clientId === currentClientID }));
29
+ // Get current user's cursor if it exists
30
+ const currentUserCursor = binding.cursors.get(currentClientID);
31
+ const currentDisplayColor = currentUserCursor?.color || currentUserColor;
32
+ const currentDisplayName = currentUserCursor?.name || currentUserName;
33
+ // Separate current user and others for display order (current user first)
34
+ const currentUserData = allCollaborators.find(({ isCurrentUser }) => isCurrentUser);
35
+ const otherCollaborators = allCollaborators.filter(({ isCurrentUser }) => !isCurrentUser);
36
+ return (_jsxs("div", { style: {
37
+ display: 'flex',
38
+ alignItems: 'center',
39
+ padding: '8px 12px',
40
+ backgroundColor: 'var(--bgColor-muted, #f8f9fa)',
41
+ borderBottom: '1px solid var(--borderColor-default, #e1e5e9)',
42
+ fontSize: '14px',
43
+ fontFamily: 'system-ui, -apple-system, sans-serif',
44
+ gap: '8px',
45
+ flexWrap: 'wrap',
46
+ color: 'var(--fgColor-default, inherit)',
47
+ }, children: [currentUserData && (_jsx(CollaboratorBadge, { name: `${currentUserData.cursor.name}`, color: currentDisplayColor, isCurrentUser: true, clientId: currentClientID })), !currentUserData && (_jsx(CollaboratorBadge, { name: `${currentDisplayName} (Me)`, color: currentDisplayColor, isCurrentUser: true, clientId: currentClientID })), otherCollaborators.length > 0 && (_jsx("div", { style: {
48
+ width: '1px',
49
+ height: '20px',
50
+ backgroundColor: 'var(--borderColor-muted, #d1d5db)',
51
+ margin: '0 4px'
52
+ } })), otherCollaborators.map(({ clientId, cursor }) => (_jsx(CollaboratorBadge, { name: cursor.name, color: cursor.color, isCurrentUser: false, clientId: clientId }, clientId))), otherCollaborators.length === 0 && (_jsx("span", { style: {
53
+ color: 'var(--fgColor-muted, #6b7280)',
54
+ fontStyle: 'italic',
55
+ marginLeft: '8px'
56
+ }, children: "No other collaborators" }))] }));
57
+ }
58
+ function CollaboratorBadge({ name, color, isCurrentUser, clientId }) {
59
+ // Convert color to rgba for transparency when current user
60
+ const getColorWithOpacity = (color, opacity = 1) => {
61
+ // If it's a hex color, convert to rgba
62
+ if (color.startsWith('#')) {
63
+ const hex = color.slice(1);
64
+ const r = parseInt(hex.slice(0, 2), 16);
65
+ const g = parseInt(hex.slice(2, 4), 16);
66
+ const b = parseInt(hex.slice(4, 6), 16);
67
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
68
+ }
69
+ // If it's already rgba or rgb, just return as is (basic support)
70
+ return color;
71
+ };
72
+ const circleColor = isCurrentUser ? getColorWithOpacity(color, 0.1) : color;
73
+ const badgeColor = isCurrentUser ? getColorWithOpacity(color, 0.1) : color;
74
+ return (_jsxs("div", { style: {
75
+ display: 'flex',
76
+ alignItems: 'center',
77
+ gap: '6px'
78
+ }, title: `${name} (Client ID: ${clientId})`, children: [_jsx("div", { style: {
79
+ width: '12px',
80
+ height: '12px',
81
+ borderRadius: '50%',
82
+ backgroundColor: circleColor,
83
+ border: isCurrentUser ? '2px solid #ffffff' : 'none',
84
+ boxShadow: isCurrentUser ? '0 0 0 1px #d1d5db' : 'none',
85
+ flexShrink: 0
86
+ } }), _jsx("span", { style: {
87
+ backgroundColor: badgeColor,
88
+ color: '#ffffff',
89
+ padding: '3px 8px',
90
+ borderRadius: '12px',
91
+ fontSize: '12px',
92
+ fontWeight: '500',
93
+ lineHeight: '1.2',
94
+ whiteSpace: 'nowrap',
95
+ textShadow: '0 1px 2px rgba(0,0,0,0.1)',
96
+ boxShadow: isCurrentUser
97
+ ? '0 1px 3px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.2)'
98
+ : '0 1px 2px rgba(0,0,0,0.1)',
99
+ opacity: isCurrentUser ? 0.9 : 1
100
+ }, children: name })] }));
101
+ }
102
+ export default LoroCollaborators;
@@ -0,0 +1,2 @@
1
+ export { LoroCollaborators, type LoroCollaboratorsProps } from './LoroCollaborators';
2
+ export { LoroCollaborationUI, type LoroCollaborationUIProps } from './LoroCollaborationUI';
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ export { LoroCollaborators } from './LoroCollaborators';
6
+ export { LoroCollaborationUI } from './LoroCollaborationUI';
@@ -0,0 +1,6 @@
1
+ export * from './Bindings';
2
+ export * from './LexicalCollaborationContext';
3
+ export * from './LexicalCollaborationPlugin';
4
+ export * from './State';
5
+ export * from './useCollaboration';
6
+ export * from './wsProvider';
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ export * from './Bindings';
6
+ export * from './LexicalCollaborationContext';
7
+ export * from './LexicalCollaborationPlugin';
8
+ export * from './State';
9
+ export * from './useCollaboration';
10
+ export * from './wsProvider';
@@ -0,0 +1,14 @@
1
+ import { Binding } from '../Bindings';
2
+ import { Provider } from '../State';
3
+ /**
4
+ * Base interface for all diff integrators
5
+ */
6
+ export interface BaseIntegrator<T = any> {
7
+ /**
8
+ * Handle the diff event
9
+ * @param diff The diff event to integrate
10
+ * @param binding The binding instance
11
+ * @param provider The provider instance
12
+ */
13
+ integrate(diff: T, binding: Binding, provider: Provider): void;
14
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ export {};
@@ -0,0 +1,23 @@
1
+ import { BaseIntegrator } from './BaseIntegrator';
2
+ import { Binding } from '../Bindings';
3
+ import { Provider } from '../State';
4
+ interface CounterDiff {
5
+ type: 'counter';
6
+ increment?: number;
7
+ value?: number;
8
+ }
9
+ /**
10
+ * Handles counter changes (increment/decrement operations)
11
+ */
12
+ export declare class CounterIntegrator implements BaseIntegrator<CounterDiff> {
13
+ integrate(diff: CounterDiff, binding: Binding, provider: Provider): void;
14
+ integrateInternal(diff: CounterDiff, binding: Binding, provider: Provider): void;
15
+ private integrateIncrement;
16
+ private integrateSetValue;
17
+ /**
18
+ * Helper method to update a counter property in a specific node
19
+ * This would be used when counters are associated with particular nodes
20
+ */
21
+ private updateNodeCounter;
22
+ }
23
+ export {};
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ /**
6
+ * Handles counter changes (increment/decrement operations)
7
+ */
8
+ export class CounterIntegrator {
9
+ integrate(diff, binding, provider) {
10
+ this.integrateInternal(diff, binding, provider);
11
+ }
12
+ // Internal method for use when already inside editor.update()
13
+ integrateInternal(diff, binding, provider) {
14
+ if (diff.increment !== undefined) {
15
+ this.integrateIncrement(diff.increment, binding, provider);
16
+ }
17
+ if (diff.value !== undefined) {
18
+ this.integrateSetValue(diff.value, binding, provider);
19
+ }
20
+ }
21
+ integrateIncrement(increment, binding, provider) {
22
+ // Counter operations in Lexical context might be used for:
23
+ // - Version numbers
24
+ // - Reference counts
25
+ // - Numeric properties in nodes
26
+ // - Analytics or tracking data
27
+ // For now, this is a placeholder since counters are not commonly
28
+ // used in basic text editing scenarios
29
+ }
30
+ integrateSetValue(value, binding, provider) {
31
+ // Similar to increment, the specific implementation would depend
32
+ // on what the counter represents in the document structure
33
+ }
34
+ /**
35
+ * Helper method to update a counter property in a specific node
36
+ * This would be used when counters are associated with particular nodes
37
+ */
38
+ updateNodeCounter(nodeKey, counterName, operation, value, binding) {
39
+ // This is a hypothetical implementation
40
+ // Real usage would depend on how counters are integrated into the document model
41
+ // In practice, this might update metadata or special numeric properties
42
+ // associated with Lexical nodes
43
+ }
44
+ }
@@ -0,0 +1,23 @@
1
+ import { BaseIntegrator } from './BaseIntegrator';
2
+ import { Binding } from '../Bindings';
3
+ import { Provider } from '../State';
4
+ interface ListDiff {
5
+ type: 'list';
6
+ diff?: Array<{
7
+ type: 'insert' | 'delete' | 'retain';
8
+ index?: number;
9
+ length?: number;
10
+ value?: any;
11
+ }>;
12
+ }
13
+ /**
14
+ * Handles list changes (insertions, deletions, moves in ordered structures)
15
+ */
16
+ export declare class ListIntegrator implements BaseIntegrator<ListDiff> {
17
+ integrate(diff: ListDiff, binding: Binding, provider: Provider): void;
18
+ integrateInternal(diff: ListDiff, binding: Binding, provider: Provider): void;
19
+ private integrateInsert;
20
+ private integrateDelete;
21
+ private integrateRetain;
22
+ }
23
+ export {};
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ /**
6
+ * Handles list changes (insertions, deletions, moves in ordered structures)
7
+ */
8
+ export class ListIntegrator {
9
+ integrate(diff, binding, provider) {
10
+ console.log('📋 Handling ListDiff:', diff);
11
+ this.integrateInternal(diff, binding, provider);
12
+ }
13
+ // Internal method for use when already inside editor.update()
14
+ integrateInternal(diff, binding, provider) {
15
+ if (diff.diff) {
16
+ diff.diff.forEach((change) => {
17
+ switch (change.type) {
18
+ case 'insert':
19
+ this.integrateInsert(change, binding, provider);
20
+ break;
21
+ case 'delete':
22
+ this.integrateDelete(change, binding, provider);
23
+ break;
24
+ case 'retain':
25
+ this.integrateRetain(change, binding, provider);
26
+ break;
27
+ default:
28
+ console.warn(`📋 Unknown list change type: ${change.type}`);
29
+ }
30
+ });
31
+ }
32
+ }
33
+ integrateInsert(change, binding, provider) {
34
+ // This typically represents insertion of child nodes in an ElementNode
35
+ // The actual node creation should be integrated by TreeIntegrator
36
+ // This integrater focuses on the ordering and position updates
37
+ // For now, log the operation - specific implementation would depend on
38
+ // the context of which list/container this change applies to
39
+ }
40
+ integrateDelete(change, binding, provider) {
41
+ // This typically represents removal of child nodes from an ElementNode
42
+ // The actual node deletion should be integrated by TreeIntegrator
43
+ // This integrater focuses on the ordering and position updates
44
+ }
45
+ integrateRetain(change, binding, provider) {
46
+ // Retain operations typically don't require action in Lexical
47
+ // They represent portions of the list that remain unchanged
48
+ if (change.attributes) {
49
+ console.log(`📋 List retain with attributes at ${change.index}, length: ${change.length}`, change.attributes);
50
+ // Handle any attribute changes if needed
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,24 @@
1
+ import { BaseIntegrator } from './BaseIntegrator';
2
+ import { Binding } from '../Bindings';
3
+ import { Provider } from '../State';
4
+ interface MapDiff {
5
+ type: 'map';
6
+ updated?: Record<string, any>;
7
+ deleted?: string[];
8
+ }
9
+ /**
10
+ * Handles map data changes (node properties, metadata updates)
11
+ */
12
+ export declare class MapIntegrator implements BaseIntegrator<MapDiff> {
13
+ integrate(diff: MapDiff, binding: Binding, provider: Provider): void;
14
+ integrateWithContext(diff: MapDiff, treeId: any, binding: Binding, provider: Provider): void;
15
+ integrateInternal(diff: MapDiff, binding: Binding, provider: Provider): void;
16
+ integrateWithContextInternal(diff: MapDiff, treeId: any, binding: Binding, provider: Provider): void;
17
+ private integratePropertyUpdateWithContext;
18
+ private integratePropertyUpdateWithContextInternal;
19
+ private integratePropertyUpdate;
20
+ private integratePropertyDelete;
21
+ private integrateLexicalDataUpdateWithContext;
22
+ private integrateLexicalDataUpdateInternal;
23
+ }
24
+ export {};