@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,111 @@
1
+ import { LoroTree, LoroTreeNode, TreeID } from 'loro-crdt';
2
+ import { LexicalNode, NodeKey, EditorState } from 'lexical';
3
+ import { Binding } from '../Bindings';
4
+ /**
5
+ * Bidirectional mapping between Lexical NodeKeys and Loro TreeIDs
6
+ */
7
+ export declare class NodeMapper {
8
+ private lexicalToLoro;
9
+ private loroToLexical;
10
+ private tree;
11
+ constructor(binding: Binding);
12
+ /**
13
+ * Create a bidirectional mapping between Lexical NodeKey and Loro TreeID
14
+ */
15
+ private createMapping;
16
+ /**
17
+ * Remove bidirectional mapping
18
+ */
19
+ private removeMapping;
20
+ /**
21
+ * Get Loro TreeNode based on Lexical NodeKey
22
+ * If the node doesn't exist, create it with proper parent-child relationship
23
+ */
24
+ getLoroNodeByLexicalKey(nodeKey: NodeKey, lexicalNode?: LexicalNode, parentTreeID?: TreeID, index?: number): LoroTreeNode;
25
+ /**
26
+ * Get Lexical NodeKey based on Loro TreeID
27
+ * If the node doesn't exist in Lexical, it needs to be created externally
28
+ */
29
+ getLexicalKeyByLoroId(treeId: TreeID): NodeKey | null;
30
+ /**
31
+ * Get Lexical Node from EditorState based on Loro TreeID
32
+ */
33
+ getLexicalNodeByLoroId(treeId: TreeID, editorState: EditorState): LexicalNode | null;
34
+ /**
35
+ * Get Lexical parent node key for a Loro TreeID
36
+ * Returns null if no parent or if parent not found in Lexical
37
+ * Note: This method needs the LoroTree API to be clarified for parent relationships
38
+ */
39
+ getLexicalParentByLoroId(treeId: TreeID, loroTree: LoroTree): NodeKey | null;
40
+ /**
41
+ * Manually set bidirectional mapping between Lexical NodeKey and Loro TreeID
42
+ */
43
+ setMapping(nodeKey: NodeKey, treeId: TreeID): void;
44
+ /**
45
+ * Create a new Loro TreeNode and establish mapping
46
+ */
47
+ private createLoroNode;
48
+ /**
49
+ * Update the mapping when a node is moved or modified
50
+ */
51
+ updateMapping(oldNodeKey: NodeKey, newNodeKey: NodeKey): void;
52
+ /**
53
+ * Remove mapping when a node is deleted
54
+ */
55
+ deleteMapping(nodeKey: NodeKey): void;
56
+ /**
57
+ * Get TreeID by Lexical NodeKey (without creating if not found)
58
+ */
59
+ getTreeIDByLexicalKey(nodeKey: NodeKey): TreeID | undefined;
60
+ /**
61
+ * Check if a mapping exists for a Lexical NodeKey
62
+ */
63
+ hasLexicalMapping(nodeKey: NodeKey): boolean;
64
+ /**
65
+ * Check if a mapping exists for a Loro TreeID
66
+ */
67
+ hasLoroMapping(treeId: TreeID): boolean;
68
+ /**
69
+ * Get all current mappings (for debugging)
70
+ */
71
+ getAllMappings(): {
72
+ lexicalToLoro: Map<NodeKey, TreeID>;
73
+ loroToLexical: Map<TreeID, NodeKey>;
74
+ };
75
+ /**
76
+ * Clear all mappings (useful for testing or reset)
77
+ */
78
+ clearMappings(): void;
79
+ /**
80
+ * Synchronize existing tree nodes with Lexical editor state
81
+ * This should be called during initialization to establish mappings
82
+ *
83
+ * Note: Since lexicalKey is no longer persisted in tree node data,
84
+ * this method now relies on the TreeIntegrator to create mappings
85
+ * as nodes are integrated from Loro tree operations.
86
+ */
87
+ syncExistingNodes(editorState: EditorState): void;
88
+ }
89
+ /**
90
+ * Initialize the global node mapper
91
+ */
92
+ export declare function initializeNodeMapper(binding: Binding): NodeMapper;
93
+ /**
94
+ * Get the global node mapper instance
95
+ */
96
+ export declare function getNodeMapper(): NodeMapper;
97
+ /**
98
+ * Utility functions for common operations
99
+ */
100
+ /**
101
+ * Get Loro TreeNode by Lexical NodeKey (using global mapper)
102
+ */
103
+ export declare function getLoroNodeByLexicalKey(nodeKey: NodeKey, lexicalNode?: LexicalNode, parentTreeID?: TreeID, index?: number): LoroTreeNode;
104
+ /**
105
+ * Get Lexical NodeKey by Loro TreeID (using global mapper)
106
+ */
107
+ export declare function getLexicalKeyByLoroId(treeId: TreeID): NodeKey | null;
108
+ /**
109
+ * Get Lexical Node by Loro TreeID (using global mapper)
110
+ */
111
+ export declare function getLexicalNodeByLoroId(treeId: TreeID, editorState: EditorState): LexicalNode | null;
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Bidirectional mapping between Lexical NodeKeys and Loro TreeIDs
3
+ */
4
+ export class NodeMapper {
5
+ // Maps Lexical NodeKey to Loro TreeID
6
+ lexicalToLoro = new Map();
7
+ // Maps Loro TreeID to Lexical NodeKey
8
+ loroToLexical = new Map();
9
+ tree;
10
+ constructor(binding) {
11
+ this.tree = binding.tree;
12
+ }
13
+ /**
14
+ * Create a bidirectional mapping between Lexical NodeKey and Loro TreeID
15
+ */
16
+ createMapping(nodeKey, treeId) {
17
+ this.lexicalToLoro.set(nodeKey, treeId);
18
+ this.loroToLexical.set(treeId, nodeKey);
19
+ }
20
+ /**
21
+ * Remove bidirectional mapping
22
+ */
23
+ removeMapping(nodeKey, treeId) {
24
+ this.lexicalToLoro.delete(nodeKey);
25
+ this.loroToLexical.delete(treeId);
26
+ }
27
+ /**
28
+ * Get Loro TreeNode based on Lexical NodeKey
29
+ * If the node doesn't exist, create it with proper parent-child relationship
30
+ */
31
+ getLoroNodeByLexicalKey(nodeKey, lexicalNode, parentTreeID, index) {
32
+ // Check if mapping already exists
33
+ const existingTreeID = this.lexicalToLoro.get(nodeKey);
34
+ if (existingTreeID && this.tree.has(existingTreeID)) {
35
+ return this.tree.getNodeByID(existingTreeID);
36
+ }
37
+ // Get parent TreeID from Lexical node if not provided
38
+ if (!parentTreeID && lexicalNode) {
39
+ const lexicalParent = lexicalNode.getParent();
40
+ if (lexicalParent) {
41
+ const parentKey = lexicalParent.getKey();
42
+ parentTreeID = this.lexicalToLoro.get(parentKey);
43
+ // If parent doesn't exist in Loro, create it first
44
+ if (!parentTreeID) {
45
+ const parentLoroNode = this.getLoroNodeByLexicalKey(parentKey, lexicalParent, undefined, undefined);
46
+ parentTreeID = parentLoroNode.id;
47
+ }
48
+ }
49
+ }
50
+ // Get index from Lexical node if not provided
51
+ if (index === undefined && lexicalNode) {
52
+ index = lexicalNode.getIndexWithinParent();
53
+ }
54
+ // Create new tree node if it doesn't exist
55
+ const newTreeID = this.createLoroNode(nodeKey, lexicalNode, parentTreeID, index);
56
+ return this.tree.getNodeByID(newTreeID);
57
+ }
58
+ /**
59
+ * Get Lexical NodeKey based on Loro TreeID
60
+ * If the node doesn't exist in Lexical, it needs to be created externally
61
+ */
62
+ getLexicalKeyByLoroId(treeId) {
63
+ // Check if mapping exists
64
+ const existingNodeKey = this.loroToLexical.get(treeId);
65
+ if (existingNodeKey) {
66
+ return existingNodeKey;
67
+ }
68
+ // If no mapping exists, we can't create a Lexical node here
69
+ // The caller should integrate Lexical node creation
70
+ return null;
71
+ }
72
+ /**
73
+ * Get Lexical Node from EditorState based on Loro TreeID
74
+ */
75
+ getLexicalNodeByLoroId(treeId, editorState) {
76
+ const nodeKey = this.getLexicalKeyByLoroId(treeId);
77
+ if (!nodeKey) {
78
+ return null;
79
+ }
80
+ return editorState._nodeMap.get(nodeKey) || null;
81
+ }
82
+ /**
83
+ * Get Lexical parent node key for a Loro TreeID
84
+ * Returns null if no parent or if parent not found in Lexical
85
+ * Note: This method needs the LoroTree API to be clarified for parent relationships
86
+ */
87
+ getLexicalParentByLoroId(treeId, loroTree) {
88
+ // TODO: Implement once LoroTree parent API is confirmed
89
+ // For now, we'll rely on the bidirectional mapping without tree traversal
90
+ return null;
91
+ }
92
+ /**
93
+ * Manually set bidirectional mapping between Lexical NodeKey and Loro TreeID
94
+ */
95
+ setMapping(nodeKey, treeId) {
96
+ this.lexicalToLoro.set(nodeKey, treeId);
97
+ this.loroToLexical.set(treeId, nodeKey);
98
+ }
99
+ /**
100
+ * Create a new Loro TreeNode and establish mapping
101
+ */
102
+ createLoroNode(nodeKey, lexicalNode, parentTreeID, index) {
103
+ // Create the tree node first
104
+ const treeNode = this.tree.createNode(parentTreeID, index);
105
+ // Get the TreeID from the created node
106
+ const treeId = treeNode.id;
107
+ // Debug logging for parent relationship issues
108
+ if (parentTreeID) {
109
+ const actualParent = treeNode.parent();
110
+ if (!actualParent || actualParent.id !== parentTreeID) {
111
+ console.warn(`⚠️ Parent relationship not set correctly for ${nodeKey}: expected ${parentTreeID}, got ${actualParent?.id || 'None'}`);
112
+ }
113
+ }
114
+ // Store basic metadata
115
+ treeNode.data.set('createdAt', Date.now());
116
+ // Store complete lexical node data if lexical node is provided
117
+ if (lexicalNode) {
118
+ try {
119
+ const lexicalNodeJSON = lexicalNode.exportJSON();
120
+ // Remove all key-related fields to avoid duplication (TreeID serves as the key)
121
+ if ('key' in lexicalNodeJSON || '__key' in lexicalNodeJSON || 'lexicalKey' in lexicalNodeJSON) {
122
+ const { key, __key, lexicalKey, ...cleanedData } = lexicalNodeJSON;
123
+ treeNode.data.set('lexical', cleanedData);
124
+ }
125
+ else {
126
+ treeNode.data.set('lexical', lexicalNodeJSON);
127
+ }
128
+ }
129
+ catch (error) {
130
+ console.warn('Failed to export lexical node JSON in NodesMapper:', error);
131
+ }
132
+ }
133
+ // Create bidirectional mapping
134
+ this.createMapping(nodeKey, treeId);
135
+ return treeId;
136
+ }
137
+ /**
138
+ * Update the mapping when a node is moved or modified
139
+ */
140
+ updateMapping(oldNodeKey, newNodeKey) {
141
+ const treeId = this.lexicalToLoro.get(oldNodeKey);
142
+ if (treeId) {
143
+ this.removeMapping(oldNodeKey, treeId);
144
+ this.createMapping(newNodeKey, treeId);
145
+ // Update timestamp in tree node data
146
+ const treeNode = this.tree.getNodeByID(treeId);
147
+ if (treeNode) {
148
+ treeNode.data.set('updatedAt', Date.now());
149
+ }
150
+ }
151
+ }
152
+ /**
153
+ * Remove mapping when a node is deleted
154
+ */
155
+ deleteMapping(nodeKey) {
156
+ const treeId = this.lexicalToLoro.get(nodeKey);
157
+ if (treeId) {
158
+ this.removeMapping(nodeKey, treeId);
159
+ // Delete the tree node
160
+ if (this.tree.has(treeId)) {
161
+ this.tree.delete(treeId);
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Get TreeID by Lexical NodeKey (without creating if not found)
167
+ */
168
+ getTreeIDByLexicalKey(nodeKey) {
169
+ return this.lexicalToLoro.get(nodeKey);
170
+ }
171
+ /**
172
+ * Check if a mapping exists for a Lexical NodeKey
173
+ */
174
+ hasLexicalMapping(nodeKey) {
175
+ return this.lexicalToLoro.has(nodeKey);
176
+ }
177
+ /**
178
+ * Check if a mapping exists for a Loro TreeID
179
+ */
180
+ hasLoroMapping(treeId) {
181
+ return this.loroToLexical.has(treeId);
182
+ }
183
+ /**
184
+ * Get all current mappings (for debugging)
185
+ */
186
+ getAllMappings() {
187
+ return {
188
+ lexicalToLoro: new Map(this.lexicalToLoro),
189
+ loroToLexical: new Map(this.loroToLexical)
190
+ };
191
+ }
192
+ /**
193
+ * Clear all mappings (useful for testing or reset)
194
+ */
195
+ clearMappings() {
196
+ this.lexicalToLoro.clear();
197
+ this.loroToLexical.clear();
198
+ }
199
+ /**
200
+ * Synchronize existing tree nodes with Lexical editor state
201
+ * This should be called during initialization to establish mappings
202
+ *
203
+ * Note: Since lexicalKey is no longer persisted in tree node data,
204
+ * this method now relies on the TreeIntegrator to create mappings
205
+ * as nodes are integrated from Loro tree operations.
206
+ */
207
+ syncExistingNodes(editorState) {
208
+ // Since we no longer persist lexicalKey in tree node data,
209
+ // we cannot automatically establish mappings from existing tree nodes.
210
+ //
211
+ // Instead, mappings will be established through:
212
+ // 1. TreeIntegrator processing tree diffs during initialization
213
+ // 2. Normal collaboration flow as nodes are created/updated
214
+ //
215
+ // This method is kept for compatibility but is now a no-op.
216
+ console.log('📍 syncExistingNodes: Skipping sync - mappings established through TreeIntegrator');
217
+ }
218
+ }
219
+ // Global instance to be shared across the application
220
+ let globalNodeMapper = null;
221
+ /**
222
+ * Initialize the global node mapper
223
+ */
224
+ export function initializeNodeMapper(binding) {
225
+ globalNodeMapper = new NodeMapper(binding);
226
+ return globalNodeMapper;
227
+ }
228
+ /**
229
+ * Get the global node mapper instance
230
+ */
231
+ export function getNodeMapper() {
232
+ if (!globalNodeMapper) {
233
+ throw new Error('NodeMapper not initialized. Call initializeNodeMapper() first.');
234
+ }
235
+ return globalNodeMapper;
236
+ }
237
+ /**
238
+ * Utility functions for common operations
239
+ */
240
+ /**
241
+ * Get Loro TreeNode by Lexical NodeKey (using global mapper)
242
+ */
243
+ export function getLoroNodeByLexicalKey(nodeKey, lexicalNode, parentTreeID, index) {
244
+ return getNodeMapper().getLoroNodeByLexicalKey(nodeKey, lexicalNode, parentTreeID, index);
245
+ }
246
+ /**
247
+ * Get Lexical NodeKey by Loro TreeID (using global mapper)
248
+ */
249
+ export function getLexicalKeyByLoroId(treeId) {
250
+ return getNodeMapper().getLexicalKeyByLoroId(treeId);
251
+ }
252
+ /**
253
+ * Get Lexical Node by Loro TreeID (using global mapper)
254
+ */
255
+ export function getLexicalNodeByLoroId(treeId, editorState) {
256
+ return getNodeMapper().getLexicalNodeByLoroId(treeId, editorState);
257
+ }
258
+ // createLexicalNodeFromLoro function is now imported from NodeFactory
@@ -0,0 +1,60 @@
1
+ import { TreeID, LoroTree } from 'loro-crdt';
2
+ import { DecoratorNode, UpdateListenerPayload, NodeKey, ElementNode } from 'lexical';
3
+ import { Binding } from '../Bindings';
4
+ /**
5
+ * DecoratorNode Propagator for Loro Tree Collaboration
6
+ *
7
+ * DecoratorNode characteristics:
8
+ * - Wraps arbitrary view (React components, DOM nodes, etc.)
9
+ * - Acts as opaque wrapper around external components
10
+ * - Cannot have children in the traditional sense
11
+ * - Renders through decorate() method which returns the view
12
+ * - Examples: Images, Videos, Tweets, Charts, Custom Widgets
13
+ */
14
+ export interface DecoratorNodeMutatorOptions {
15
+ binding: Binding;
16
+ tree: LoroTree;
17
+ peerId: number;
18
+ }
19
+ /**
20
+ * Create DecoratorNode in Loro tree
21
+ */
22
+ export declare function createDecoratorNodeInLoro(nodeKey: NodeKey, decoratorType: string, // 'image', 'video', 'tweet', 'chart', etc.
23
+ decoratorData: any, // The data needed to render the decorator
24
+ parentId?: TreeID, index?: number, metadata?: Record<string, any>, lexicalNodeJSON?: any, // JSON object from exportJSON()
25
+ options?: DecoratorNodeMutatorOptions): TreeID;
26
+ /**
27
+ * Update DecoratorNode in Loro tree
28
+ */
29
+ export declare function updateDecoratorNodeInLoro(nodeKey: NodeKey, decoratorType?: string, decoratorData?: any, parentId?: TreeID, index?: number, metadata?: Record<string, any>, lexicalNodeJSON?: any, // JSON object from exportJSON()
30
+ options?: DecoratorNodeMutatorOptions): void;
31
+ /**
32
+ * Delete DecoratorNode from Loro tree
33
+ */
34
+ export declare function deleteDecoratorNodeInLoro(nodeKey: NodeKey, options: DecoratorNodeMutatorOptions): void;
35
+ /**
36
+ * Create DecoratorNode in Lexical from Loro tree data
37
+ * Note: This is a generic implementation. In practice, you'd need
38
+ * specific decorator node classes for each type (ImageNode, VideoNode, etc.)
39
+ */
40
+ export declare function createDecoratorNodeFromLoro(treeId: TreeID, parentNode: ElementNode, index?: number, options?: DecoratorNodeMutatorOptions): DecoratorNode<any> | null;
41
+ /**
42
+ * Update DecoratorNode in Lexical from Loro tree data
43
+ */
44
+ export declare function updateDecoratorNodeFromLoro(treeId: TreeID, lexicalNode: DecoratorNode<any>, newParentNode?: ElementNode, newIndex?: number, options?: DecoratorNodeMutatorOptions): void;
45
+ /**
46
+ * Delete DecoratorNode from Lexical
47
+ */
48
+ export declare function deleteDecoratorNodeFromLoro(treeId: TreeID, lexicalNode: DecoratorNode<any>, options?: DecoratorNodeMutatorOptions): void;
49
+ /**
50
+ * Utility to check if a tree node represents a DecoratorNode
51
+ */
52
+ export declare function isDecoratorNodeInTree(treeId: TreeID, tree: LoroTree): boolean;
53
+ /**
54
+ * Get DecoratorNode data from Loro tree
55
+ */
56
+ export declare function getDecoratorNodeDataFromTree(treeId: TreeID, tree: LoroTree): any;
57
+ /**
58
+ * Main propagate method for DecoratorNode - propagates all mutation types
59
+ */
60
+ export declare function propagateDecoratorNode(update: UpdateListenerPayload, mutation: 'created' | 'updated' | 'destroyed', nodeKey: NodeKey, options: DecoratorNodeMutatorOptions): void;