@datalayer/lexical-loro 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +1 -1
  2. package/package.json +7 -7
  3. package/lib/App.d.ts +0 -2
  4. package/lib/App.js +0 -141
  5. package/lib/Editor.d.ts +0 -2
  6. package/lib/Editor.js +0 -111
  7. package/lib/Settings.d.ts +0 -2
  8. package/lib/Settings.js +0 -57
  9. package/lib/appSettings.d.ts +0 -36
  10. package/lib/appSettings.js +0 -44
  11. package/lib/collab/loro/Bindings.d.ts +0 -41
  12. package/lib/collab/loro/Bindings.js +0 -95
  13. package/lib/collab/loro/Debug.d.ts +0 -33
  14. package/lib/collab/loro/Debug.js +0 -448
  15. package/lib/collab/loro/LexicalCollaborationContext.d.ts +0 -19
  16. package/lib/collab/loro/LexicalCollaborationContext.js +0 -48
  17. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +0 -24
  18. package/lib/collab/loro/LexicalCollaborationPlugin.js +0 -83
  19. package/lib/collab/loro/State.d.ts +0 -53
  20. package/lib/collab/loro/State.js +0 -90
  21. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +0 -13
  22. package/lib/collab/loro/components/LoroCollaborationUI.js +0 -9
  23. package/lib/collab/loro/components/LoroCollaborators.d.ts +0 -8
  24. package/lib/collab/loro/components/LoroCollaborators.js +0 -97
  25. package/lib/collab/loro/components/index.d.ts +0 -2
  26. package/lib/collab/loro/components/index.js +0 -2
  27. package/lib/collab/loro/index.d.ts +0 -6
  28. package/lib/collab/loro/index.js +0 -6
  29. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +0 -14
  30. package/lib/collab/loro/integrators/BaseIntegrator.js +0 -1
  31. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +0 -23
  32. package/lib/collab/loro/integrators/CounterIntegrator.js +0 -40
  33. package/lib/collab/loro/integrators/ListIntegrator.d.ts +0 -23
  34. package/lib/collab/loro/integrators/ListIntegrator.js +0 -49
  35. package/lib/collab/loro/integrators/MapIntegrator.d.ts +0 -24
  36. package/lib/collab/loro/integrators/MapIntegrator.js +0 -177
  37. package/lib/collab/loro/integrators/TextIntegrator.d.ts +0 -25
  38. package/lib/collab/loro/integrators/TextIntegrator.js +0 -51
  39. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +0 -25
  40. package/lib/collab/loro/integrators/TreeIntegrator.js +0 -201
  41. package/lib/collab/loro/nodes/NodeFactory.d.ts +0 -8
  42. package/lib/collab/loro/nodes/NodeFactory.js +0 -105
  43. package/lib/collab/loro/nodes/NodesMapper.d.ts +0 -111
  44. package/lib/collab/loro/nodes/NodesMapper.js +0 -258
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +0 -60
  46. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +0 -302
  47. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +0 -62
  48. package/lib/collab/loro/propagators/ElementNodePropagator.js +0 -335
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +0 -57
  50. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +0 -196
  51. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +0 -55
  52. package/lib/collab/loro/propagators/RootNodePropagator.js +0 -168
  53. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +0 -60
  54. package/lib/collab/loro/propagators/TextNodePropagator.js +0 -434
  55. package/lib/collab/loro/propagators/index.d.ts +0 -49
  56. package/lib/collab/loro/propagators/index.js +0 -32
  57. package/lib/collab/loro/provider/websocket.d.ts +0 -116
  58. package/lib/collab/loro/provider/websocket.js +0 -907
  59. package/lib/collab/loro/servers/index.d.ts +0 -0
  60. package/lib/collab/loro/servers/index.js +0 -0
  61. package/lib/collab/loro/servers/ws/callback.d.ts +0 -5
  62. package/lib/collab/loro/servers/ws/callback.js +0 -85
  63. package/lib/collab/loro/servers/ws/server.d.ts +0 -2
  64. package/lib/collab/loro/servers/ws/server.js +0 -25
  65. package/lib/collab/loro/servers/ws/utils.d.ts +0 -40
  66. package/lib/collab/loro/servers/ws/utils.js +0 -513
  67. package/lib/collab/loro/sync/SyncCursors.d.ts +0 -32
  68. package/lib/collab/loro/sync/SyncCursors.js +0 -435
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +0 -4
  70. package/lib/collab/loro/sync/SyncLexicalToLoro.js +0 -80
  71. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +0 -5
  72. package/lib/collab/loro/sync/SyncLoroToLexical.js +0 -96
  73. package/lib/collab/loro/types/LexicalNodeData.d.ts +0 -32
  74. package/lib/collab/loro/types/LexicalNodeData.js +0 -71
  75. package/lib/collab/loro/useCollaboration.d.ts +0 -12
  76. package/lib/collab/loro/useCollaboration.js +0 -248
  77. package/lib/collab/loro/utils/InitialContent.d.ts +0 -64
  78. package/lib/collab/loro/utils/InitialContent.js +0 -109
  79. package/lib/collab/loro/utils/LexicalToLoro.d.ts +0 -18
  80. package/lib/collab/loro/utils/LexicalToLoro.js +0 -96
  81. package/lib/collab/loro/utils/Utils.d.ts +0 -44
  82. package/lib/collab/loro/utils/Utils.js +0 -153
  83. package/lib/collab/loro/wsProvider.d.ts +0 -8
  84. package/lib/collab/loro/wsProvider.js +0 -31
  85. package/lib/collab/utils/invariant.d.ts +0 -1
  86. package/lib/collab/utils/invariant.js +0 -11
  87. package/lib/collab/utils/simpleDiffWithCursor.d.ts +0 -5
  88. package/lib/collab/utils/simpleDiffWithCursor.js +0 -31
  89. package/lib/collab/yjs/Bindings.d.ts +0 -23
  90. package/lib/collab/yjs/Bindings.js +0 -26
  91. package/lib/collab/yjs/Debug.d.ts +0 -23
  92. package/lib/collab/yjs/Debug.js +0 -213
  93. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +0 -10
  94. package/lib/collab/yjs/LexicalCollaborationContext.js +0 -37
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +0 -21
  96. package/lib/collab/yjs/LexicalCollaborationPlugin.js +0 -63
  97. package/lib/collab/yjs/State.d.ts +0 -51
  98. package/lib/collab/yjs/State.js +0 -35
  99. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +0 -5
  100. package/lib/collab/yjs/nodes/AnyCollabNode.js +0 -1
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +0 -22
  102. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +0 -64
  103. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +0 -40
  104. package/lib/collab/yjs/nodes/CollabElementNode.js +0 -462
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +0 -19
  106. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +0 -44
  107. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +0 -25
  108. package/lib/collab/yjs/nodes/CollabTextNode.js +0 -103
  109. package/lib/collab/yjs/provider/websocket.d.ts +0 -88
  110. package/lib/collab/yjs/provider/websocket.js +0 -415
  111. package/lib/collab/yjs/servers/index.d.ts +0 -0
  112. package/lib/collab/yjs/servers/index.js +0 -0
  113. package/lib/collab/yjs/servers/ws/callback.d.ts +0 -5
  114. package/lib/collab/yjs/servers/ws/callback.js +0 -72
  115. package/lib/collab/yjs/servers/ws/server.d.ts +0 -2
  116. package/lib/collab/yjs/servers/ws/server.js +0 -25
  117. package/lib/collab/yjs/servers/ws/utils.d.ts +0 -49
  118. package/lib/collab/yjs/servers/ws/utils.js +0 -284
  119. package/lib/collab/yjs/sync/SyncCursors.d.ts +0 -39
  120. package/lib/collab/yjs/sync/SyncCursors.js +0 -351
  121. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +0 -10
  122. package/lib/collab/yjs/sync/SyncEditorStates.js +0 -200
  123. package/lib/collab/yjs/useCollaboration.d.ts +0 -12
  124. package/lib/collab/yjs/useCollaboration.js +0 -255
  125. package/lib/collab/yjs/utils/Utils.d.ts +0 -25
  126. package/lib/collab/yjs/utils/Utils.js +0 -402
  127. package/lib/collab/yjs/wsProvider.d.ts +0 -3
  128. package/lib/collab/yjs/wsProvider.js +0 -21
  129. package/lib/commenting/index.d.ts +0 -41
  130. package/lib/commenting/index.js +0 -324
  131. package/lib/context/FlashMessageContext.d.ts +0 -7
  132. package/lib/context/FlashMessageContext.js +0 -24
  133. package/lib/context/SettingsContext.d.ts +0 -12
  134. package/lib/context/SettingsContext.js +0 -38
  135. package/lib/context/SharedHistoryContext.d.ts +0 -11
  136. package/lib/context/SharedHistoryContext.js +0 -11
  137. package/lib/context/ToolbarContext.d.ts +0 -65
  138. package/lib/context/ToolbarContext.js +0 -84
  139. package/lib/demo.d.ts +0 -12
  140. package/lib/demo.js +0 -41
  141. package/lib/hooks/useFlashMessage.d.ts +0 -2
  142. package/lib/hooks/useFlashMessage.js +0 -4
  143. package/lib/hooks/useModal.d.ts +0 -5
  144. package/lib/hooks/useModal.js +0 -26
  145. package/lib/hooks/useReport.d.ts +0 -1
  146. package/lib/hooks/useReport.js +0 -46
  147. package/lib/index.d.ts +0 -1
  148. package/lib/index.js +0 -1
  149. package/lib/nodes/AutocompleteNode.d.ts +0 -27
  150. package/lib/nodes/AutocompleteNode.js +0 -56
  151. package/lib/nodes/CounterComponent.d.ts +0 -6
  152. package/lib/nodes/CounterComponent.js +0 -137
  153. package/lib/nodes/CounterNode.d.ts +0 -23
  154. package/lib/nodes/CounterNode.js +0 -47
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +0 -8
  156. package/lib/nodes/DateTimeNode/DateTimeComponent.js +0 -119
  157. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +0 -27
  158. package/lib/nodes/DateTimeNode/DateTimeNode.js +0 -82
  159. package/lib/nodes/EmojiNode.d.ts +0 -18
  160. package/lib/nodes/EmojiNode.js +0 -50
  161. package/lib/nodes/EquationComponent.d.ts +0 -9
  162. package/lib/nodes/EquationComponent.js +0 -75
  163. package/lib/nodes/EquationNode.d.ts +0 -26
  164. package/lib/nodes/EquationNode.js +0 -109
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +0 -8
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +0 -110
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +0 -50
  168. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +0 -55
  169. package/lib/nodes/ExcalidrawNode/index.d.ts +0 -32
  170. package/lib/nodes/ExcalidrawNode/index.js +0 -117
  171. package/lib/nodes/FigmaNode.d.ts +0 -20
  172. package/lib/nodes/FigmaNode.js +0 -52
  173. package/lib/nodes/ImageComponent.d.ts +0 -16
  174. package/lib/nodes/ImageComponent.js +0 -272
  175. package/lib/nodes/ImageNode.d.ts +0 -50
  176. package/lib/nodes/ImageNode.js +0 -151
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +0 -26
  178. package/lib/nodes/InlineImageNode/InlineImageComponent.js +0 -161
  179. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +0 -59
  180. package/lib/nodes/InlineImageNode/InlineImageNode.js +0 -162
  181. package/lib/nodes/KeywordNode.d.ts +0 -14
  182. package/lib/nodes/KeywordNode.js +0 -33
  183. package/lib/nodes/LayoutContainerNode.d.ts +0 -24
  184. package/lib/nodes/LayoutContainerNode.js +0 -91
  185. package/lib/nodes/LayoutItemNode.d.ts +0 -16
  186. package/lib/nodes/LayoutItemNode.js +0 -65
  187. package/lib/nodes/MentionNode.d.ts +0 -20
  188. package/lib/nodes/MentionNode.js +0 -81
  189. package/lib/nodes/PageBreakNode/index.d.ts +0 -17
  190. package/lib/nodes/PageBreakNode/index.js +0 -83
  191. package/lib/nodes/PlaygroundNodes.d.ts +0 -3
  192. package/lib/nodes/PlaygroundNodes.js +0 -71
  193. package/lib/nodes/PollComponent.d.ts +0 -9
  194. package/lib/nodes/PollComponent.js +0 -85
  195. package/lib/nodes/PollNode.d.ts +0 -43
  196. package/lib/nodes/PollNode.js +0 -153
  197. package/lib/nodes/SpecialTextNode.d.ts +0 -24
  198. package/lib/nodes/SpecialTextNode.js +0 -50
  199. package/lib/nodes/StickyComponent.d.ts +0 -10
  200. package/lib/nodes/StickyComponent.js +0 -162
  201. package/lib/nodes/StickyNode.d.ts +0 -31
  202. package/lib/nodes/StickyNode.js +0 -76
  203. package/lib/nodes/TweetNode.d.ts +0 -21
  204. package/lib/nodes/TweetNode.js +0 -119
  205. package/lib/nodes/YouTubeNode.d.ts +0 -22
  206. package/lib/nodes/YouTubeNode.js +0 -84
  207. package/lib/plugins/ActionsPlugin/index.d.ts +0 -5
  208. package/lib/plugins/ActionsPlugin/index.js +0 -168
  209. package/lib/plugins/AutoEmbedPlugin/index.d.ts +0 -19
  210. package/lib/plugins/AutoEmbedPlugin/index.js +0 -158
  211. package/lib/plugins/AutoLinkPlugin/index.d.ts +0 -2
  212. package/lib/plugins/AutoLinkPlugin/index.js +0 -15
  213. package/lib/plugins/AutocompletePlugin/index.d.ts +0 -10
  214. package/lib/plugins/AutocompletePlugin/index.js +0 -2473
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -7
  216. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -42
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -17
  218. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -111
  219. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +0 -5
  220. package/lib/plugins/CodeActionMenuPlugin/index.js +0 -104
  221. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  222. package/lib/plugins/CodeActionMenuPlugin/utils.js +0 -18
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +0 -2
  224. package/lib/plugins/CodeHighlightPrismPlugin/index.js +0 -10
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +0 -2
  226. package/lib/plugins/CodeHighlightShikiPlugin/index.js +0 -10
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +0 -25
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +0 -131
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +0 -16
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +0 -79
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +0 -16
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +0 -81
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +0 -2
  234. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +0 -8
  235. package/lib/plugins/CollapsiblePlugin/index.d.ts +0 -3
  236. package/lib/plugins/CollapsiblePlugin/index.js +0 -128
  237. package/lib/plugins/CommentPlugin/index.d.ts +0 -9
  238. package/lib/plugins/CommentPlugin/index.js +0 -460
  239. package/lib/plugins/ComponentPickerPlugin/index.d.ts +0 -2
  240. package/lib/plugins/ComponentPickerPlugin/index.js +0 -276
  241. package/lib/plugins/ContextMenuPlugin/index.d.ts +0 -2
  242. package/lib/plugins/ContextMenuPlugin/index.js +0 -112
  243. package/lib/plugins/CounterPlugin/index.d.ts +0 -3
  244. package/lib/plugins/CounterPlugin/index.js +0 -20
  245. package/lib/plugins/DatalayerPlugin/index.d.ts +0 -2
  246. package/lib/plugins/DatalayerPlugin/index.js +0 -218
  247. package/lib/plugins/DateTimePlugin/index.d.ts +0 -8
  248. package/lib/plugins/DateTimePlugin/index.js +0 -24
  249. package/lib/plugins/DocsPlugin/index.d.ts +0 -2
  250. package/lib/plugins/DocsPlugin/index.js +0 -4
  251. package/lib/plugins/DragDropPastePlugin/index.d.ts +0 -1
  252. package/lib/plugins/DragDropPastePlugin/index.js +0 -33
  253. package/lib/plugins/DraggableBlockPlugin/index.d.ts +0 -12
  254. package/lib/plugins/DraggableBlockPlugin/index.js +0 -36
  255. package/lib/plugins/EmojiPickerPlugin/index.d.ts +0 -1
  256. package/lib/plugins/EmojiPickerPlugin/index.js +0 -80
  257. package/lib/plugins/EmojisPlugin/index.d.ts +0 -2
  258. package/lib/plugins/EmojisPlugin/index.js +0 -52
  259. package/lib/plugins/EquationsPlugin/index.d.ts +0 -14
  260. package/lib/plugins/EquationsPlugin/index.js +0 -34
  261. package/lib/plugins/ExcalidrawPlugin/index.d.ts +0 -5
  262. package/lib/plugins/ExcalidrawPlugin/index.js +0 -44
  263. package/lib/plugins/FigmaPlugin/index.d.ts +0 -4
  264. package/lib/plugins/FigmaPlugin/index.js +0 -20
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -15
  266. package/lib/plugins/FloatingLinkEditorPlugin/index.js +0 -280
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -7
  268. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +0 -219
  269. package/lib/plugins/ImagesPlugin/index.d.ts +0 -24
  270. package/lib/plugins/ImagesPlugin/index.js +0 -195
  271. package/lib/plugins/InlineImagePlugin/index.d.ts +0 -17
  272. package/lib/plugins/InlineImagePlugin/index.js +0 -180
  273. package/lib/plugins/KeywordsPlugin/index.d.ts +0 -2
  274. package/lib/plugins/KeywordsPlugin/index.js +0 -31
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +0 -6
  276. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +0 -21
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +0 -7
  278. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +0 -131
  279. package/lib/plugins/LinkPlugin/index.d.ts +0 -6
  280. package/lib/plugins/LinkPlugin/index.js +0 -11
  281. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +0 -2
  282. package/lib/plugins/MarkdownShortcutPlugin/index.js +0 -6
  283. package/lib/plugins/MarkdownTransformers/index.d.ts +0 -8
  284. package/lib/plugins/MarkdownTransformers/index.js +0 -234
  285. package/lib/plugins/MaxLengthPlugin/index.d.ts +0 -3
  286. package/lib/plugins/MaxLengthPlugin/index.js +0 -37
  287. package/lib/plugins/MentionsPlugin/index.d.ts +0 -2
  288. package/lib/plugins/MentionsPlugin/index.js +0 -564
  289. package/lib/plugins/PageBreakPlugin/index.d.ts +0 -4
  290. package/lib/plugins/PageBreakPlugin/index.js +0 -27
  291. package/lib/plugins/PasteLogPlugin/index.d.ts +0 -2
  292. package/lib/plugins/PasteLogPlugin/index.js +0 -27
  293. package/lib/plugins/PollPlugin/index.d.ts +0 -8
  294. package/lib/plugins/PollPlugin/index.js +0 -38
  295. package/lib/plugins/ShortcutsPlugin/index.d.ts +0 -6
  296. package/lib/plugins/ShortcutsPlugin/index.js +0 -112
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +0 -59
  298. package/lib/plugins/ShortcutsPlugin/shortcuts.js +0 -169
  299. package/lib/plugins/SpecialTextPlugin/index.d.ts +0 -2
  300. package/lib/plugins/SpecialTextPlugin/index.js +0 -46
  301. package/lib/plugins/SpeechToTextPlugin/index.d.ts +0 -5
  302. package/lib/plugins/SpeechToTextPlugin/index.js +0 -82
  303. package/lib/plugins/StickyPlugin/index.d.ts +0 -2
  304. package/lib/plugins/StickyPlugin/index.js +0 -12
  305. package/lib/plugins/TabFocusPlugin/index.d.ts +0 -1
  306. package/lib/plugins/TabFocusPlugin/index.js +0 -34
  307. package/lib/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  308. package/lib/plugins/TableActionMenuPlugin/index.js +0 -492
  309. package/lib/plugins/TableCellResizer/index.d.ts +0 -3
  310. package/lib/plugins/TableCellResizer/index.js +0 -297
  311. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +0 -4
  312. package/lib/plugins/TableHoverActionsPlugin/index.js +0 -188
  313. package/lib/plugins/TableOfContentsPlugin/index.d.ts +0 -2
  314. package/lib/plugins/TableOfContentsPlugin/index.js +0 -116
  315. package/lib/plugins/TablePlugin.d.ts +0 -31
  316. package/lib/plugins/TablePlugin.js +0 -63
  317. package/lib/plugins/TestRecorderPlugin/index.d.ts +0 -3
  318. package/lib/plugins/TestRecorderPlugin/index.js +0 -346
  319. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +0 -9
  320. package/lib/plugins/ToolbarPlugin/fontSize.js +0 -80
  321. package/lib/plugins/ToolbarPlugin/index.d.ts +0 -9
  322. package/lib/plugins/ToolbarPlugin/index.js +0 -500
  323. package/lib/plugins/ToolbarPlugin/utils.d.ts +0 -26
  324. package/lib/plugins/ToolbarPlugin/utils.js +0 -243
  325. package/lib/plugins/TreeViewPlugin/index.d.ts +0 -2
  326. package/lib/plugins/TreeViewPlugin/index.js +0 -7
  327. package/lib/plugins/TwitterPlugin/index.d.ts +0 -4
  328. package/lib/plugins/TwitterPlugin/index.js +0 -20
  329. package/lib/plugins/TypingPerfPlugin/index.d.ts +0 -2
  330. package/lib/plugins/TypingPerfPlugin/index.js +0 -93
  331. package/lib/plugins/YouTubePlugin/index.d.ts +0 -4
  332. package/lib/plugins/YouTubePlugin/index.js +0 -20
  333. package/lib/server/validation.d.ts +0 -1
  334. package/lib/server/validation.js +0 -111
  335. package/lib/setupEnv.d.ts +0 -2
  336. package/lib/setupEnv.js +0 -25
  337. package/lib/themes/CommentEditorTheme.d.ts +0 -4
  338. package/lib/themes/CommentEditorTheme.js +0 -7
  339. package/lib/themes/PlaygroundEditorTheme.d.ts +0 -4
  340. package/lib/themes/PlaygroundEditorTheme.js +0 -120
  341. package/lib/themes/StickyEditorTheme.d.ts +0 -4
  342. package/lib/themes/StickyEditorTheme.js +0 -7
  343. package/lib/tyes.dt.d.ts +0 -12
  344. package/lib/tyes.dt.js +0 -0
  345. package/lib/ui/Button.d.ts +0 -12
  346. package/lib/ui/Button.js +0 -6
  347. package/lib/ui/ColorPicker.d.ts +0 -14
  348. package/lib/ui/ColorPicker.js +0 -219
  349. package/lib/ui/ContentEditable.d.ts +0 -9
  350. package/lib/ui/ContentEditable.js +0 -6
  351. package/lib/ui/Dialog.d.ts +0 -10
  352. package/lib/ui/Dialog.js +0 -8
  353. package/lib/ui/DropDown.d.ts +0 -18
  354. package/lib/ui/DropDown.js +0 -133
  355. package/lib/ui/DropdownColorPicker.d.ts +0 -13
  356. package/lib/ui/DropdownColorPicker.js +0 -6
  357. package/lib/ui/EquationEditor.d.ts +0 -8
  358. package/lib/ui/EquationEditor.js +0 -11
  359. package/lib/ui/ExcalidrawModal.d.ts +0 -42
  360. package/lib/ui/ExcalidrawModal.js +0 -103
  361. package/lib/ui/FileInput.d.ts +0 -10
  362. package/lib/ui/FileInput.js +0 -5
  363. package/lib/ui/FlashMessage.d.ts +0 -7
  364. package/lib/ui/FlashMessage.js +0 -6
  365. package/lib/ui/ImageResizer.d.ts +0 -17
  366. package/lib/ui/ImageResizer.js +0 -171
  367. package/lib/ui/KatexEquationAlterer.d.ts +0 -8
  368. package/lib/ui/KatexEquationAlterer.js +0 -23
  369. package/lib/ui/KatexRenderer.d.ts +0 -6
  370. package/lib/ui/KatexRenderer.js +0 -24
  371. package/lib/ui/Modal.d.ts +0 -9
  372. package/lib/ui/Modal.js +0 -48
  373. package/lib/ui/Select.d.ts +0 -8
  374. package/lib/ui/Select.js +0 -5
  375. package/lib/ui/Switch.d.ts +0 -8
  376. package/lib/ui/Switch.js +0 -6
  377. package/lib/ui/TextInput.d.ts +0 -13
  378. package/lib/ui/TextInput.js +0 -7
  379. package/lib/utils/docSerialization.d.ts +0 -3
  380. package/lib/utils/docSerialization.js +0 -56
  381. package/lib/utils/emoji-list.d.ts +0 -20
  382. package/lib/utils/emoji-list.js +0 -16605
  383. package/lib/utils/getDOMRangeRect.d.ts +0 -8
  384. package/lib/utils/getDOMRangeRect.js +0 -22
  385. package/lib/utils/getSelectedNode.d.ts +0 -2
  386. package/lib/utils/getSelectedNode.js +0 -24
  387. package/lib/utils/getThemeSelector.d.ts +0 -2
  388. package/lib/utils/getThemeSelector.js +0 -10
  389. package/lib/utils/isMobileWidth.d.ts +0 -7
  390. package/lib/utils/isMobileWidth.js +0 -7
  391. package/lib/utils/joinClasses.d.ts +0 -1
  392. package/lib/utils/joinClasses.js +0 -3
  393. package/lib/utils/setFloatingElemPosition.d.ts +0 -1
  394. package/lib/utils/setFloatingElemPosition.js +0 -55
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -1
  396. package/lib/utils/setFloatingElemPositionForLinkEditor.js +0 -32
  397. package/lib/utils/swipe.d.ts +0 -4
  398. package/lib/utils/swipe.js +0 -90
  399. package/lib/utils/url.d.ts +0 -2
  400. package/lib/utils/url.js +0 -27
@@ -1,53 +0,0 @@
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;
@@ -1,90 +0,0 @@
1
- import { createCommand } from 'lexical';
2
- import { UndoManager } from 'loro-crdt';
3
- export const CONNECTED_COMMAND = createCommand('CONNECTED_COMMAND');
4
- export const TOGGLE_CONNECT_COMMAND = createCommand('TOGGLE_CONNECT_COMMAND');
5
- export function createUndoManager(binding) {
6
- // Create Loro UndoManager with configuration
7
- const undoManager = new UndoManager(binding.doc, {
8
- mergeInterval: 1000, // Merge operations within 1 second
9
- maxUndoSteps: 100, // Keep up to 100 undo steps
10
- excludeOriginPrefixes: ['collab-', 'sync-'], // Exclude collaboration operations
11
- /*
12
- onPush: (isUndo, counterRange, event) => {
13
- // Save cursor positions when adding to undo stack
14
- const selection = binding.editor.getEditorState().read(() => {
15
- return binding.editor.getEditorState()._selection;
16
- });
17
- // Get cursors for the current state
18
- const cursors: Cursor[] = [];
19
- if (selection) {
20
- // TODO: Convert Lexical selection to Loro cursors
21
- // This would need to be implemented based on the specific selection format
22
- }
23
- return {
24
- value: binding.doc.toJSON(), // Save document state
25
- cursors: cursors
26
- };
27
- },
28
- onPop: (isUndo, metadata, counterRange) => {
29
- // Restore cursor positions when undoing/redoing
30
- if (metadata?.cursors && metadata.cursors.length > 0) {
31
- binding.editor.update(() => {
32
- // TODO: Restore selection state from cursors
33
- // This would need to convert Loro cursors back to Lexical selection
34
- });
35
- }
36
- }
37
- */
38
- });
39
- return undoManager;
40
- }
41
- export function initLocalState(provider, name, color, focusing, awarenessData) {
42
- provider.awareness.setLocalState({
43
- anchorPos: null,
44
- awarenessData,
45
- color,
46
- focusPos: null,
47
- focusing,
48
- name,
49
- });
50
- }
51
- export function setLocalStateFocus(provider, name, color, focusing, awarenessData) {
52
- const { awareness } = provider;
53
- let localState = awareness.getLocalState();
54
- if (localState === null) {
55
- localState = {
56
- anchorPos: null,
57
- awarenessData,
58
- color,
59
- focusPos: null,
60
- focusing: focusing,
61
- name,
62
- };
63
- }
64
- // Always update name and color in case they changed
65
- localState.name = name;
66
- localState.color = color;
67
- localState.focusing = focusing;
68
- awareness.setLocalState(localState);
69
- }
70
- export function updateLocalStateName(provider, name, color) {
71
- const { awareness } = provider;
72
- let localState = awareness.getLocalState();
73
- if (localState === null) {
74
- // Initialize with the new name if no state exists
75
- localState = {
76
- anchorPos: null,
77
- awarenessData: {},
78
- color,
79
- focusPos: null,
80
- focusing: false,
81
- name,
82
- };
83
- }
84
- else {
85
- // Update existing state with new name and color
86
- localState.name = name;
87
- localState.color = color;
88
- }
89
- awareness.setLocalState(localState);
90
- }
@@ -1,13 +0,0 @@
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;
@@ -1,9 +0,0 @@
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;
@@ -1,8 +0,0 @@
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;
@@ -1,97 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- export function LoroCollaborators({ binding, currentUserName = 'Me', currentUserColor = '#007acc' }) {
4
- // Force re-render when cursors change
5
- const [updateTrigger, setUpdateTrigger] = useState(0);
6
- // Monitor cursors map changes
7
- useEffect(() => {
8
- const interval = setInterval(() => {
9
- setUpdateTrigger(prev => prev + 1);
10
- }, 1000); // Check for updates every second
11
- return () => clearInterval(interval);
12
- }, []);
13
- // Get current user's client ID
14
- const currentClientID = binding.clientID;
15
- // Debug: Log cursor information
16
- const allCursorsDebug = Array.from(binding.cursors.entries()).map(([id, cursor]) => ({
17
- clientId: id,
18
- name: cursor.name,
19
- color: cursor.color,
20
- isCurrentUser: id === currentClientID
21
- }));
22
- // Get all collaborators including current user
23
- const allCollaborators = Array.from(binding.cursors.entries())
24
- .map(([clientId, cursor]) => ({ clientId, cursor, isCurrentUser: clientId === currentClientID }));
25
- // Get current user's cursor if it exists
26
- const currentUserCursor = binding.cursors.get(currentClientID);
27
- const currentDisplayColor = currentUserCursor?.color || currentUserColor;
28
- const currentDisplayName = currentUserCursor?.name || currentUserName;
29
- // Separate current user and others for display order (current user first)
30
- const currentUserData = allCollaborators.find(({ isCurrentUser }) => isCurrentUser);
31
- const otherCollaborators = allCollaborators.filter(({ isCurrentUser }) => !isCurrentUser);
32
- return (_jsxs("div", { style: {
33
- display: 'flex',
34
- alignItems: 'center',
35
- padding: '8px 12px',
36
- backgroundColor: '#f8f9fa',
37
- borderBottom: '1px solid #e1e5e9',
38
- fontSize: '14px',
39
- fontFamily: 'system-ui, -apple-system, sans-serif',
40
- gap: '8px',
41
- flexWrap: 'wrap'
42
- }, 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: {
43
- width: '1px',
44
- height: '20px',
45
- backgroundColor: '#d1d5db',
46
- margin: '0 4px'
47
- } })), otherCollaborators.map(({ clientId, cursor }) => (_jsx(CollaboratorBadge, { name: cursor.name, color: cursor.color, isCurrentUser: false, clientId: clientId }, clientId))), otherCollaborators.length === 0 && (_jsx("span", { style: {
48
- color: '#6b7280',
49
- fontStyle: 'italic',
50
- marginLeft: '8px'
51
- }, children: "No other collaborators" }))] }));
52
- }
53
- function CollaboratorBadge({ name, color, isCurrentUser, clientId }) {
54
- // Convert color to rgba for transparency when current user
55
- const getColorWithOpacity = (color, opacity = 1) => {
56
- // If it's a hex color, convert to rgba
57
- if (color.startsWith('#')) {
58
- const hex = color.slice(1);
59
- const r = parseInt(hex.slice(0, 2), 16);
60
- const g = parseInt(hex.slice(2, 4), 16);
61
- const b = parseInt(hex.slice(4, 6), 16);
62
- return `rgba(${r}, ${g}, ${b}, ${opacity})`;
63
- }
64
- // If it's already rgba or rgb, just return as is (basic support)
65
- return color;
66
- };
67
- const circleColor = isCurrentUser ? getColorWithOpacity(color, 0.1) : color;
68
- const badgeColor = isCurrentUser ? getColorWithOpacity(color, 0.1) : color;
69
- return (_jsxs("div", { style: {
70
- display: 'flex',
71
- alignItems: 'center',
72
- gap: '6px'
73
- }, title: `${name} (Client ID: ${clientId})`, children: [_jsx("div", { style: {
74
- width: '12px',
75
- height: '12px',
76
- borderRadius: '50%',
77
- backgroundColor: circleColor,
78
- border: isCurrentUser ? '2px solid #ffffff' : 'none',
79
- boxShadow: isCurrentUser ? '0 0 0 1px #d1d5db' : 'none',
80
- flexShrink: 0
81
- } }), _jsx("span", { style: {
82
- backgroundColor: badgeColor,
83
- color: '#ffffff',
84
- padding: '3px 8px',
85
- borderRadius: '12px',
86
- fontSize: '12px',
87
- fontWeight: '500',
88
- lineHeight: '1.2',
89
- whiteSpace: 'nowrap',
90
- textShadow: '0 1px 2px rgba(0,0,0,0.1)',
91
- boxShadow: isCurrentUser
92
- ? '0 1px 3px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.2)'
93
- : '0 1px 2px rgba(0,0,0,0.1)',
94
- opacity: isCurrentUser ? 0.9 : 1
95
- }, children: name })] }));
96
- }
97
- export default LoroCollaborators;
@@ -1,2 +0,0 @@
1
- export { LoroCollaborators, type LoroCollaboratorsProps } from './LoroCollaborators';
2
- export { LoroCollaborationUI, type LoroCollaborationUIProps } from './LoroCollaborationUI';
@@ -1,2 +0,0 @@
1
- export { LoroCollaborators } from './LoroCollaborators';
2
- export { LoroCollaborationUI } from './LoroCollaborationUI';
@@ -1,6 +0,0 @@
1
- export * from './Bindings';
2
- export * from './LexicalCollaborationContext';
3
- export * from './LexicalCollaborationPlugin';
4
- export * from './State';
5
- export * from './useCollaboration';
6
- export * from './wsProvider';
@@ -1,6 +0,0 @@
1
- export * from './Bindings';
2
- export * from './LexicalCollaborationContext';
3
- export * from './LexicalCollaborationPlugin';
4
- export * from './State';
5
- export * from './useCollaboration';
6
- export * from './wsProvider';
@@ -1,14 +0,0 @@
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
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +0,0 @@
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 {};
@@ -1,40 +0,0 @@
1
- /**
2
- * Handles counter changes (increment/decrement operations)
3
- */
4
- export class CounterIntegrator {
5
- integrate(diff, binding, provider) {
6
- this.integrateInternal(diff, binding, provider);
7
- }
8
- // Internal method for use when already inside editor.update()
9
- integrateInternal(diff, binding, provider) {
10
- if (diff.increment !== undefined) {
11
- this.integrateIncrement(diff.increment, binding, provider);
12
- }
13
- if (diff.value !== undefined) {
14
- this.integrateSetValue(diff.value, binding, provider);
15
- }
16
- }
17
- integrateIncrement(increment, binding, provider) {
18
- // Counter operations in Lexical context might be used for:
19
- // - Version numbers
20
- // - Reference counts
21
- // - Numeric properties in nodes
22
- // - Analytics or tracking data
23
- // For now, this is a placeholder since counters are not commonly
24
- // used in basic text editing scenarios
25
- }
26
- integrateSetValue(value, binding, provider) {
27
- // Similar to increment, the specific implementation would depend
28
- // on what the counter represents in the document structure
29
- }
30
- /**
31
- * Helper method to update a counter property in a specific node
32
- * This would be used when counters are associated with particular nodes
33
- */
34
- updateNodeCounter(nodeKey, counterName, operation, value, binding) {
35
- // This is a hypothetical implementation
36
- // Real usage would depend on how counters are integrated into the document model
37
- // In practice, this might update metadata or special numeric properties
38
- // associated with Lexical nodes
39
- }
40
- }
@@ -1,23 +0,0 @@
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 {};
@@ -1,49 +0,0 @@
1
- /**
2
- * Handles list changes (insertions, deletions, moves in ordered structures)
3
- */
4
- export class ListIntegrator {
5
- integrate(diff, binding, provider) {
6
- console.log('📋 Handling ListDiff:', diff);
7
- this.integrateInternal(diff, binding, provider);
8
- }
9
- // Internal method for use when already inside editor.update()
10
- integrateInternal(diff, binding, provider) {
11
- if (diff.diff) {
12
- diff.diff.forEach((change) => {
13
- switch (change.type) {
14
- case 'insert':
15
- this.integrateInsert(change, binding, provider);
16
- break;
17
- case 'delete':
18
- this.integrateDelete(change, binding, provider);
19
- break;
20
- case 'retain':
21
- this.integrateRetain(change, binding, provider);
22
- break;
23
- default:
24
- console.warn(`📋 Unknown list change type: ${change.type}`);
25
- }
26
- });
27
- }
28
- }
29
- integrateInsert(change, binding, provider) {
30
- // This typically represents insertion of child nodes in an ElementNode
31
- // The actual node creation should be integrated by TreeIntegrator
32
- // This integrater focuses on the ordering and position updates
33
- // For now, log the operation - specific implementation would depend on
34
- // the context of which list/container this change applies to
35
- }
36
- integrateDelete(change, binding, provider) {
37
- // This typically represents removal of child nodes from an ElementNode
38
- // The actual node deletion should be integrated by TreeIntegrator
39
- // This integrater focuses on the ordering and position updates
40
- }
41
- integrateRetain(change, binding, provider) {
42
- // Retain operations typically don't require action in Lexical
43
- // They represent portions of the list that remain unchanged
44
- if (change.attributes) {
45
- console.log(`📋 List retain with attributes at ${change.index}, length: ${change.length}`, change.attributes);
46
- // Handle any attribute changes if needed
47
- }
48
- }
49
- }
@@ -1,24 +0,0 @@
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 {};
@@ -1,177 +0,0 @@
1
- import { $getNodeByKey } from 'lexical';
2
- import { $diffTextContentAndApplyDelta } from '../utils/Utils';
3
- /**
4
- * Handles map data changes (node properties, metadata updates)
5
- */
6
- export class MapIntegrator {
7
- integrate(diff, binding, provider) {
8
- // Handle updated properties
9
- if (diff.updated) {
10
- Object.entries(diff.updated).forEach(([key, value]) => {
11
- this.integratePropertyUpdate(key, value, binding, provider);
12
- });
13
- }
14
- // Handle deleted properties
15
- if (diff.deleted) {
16
- diff.deleted.forEach((key) => {
17
- this.integratePropertyDelete(key, binding, provider);
18
- });
19
- }
20
- }
21
- // Enhanced integrate method with TreeID context
22
- integrateWithContext(diff, treeId, binding, provider) {
23
- this.integrateWithContextInternal(diff, treeId, binding, provider);
24
- }
25
- // Internal method for use when already inside editor.update()
26
- integrateInternal(diff, binding, provider) {
27
- // Handle updated properties
28
- if (diff.updated) {
29
- Object.entries(diff.updated).forEach(([key, value]) => {
30
- this.integratePropertyUpdate(key, value, binding, provider);
31
- });
32
- }
33
- // Handle deleted properties
34
- if (diff.deleted) {
35
- diff.deleted.forEach((key) => {
36
- this.integratePropertyDelete(key, binding, provider);
37
- });
38
- }
39
- }
40
- // Internal method for use when already inside editor.update() with context
41
- integrateWithContextInternal(diff, treeId, binding, provider) {
42
- // Handle updated properties with TreeID context
43
- if (diff.updated) {
44
- Object.entries(diff.updated).forEach(([key, value]) => {
45
- this.integratePropertyUpdateWithContextInternal(key, value, treeId, binding, provider);
46
- });
47
- }
48
- // Handle deleted properties
49
- if (diff.deleted) {
50
- diff.deleted.forEach((key) => {
51
- this.integratePropertyDelete(key, binding, provider);
52
- });
53
- }
54
- }
55
- integratePropertyUpdateWithContext(key, value, treeId, binding, provider) {
56
- // Handle specific property updates with TreeID context
57
- switch (key) {
58
- case 'lexical':
59
- this.integrateLexicalDataUpdateWithContext(value, treeId, binding);
60
- break;
61
- case 'textContent':
62
- // Text content updates should be integrated via lexical data updates
63
- break;
64
- case 'elementType':
65
- // Element type changes are rare, mostly for debugging
66
- break;
67
- default:
68
- //
69
- }
70
- }
71
- // Internal version for use when already inside editor.update()
72
- integratePropertyUpdateWithContextInternal(key, value, treeId, binding, provider) {
73
- // Handle specific property updates with TreeID context
74
- switch (key) {
75
- case 'lexical':
76
- // Extract TreeID and call internal method directly (already inside editor.update())
77
- let actualTreeID = treeId;
78
- if (typeof treeId === 'string' && treeId.startsWith('cid:')) {
79
- const parts = treeId.split(':');
80
- if (parts.length >= 3) {
81
- actualTreeID = parts[1];
82
- }
83
- }
84
- const lexicalKey = binding.nodeMapper.getLexicalKeyByLoroId(actualTreeID);
85
- if (lexicalKey) {
86
- this.integrateLexicalDataUpdateInternal(value, lexicalKey, actualTreeID);
87
- }
88
- break;
89
- case 'textContent':
90
- // Text content updates should be integrated via lexical data updates
91
- break;
92
- case 'elementType':
93
- // Element type changes are rare, mostly for debugging
94
- break;
95
- default:
96
- // Generic property update with context
97
- break;
98
- }
99
- }
100
- integratePropertyUpdate(key, value, binding, provider) {
101
- // Handle specific property updates
102
- switch (key) {
103
- case 'lexical':
104
- // Use targeted update only - the broad heuristic causes scrambling
105
- break;
106
- case 'textContent':
107
- // Text content updates should be integrated via lexical data updates
108
- break;
109
- case 'elementType':
110
- // Element type changes are rare, mostly for debugging
111
- break;
112
- default:
113
- // Generic property update
114
- break;
115
- }
116
- }
117
- integratePropertyDelete(key, binding, provider) {
118
- // Handle specific property deletions
119
- switch (key) {
120
- case 'lexical':
121
- break;
122
- default:
123
- // Generic property deleted
124
- break;
125
- }
126
- }
127
- integrateLexicalDataUpdateWithContext(lexicalData, treeId, binding) {
128
- // Extract the actual TreeID from container ID format
129
- // Container ID format: "cid:6@7648424808278730813:Map"
130
- // TreeID format: "6@7648424808278730813"
131
- let actualTreeID = treeId;
132
- if (typeof treeId === 'string' && treeId.startsWith('cid:')) {
133
- const parts = treeId.split(':');
134
- if (parts.length >= 3) {
135
- actualTreeID = parts[1]; // Extract "6@7648424808278730813" from "cid:6@7648424808278730813:Map"
136
- }
137
- }
138
- // Use the TreeID to find the specific Lexical node
139
- const lexicalKey = binding.nodeMapper.getLexicalKeyByLoroId(actualTreeID);
140
- if (!lexicalKey) {
141
- return;
142
- }
143
- if (lexicalData && typeof lexicalData === 'object') {
144
- binding.editor.update(() => {
145
- this.integrateLexicalDataUpdateInternal(lexicalData, lexicalKey, actualTreeID);
146
- });
147
- }
148
- }
149
- // Internal method for use when already inside editor.update()
150
- integrateLexicalDataUpdateInternal(lexicalData, lexicalKey, treeId) {
151
- const targetType = lexicalData.type || lexicalData.__type;
152
- const targetNode = $getNodeByKey(lexicalKey);
153
- if (!targetNode) {
154
- return;
155
- }
156
- const textContent = lexicalData.__text || lexicalData.text || lexicalData.textContent;
157
- if (targetType === 'text' && textContent !== undefined) {
158
- // Cast to TextNode to access text-specific methods
159
- if (targetNode.getType() === 'text') {
160
- const textNode = targetNode;
161
- // Only update if the content is actually different to avoid unnecessary updates
162
- const currentText = textNode.getTextContent();
163
- if (currentText !== textContent) {
164
- // Apply the text update using delta to preserve cursor position and minimize disruption
165
- $diffTextContentAndApplyDelta(textNode, lexicalKey, currentText, textContent);
166
- }
167
- // Apply other text properties if present
168
- if (lexicalData.format !== undefined) {
169
- textNode.setFormat(lexicalData.format);
170
- }
171
- if (lexicalData.style !== undefined) {
172
- textNode.setStyle(lexicalData.style);
173
- }
174
- }
175
- }
176
- }
177
- }