@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,44 +0,0 @@
1
- import { LoroDoc, TreeID } from 'loro-crdt';
2
- import { EditorState, LexicalNode, NodeKey, RangeSelection, TextNode } from 'lexical';
3
- export declare const DEFAULT_TREE_NAME = "lexical-tree";
4
- /**
5
- * Generates a consistent client ID from a Loro document.
6
- * Uses the numeric peer ID directly to ensure consistency across all components.
7
- *
8
- * @param doc - The Loro document
9
- * @returns A number representing the client ID
10
- */
11
- export declare function generateClientID(doc: LoroDoc): number;
12
- /**
13
- * Generates a client ID for cases where no document is available.
14
- * Creates a random ID within the safe integer range.
15
- *
16
- * @returns A randomly generated client ID
17
- */
18
- export declare function generateRandomClientID(): number;
19
- /**
20
- * Ensure doc has a LoroTree instance
21
- */
22
- export declare function getLoroTree(doc: LoroDoc, treeName?: string): import("loro-crdt").LoroTree<Record<string, unknown>>;
23
- /**
24
- * Helper function to parse TreeID back to nodeKey and peerId
25
- */
26
- export declare function parseTreeID(treeId: TreeID): {
27
- nodeKey: NodeKey;
28
- peerId: number;
29
- };
30
- /**
31
- * Helper function to get Lexical node information for Loro sync
32
- */
33
- export declare function getLexicalNodeInfo(node: LexicalNode): {
34
- parentKey?: string;
35
- index?: number;
36
- };
37
- /**
38
- * Check if a class extends another class (proper inheritance checking)
39
- */
40
- export declare function isClassExtending(Klass: any, BaseClass: any): boolean;
41
- export declare function toKeyNodeNumber(nodeKey: NodeKey): number;
42
- export declare function $diffTextContentAndApplyDelta(textNode: TextNode, key: NodeKey, prevText: string, nextText: string): void;
43
- export declare function doesSelectionNeedRecovering(selection: RangeSelection): boolean;
44
- export declare function $moveSelectionToPreviousNode(anchorNodeKey: string, currentEditorState: EditorState): void;
@@ -1,153 +0,0 @@
1
- import { $getNodeByKey, $getRoot, $getSelection, $isRangeSelection, $isTextNode } from 'lexical';
2
- import simpleDiffWithCursor from '../../utils/simpleDiffWithCursor';
3
- export const DEFAULT_TREE_NAME = 'lexical-tree';
4
- /**
5
- * Generates a consistent client ID from a Loro document.
6
- * Uses the numeric peer ID directly to ensure consistency across all components.
7
- *
8
- * @param doc - The Loro document
9
- * @returns A number representing the client ID
10
- */
11
- export function generateClientID(doc) {
12
- return Number(doc.peerId);
13
- }
14
- /**
15
- * Generates a client ID for cases where no document is available.
16
- * Creates a random ID within the safe integer range.
17
- *
18
- * @returns A randomly generated client ID
19
- */
20
- export function generateRandomClientID() {
21
- return Math.floor(Math.random() * 2147483647);
22
- }
23
- /**
24
- * Ensure doc has a LoroTree instance
25
- */
26
- export function getLoroTree(doc, treeName = DEFAULT_TREE_NAME) {
27
- const tree = doc.getTree(treeName);
28
- // Enable fractional index for ordered siblings (useful for maintaining order)
29
- // tree.enableFractionalIndex(0.001);
30
- return tree;
31
- }
32
- /**
33
- * Helper function to parse TreeID back to nodeKey and peerId
34
- */
35
- export function parseTreeID(treeId) {
36
- const [nodeKey, peerId] = treeId.split('@');
37
- return {
38
- nodeKey: nodeKey,
39
- peerId: Number(peerId)
40
- };
41
- }
42
- /**
43
- * Helper function to get Lexical node information for Loro sync
44
- */
45
- export function getLexicalNodeInfo(node) {
46
- // TODO: Implement logic to get parent and index from Lexical node
47
- // This is a placeholder that should be replaced with actual Lexical API calls
48
- return {
49
- parentKey: node.getParent()?.getKey(),
50
- index: node.getIndexWithinParent()
51
- };
52
- }
53
- /**
54
- * Check if a class extends another class (proper inheritance checking)
55
- */
56
- export function isClassExtending(Klass, BaseClass) {
57
- // Direct class equality
58
- if (Klass === BaseClass) {
59
- return true;
60
- }
61
- // Check by name (for cases where classes might be different instances)
62
- if (Klass.name === BaseClass.name) {
63
- return true;
64
- }
65
- // Check prototype chain for inheritance
66
- if (Klass.prototype && Object.prototype.isPrototypeOf.call(BaseClass, Klass)) {
67
- return true;
68
- }
69
- return false;
70
- }
71
- export function toKeyNodeNumber(nodeKey) {
72
- // Special case for root node
73
- if (nodeKey === "root") {
74
- return 0;
75
- }
76
- // Attempt to convert NodeKey (string) to a number
77
- const keyAsNumber = Number(nodeKey);
78
- if (!isNaN(keyAsNumber)) {
79
- return keyAsNumber;
80
- }
81
- // If conversion fails, throw an error
82
- throw new Error(`NodeKey "${nodeKey}" cannot be converted to a number. Expected numeric string or "root".`);
83
- }
84
- export function $diffTextContentAndApplyDelta(textNode, key, prevText, nextText) {
85
- const selection = $getSelection();
86
- let cursorOffset = nextText.length;
87
- if ($isRangeSelection(selection) && selection.isCollapsed()) {
88
- const anchor = selection.anchor;
89
- if (anchor.key === key) {
90
- // Ensure cursor offset doesn't exceed the new text length
91
- // This prevents errors when text is split or content changes significantly
92
- cursorOffset = Math.min(anchor.offset, nextText.length);
93
- }
94
- }
95
- const diff = simpleDiffWithCursor(prevText, nextText, cursorOffset);
96
- const beforeSplice = textNode.getTextContent();
97
- textNode.spliceText(diff.index, diff.remove, diff.insert);
98
- const afterSplice = textNode.getTextContent();
99
- }
100
- export function doesSelectionNeedRecovering(selection) {
101
- const anchor = selection.anchor;
102
- const focus = selection.focus;
103
- let recoveryNeeded = false;
104
- try {
105
- const anchorNode = anchor.getNode();
106
- const focusNode = focus.getNode();
107
- if (
108
- // We might have removed a node that no longer exists
109
- !anchorNode.isAttached() ||
110
- !focusNode.isAttached() ||
111
- // If we've split a node, then the offset might not be right
112
- ($isTextNode(anchorNode) &&
113
- anchor.offset > anchorNode.getTextContentSize()) ||
114
- ($isTextNode(focusNode) && focus.offset > focusNode.getTextContentSize())) {
115
- recoveryNeeded = true;
116
- }
117
- }
118
- catch (e) {
119
- // Sometimes checking nor a node via getNode might trigger
120
- // an error, so we need recovery then too.
121
- recoveryNeeded = true;
122
- }
123
- return recoveryNeeded;
124
- }
125
- export function $moveSelectionToPreviousNode(anchorNodeKey, currentEditorState) {
126
- const anchorNode = currentEditorState._nodeMap.get(anchorNodeKey);
127
- if (!anchorNode) {
128
- $getRoot().selectStart();
129
- return;
130
- }
131
- // Get previous node
132
- const prevNodeKey = anchorNode.__prev;
133
- let prevNode = null;
134
- if (prevNodeKey) {
135
- prevNode = $getNodeByKey(prevNodeKey);
136
- }
137
- // If previous node not found, get parent node
138
- if (prevNode === null && anchorNode.__parent !== null) {
139
- prevNode = $getNodeByKey(anchorNode.__parent);
140
- }
141
- if (prevNode === null) {
142
- $getRoot().selectStart();
143
- return;
144
- }
145
- if (prevNode !== null && prevNode.isAttached()) {
146
- prevNode.selectEnd();
147
- return;
148
- }
149
- else {
150
- // If the found node is also deleted, select the next one
151
- $moveSelectionToPreviousNode(prevNode.__key, currentEditorState);
152
- }
153
- }
@@ -1,8 +0,0 @@
1
- import { LoroDoc } from 'loro-crdt';
2
- import { Provider } from './State';
3
- /**
4
- * Create a WebSocket provider for Loro collaboration with periodic ephemeral state synchronization.
5
- * The resyncInterval enables client-side periodic querying to complement server-side cleanup,
6
- * preventing stale user states from accumulating after browser refreshes.
7
- */
8
- export declare function createWebsocketProvider(id: string, docMap: Map<string, LoroDoc>, websocketUrl?: string): Provider;
@@ -1,31 +0,0 @@
1
- import { LoroDoc } from 'loro-crdt';
2
- import { WebsocketProvider } from './provider/websocket';
3
- const url = new URL(window.location.href);
4
- const params = new URLSearchParams(url.search);
5
- const RESYNC_INTERVAL = parseInt(params.get('resyncInterval') || '30000', 10); // Default 30s, configurable via URL
6
- /**
7
- * Create a WebSocket provider for Loro collaboration with periodic ephemeral state synchronization.
8
- * The resyncInterval enables client-side periodic querying to complement server-side cleanup,
9
- * preventing stale user states from accumulating after browser refreshes.
10
- */
11
- export function createWebsocketProvider(id, docMap, websocketUrl) {
12
- let doc = docMap.get(id);
13
- if (doc === undefined) {
14
- doc = new LoroDoc();
15
- docMap.set(id, doc);
16
- }
17
- const providerInstanceId = Math.random().toString(36).substr(2, 9);
18
- console.log(`🏭 Creating WebsocketProvider instance (ID: ${providerInstanceId}) for docId: ${id}`);
19
- // Use provided websocketUrl or fallback to URL parameters/defaults
20
- const finalWebsocketUrl = websocketUrl || (() => {
21
- const url = new URL(window.location.href);
22
- const params = new URLSearchParams(url.search);
23
- return params.get('collabEndpoint') || 'ws://localhost:3002';
24
- })();
25
- const websocketProvider = new WebsocketProvider(finalWebsocketUrl, id, doc, {
26
- connect: false,
27
- resyncInterval: RESYNC_INTERVAL, // Poll ephemeral state periodically to prevent stale user accumulation
28
- });
29
- console.log(`🏭 WebsocketProvider created for: ${finalWebsocketUrl}/${id} with resyncInterval: ${RESYNC_INTERVAL}ms`);
30
- return websocketProvider;
31
- }
@@ -1 +0,0 @@
1
- export default function invariant(cond?: boolean, message?: string, ...args: string[]): asserts cond;
@@ -1,11 +0,0 @@
1
- // invariant(condition, message) will refine types based on "condition", and
2
- // if "condition" is false will throw an error. This function is special-cased
3
- // in flow itself, so we can't name it anything else.
4
- export default function invariant(cond, message, ...args) {
5
- if (cond) {
6
- return;
7
- }
8
- throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile ' +
9
- 'time. There is no runtime version. Error: ' +
10
- message);
11
- }
@@ -1,5 +0,0 @@
1
- export default function simpleDiffWithCursor(a: string, b: string, cursor: number): {
2
- index: number;
3
- insert: string;
4
- remove: number;
5
- };
@@ -1,31 +0,0 @@
1
- export default function simpleDiffWithCursor(a, b, cursor) {
2
- const aLength = a.length;
3
- const bLength = b.length;
4
- let left = 0; // number of same characters counting from left
5
- let right = 0; // number of same characters counting from right
6
- // Iterate left to the right until we find a changed character
7
- // First iteration considers the current cursor position
8
- while (left < aLength &&
9
- left < bLength &&
10
- a[left] === b[left] &&
11
- left < cursor) {
12
- left++;
13
- }
14
- // Iterate right to the left until we find a changed character
15
- while (right + left < aLength &&
16
- right + left < bLength &&
17
- a[aLength - right - 1] === b[bLength - right - 1]) {
18
- right++;
19
- }
20
- // Try to iterate left further to the right without caring about the current cursor position
21
- while (right + left < aLength &&
22
- right + left < bLength &&
23
- a[left] === b[left]) {
24
- left++;
25
- }
26
- return {
27
- index: left,
28
- insert: b.slice(left, bLength - right),
29
- remove: aLength - left - right,
30
- };
31
- }
@@ -1,23 +0,0 @@
1
- import type { LexicalEditor, NodeKey } from 'lexical';
2
- import { Klass, LexicalNode } from 'lexical';
3
- import type { Doc } from 'yjs';
4
- import type { CollabElementNode } from './nodes/CollabElementNode';
5
- import { AnyCollabNode } from './nodes/AnyCollabNode';
6
- import type { Cursor } from './sync/SyncCursors';
7
- import { Provider } from './State';
8
- export type ClientID = number;
9
- export type Binding = {
10
- clientID: ClientID;
11
- collabNodeMap: Map<NodeKey, AnyCollabNode>;
12
- cursors: Map<ClientID, Cursor>;
13
- cursorsContainer: null | HTMLElement;
14
- doc: Doc;
15
- docMap: Map<string, Doc>;
16
- editor: LexicalEditor;
17
- id: string;
18
- nodeProperties: Map<string, Array<string>>;
19
- root: CollabElementNode;
20
- excludedProperties: ExcludedProperties;
21
- };
22
- export type ExcludedProperties = Map<Klass<LexicalNode>, Set<string>>;
23
- export declare function createBinding(editor: LexicalEditor, provider: Provider, id: string, doc: Doc | null | undefined, docMap: Map<string, Doc>, excludedProperties?: ExcludedProperties): Binding;
@@ -1,26 +0,0 @@
1
- import { XmlText } from 'yjs';
2
- import invariant from '../utils/invariant';
3
- import { $createCollabElementNode } from './nodes/CollabElementNode';
4
- import { setupYjsDebugging } from './Debug';
5
- export function createBinding(editor, provider, id, doc, docMap, excludedProperties) {
6
- invariant(doc !== undefined && doc !== null, 'createBinding: doc is null or undefined');
7
- const rootXmlText = doc.get('root', XmlText);
8
- const collabRoot = $createCollabElementNode(rootXmlText, null, 'root');
9
- collabRoot._key = 'root';
10
- const binding = {
11
- clientID: doc.clientID,
12
- collabNodeMap: new Map(),
13
- cursors: new Map(),
14
- cursorsContainer: null,
15
- doc,
16
- docMap,
17
- editor,
18
- excludedProperties: excludedProperties || new Map(),
19
- id,
20
- nodeProperties: new Map(),
21
- root: collabRoot,
22
- };
23
- // Setup Y.js debugging utilities
24
- setupYjsDebugging(binding);
25
- return binding;
26
- }
@@ -1,23 +0,0 @@
1
- import type { Binding } from './Bindings';
2
- /**
3
- * YJS Debugging Interface - Provides comprehensive debugging utilities for Y.js collaboration
4
- */
5
- export interface YjsDebugger {
6
- binding: Binding | null;
7
- logStructure: () => void;
8
- verifyStructure: () => void;
9
- inspectNode: (nodeKey: string) => void;
10
- generateTreeHTML: (node: any, prefix?: string, isLast?: boolean) => string;
11
- addDebugToPage: () => void;
12
- }
13
- /**
14
- * Setup global debugging utilities for Y.js collaboration
15
- * This function creates comprehensive debugging tools including:
16
- * - Tree structure visualization
17
- * - Node inspection utilities
18
- * - Interactive debug panel
19
- * - Console logging functions
20
- *
21
- * @param binding - The Y.js binding instance to debug
22
- */
23
- export declare function setupYjsDebugging(binding: Binding): void;
@@ -1,213 +0,0 @@
1
- /**
2
- * Setup global debugging utilities for Y.js collaboration
3
- * This function creates comprehensive debugging tools including:
4
- * - Tree structure visualization
5
- * - Node inspection utilities
6
- * - Interactive debug panel
7
- * - Console logging functions
8
- *
9
- * @param binding - The Y.js binding instance to debug
10
- */
11
- export function setupYjsDebugging(binding) {
12
- // Setup global debugging for Y.js
13
- window.debugYjs = {
14
- binding: null, // Will be set after binding is created
15
- logStructure: () => {
16
- const binding = window.debugYjs.binding;
17
- if (binding) {
18
- console.log('=== YJS STRUCTURE DEBUG ===');
19
- console.log('Root children:', binding.root._children.length);
20
- binding.root._children.forEach((child, index) => {
21
- console.log(` ${index}: ${child.constructor.name}(${child._key})`);
22
- });
23
- console.log('=== END DEBUG ===');
24
- }
25
- else {
26
- console.log('Y.js binding not available yet');
27
- }
28
- },
29
- verifyStructure: () => {
30
- const binding = window.debugYjs.binding;
31
- if (!binding)
32
- return console.log('❌ Binding not available');
33
- console.log('🔍 YJS STRUCTURE VERIFICATION:');
34
- console.log('Root children count:', binding.root._children.length);
35
- binding.root._children.forEach((child, index) => {
36
- console.log(`\n📍 Root child ${index}:`);
37
- console.log(' Type:', child.constructor.name);
38
- console.log(' Key:', child._key);
39
- console.log(' Element Type:', child.getType ? child.getType() : 'N/A');
40
- console.log(' Children Count:', child._children ? child._children.length : 0);
41
- if (child._children && child._children.length > 0) {
42
- console.log(' Children:');
43
- child._children.forEach((grandChild, gIndex) => {
44
- console.log(` ${gIndex}: ${grandChild.constructor.name}(${grandChild._key})`);
45
- });
46
- }
47
- });
48
- // Check for any orphaned text nodes at root level
49
- const textNodesAtRoot = binding.root._children.filter(child => child.constructor.name === 'CollabTextNode');
50
- if (textNodesAtRoot.length > 0) {
51
- console.log('⚠️ WARNING: Found text nodes directly under root:');
52
- textNodesAtRoot.forEach(node => console.log(' -', node._key));
53
- }
54
- },
55
- inspectNode: (nodeKey) => {
56
- const binding = window.debugYjs.binding;
57
- if (!binding)
58
- return console.log('Binding not available');
59
- // Search for node in tree
60
- const findNode = (node, key) => {
61
- if (node._key === key)
62
- return node;
63
- if (node._children) {
64
- for (const child of node._children) {
65
- const found = findNode(child, key);
66
- if (found)
67
- return found;
68
- }
69
- }
70
- return null;
71
- };
72
- const node = findNode(binding.root, nodeKey);
73
- if (node) {
74
- console.log('🔍 Node Details:', {
75
- key: node._key,
76
- type: node.constructor.name,
77
- elementType: node.getType ? node.getType() : 'N/A',
78
- children: node._children ? node._children.length : 0,
79
- properties: node._xmlText ? 'Has XmlText' : 'No XmlText',
80
- parent: node._parent ? node._parent._key : 'No parent'
81
- });
82
- }
83
- else {
84
- console.warn(`Node with key "${nodeKey}" not found`);
85
- }
86
- },
87
- generateTreeHTML: (node, prefix = '', isLast = true) => {
88
- const nodeKey = node._key || 'no-key';
89
- const nodeType = node.getType ? node.getType() : 'no-type';
90
- const nodeInfo = `${node.constructor.name}(${nodeKey}) [${nodeType}]`;
91
- const connector = isLast ? '└── ' : '├── ';
92
- const childPrefix = prefix + (isLast ? ' ' : '│ ');
93
- const clickIntegrator = nodeKey !== 'no-key' ? `onclick="window.debugYjs.inspectNode('${nodeKey}')"` : '';
94
- const nodeColor = nodeKey !== 'no-key' ? '#00ff88' : '#888';
95
- const cursor = nodeKey !== 'no-key' ? 'cursor: pointer; text-decoration: underline;' : '';
96
- // Convert spaces to non-breaking spaces for proper HTML rendering
97
- const htmlPrefix = prefix.replace(/ /g, '&nbsp;');
98
- const htmlConnector = connector.replace(/ /g, '&nbsp;');
99
- let result = `<div style="color: ${nodeColor}; ${cursor}" ${clickIntegrator}>${htmlPrefix}${htmlConnector}${nodeInfo}</div>`;
100
- if (node._children && node._children.length > 0) {
101
- node._children.forEach((child, index) => {
102
- const isLastChild = index === node._children.length - 1;
103
- if (child) {
104
- result += window.debugYjs.generateTreeHTML(child, childPrefix, isLastChild);
105
- }
106
- else {
107
- const childConnector = isLastChild ? '└── ' : '├── ';
108
- const htmlChildPrefix = childPrefix.replace(/ /g, '&nbsp;');
109
- const htmlChildConnector = childConnector.replace(/ /g, '&nbsp;');
110
- result += `<div style="color: #ffaa00;">${htmlChildPrefix}${htmlChildConnector}null</div>`;
111
- }
112
- });
113
- }
114
- return result;
115
- },
116
- addDebugToPage: () => {
117
- const binding = window.debugYjs.binding;
118
- if (!binding)
119
- return;
120
- // Debug: log the actual structure to console
121
- console.log('🟢 YJS Root structure:', {
122
- rootChildren: binding.root._children.length,
123
- children: binding.root._children.map((child, index) => ({
124
- index,
125
- type: child.constructor.name,
126
- key: child._key,
127
- childrenCount: child._children ? child._children.length : 0,
128
- children: child._children ? child._children.map((grandChild) => ({
129
- type: grandChild.constructor.name,
130
- key: grandChild._key
131
- })) : []
132
- }))
133
- });
134
- const treeHTML = window.debugYjs.generateTreeHTML(binding.root);
135
- const debugDiv = document.getElementById('debug-yjs') || document.createElement('div');
136
- const existingDiv = document.getElementById('debug-yjs');
137
- // Preserve current position if panel already exists
138
- let currentLeft = '10px';
139
- let currentTop = '700px';
140
- if (existingDiv) {
141
- currentLeft = existingDiv.style.left || '10px';
142
- currentTop = existingDiv.style.top || '700px';
143
- }
144
- debugDiv.id = 'debug-yjs';
145
- debugDiv.style.cssText = `position: fixed; top: ${currentTop}; left: ${currentLeft}; background: rgba(0,100,0,0.9); color: white; padding: 0; border-radius: 8px; font-family: "Courier New", monospace; font-size: 11px; z-index: 9999; max-width: 500px; max-height: 80vh; box-shadow: 0 4px 8px rgba(0,0,0,0.3); border: 1px solid #51cf66; user-select: none;`;
146
- // Add drag functionality if not already added
147
- if (!debugDiv.classList.contains('draggable-initialized')) {
148
- debugDiv.classList.add('draggable-initialized');
149
- let isDragging = false;
150
- let startX = 0;
151
- let startY = 0;
152
- let startLeft = 0;
153
- let startTop = 0;
154
- debugDiv.addEventListener('mousedown', (e) => {
155
- // Only start drag if clicking on the header area
156
- const target = e.target;
157
- const dragHandle = debugDiv.querySelector('.debug-drag-handle');
158
- if (!dragHandle || !dragHandle.contains(target))
159
- return;
160
- isDragging = true;
161
- startX = e.clientX;
162
- startY = e.clientY;
163
- const rect = debugDiv.getBoundingClientRect();
164
- startLeft = rect.left;
165
- startTop = rect.top;
166
- document.addEventListener('mousemove', onMouseMove);
167
- document.addEventListener('mouseup', onMouseUp);
168
- e.preventDefault();
169
- });
170
- function onMouseMove(e) {
171
- if (!isDragging)
172
- return;
173
- const deltaX = e.clientX - startX;
174
- const deltaY = e.clientY - startY;
175
- const newLeft = Math.max(0, Math.min(window.innerWidth - debugDiv.offsetWidth, startLeft + deltaX));
176
- const newTop = Math.max(0, Math.min(window.innerHeight - debugDiv.offsetHeight, startTop + deltaY));
177
- debugDiv.style.left = newLeft + 'px';
178
- debugDiv.style.top = newTop + 'px';
179
- }
180
- function onMouseUp() {
181
- isDragging = false;
182
- document.removeEventListener('mousemove', onMouseMove);
183
- document.removeEventListener('mouseup', onMouseUp);
184
- }
185
- }
186
- debugDiv.innerHTML = `
187
- <div class="debug-drag-handle" style="color: #51cf66; font-weight: bold; margin-bottom: 10px; border-bottom: 1px solid #444; padding: 15px 15px 5px 15px; cursor: move; background: linear-gradient(90deg, rgba(81,207,102,0.1), transparent);">
188
- 🟢 YJS STRUCTURE <span style="float: right; font-size: 9px; color: #666;">⋮⋮ drag</span>
189
- </div>
190
- <div style="padding: 0 15px 15px 15px; overflow-y: auto; max-height: calc(80vh - 50px);">
191
- <div style="color: #74c0fc; margin-bottom: 8px;">Root children: ${binding.root._children.length}</div>
192
- <div style="color: #ffd43b; margin-bottom: 10px;">Time: ${new Date().toLocaleTimeString()}</div>
193
- <div style="border-top: 1px solid #444; padding-top: 8px;">
194
- ${treeHTML}
195
- </div>
196
- <div style="margin-top: 10px; font-size: 10px; color: #888;">
197
- <span onclick="window.debugYjs.addDebugToPage()" style="color: #74c0fc; cursor: pointer; text-decoration: underline;">🔄 Refresh</span> |
198
- <span onclick="window.debugYjs.verifyStructure()" style="color: #00ff88; cursor: pointer; text-decoration: underline;">✅ Verify</span> |
199
- <span onclick="window.debugYjs.logStructure()" style="color: #ffd43b; cursor: pointer; text-decoration: underline;">📝 Console Log</span> |
200
- <span onclick="document.getElementById('debug-yjs').remove()" style="color: #51cf66; cursor: pointer; text-decoration: underline;">❌ Close</span>
201
- </div>
202
- </div>
203
- `;
204
- document.body.appendChild(debugDiv);
205
- }
206
- };
207
- // Expose binding for debugging
208
- window.debugYjs.binding = binding;
209
- // Auto-initialize debug window after a short delay
210
- setTimeout(() => {
211
- window.debugYjs.addDebugToPage();
212
- }, 1500); // Slightly later than Y.js to avoid overlap
213
- }
@@ -1,10 +0,0 @@
1
- import type { Doc } from 'yjs';
2
- export type CollaborationContextType = {
3
- clientID: number;
4
- color: string;
5
- isCollabActive: boolean;
6
- name: string;
7
- docMap: Map<string, Doc>;
8
- };
9
- export declare const CollaborationContext: import("react").Context<CollaborationContextType>;
10
- export declare function useCollaborationContext(username?: string, color?: string): CollaborationContextType;
@@ -1,37 +0,0 @@
1
- import { createContext, useContext } from 'react';
2
- const ENTRIES = [
3
- ['Cat', 'rgb(125, 50, 0)'],
4
- ['Dog', 'rgb(100, 0, 0)'],
5
- ['Rabbit', 'rgb(150, 0, 0)'],
6
- ['Frog', 'rgb(200, 0, 0)'],
7
- ['Fox', 'rgb(200, 75, 0)'],
8
- ['Hedgehog', 'rgb(0, 75, 0)'],
9
- ['Pigeon', 'rgb(0, 125, 0)'],
10
- ['Squirrel', 'rgb(75, 100, 0)'],
11
- ['Bear', 'rgb(125, 100, 0)'],
12
- ['Tiger', 'rgb(0, 0, 150)'],
13
- ['Leopard', 'rgb(0, 0, 200)'],
14
- ['Zebra', 'rgb(0, 0, 250)'],
15
- ['Wolf', 'rgb(0, 100, 150)'],
16
- ['Owl', 'rgb(0, 100, 100)'],
17
- ['Gull', 'rgb(100, 0, 100)'],
18
- ['Squid', 'rgb(150, 0, 150)'],
19
- ];
20
- const randomEntry = ENTRIES[Math.floor(Math.random() * ENTRIES.length)];
21
- export const CollaborationContext = createContext({
22
- clientID: 0,
23
- color: randomEntry[1],
24
- isCollabActive: false,
25
- name: randomEntry[0],
26
- docMap: new Map(),
27
- });
28
- export function useCollaborationContext(username, color) {
29
- const collabContext = useContext(CollaborationContext);
30
- if (username != null) {
31
- collabContext.name = username;
32
- }
33
- if (color != null) {
34
- collabContext.color = color;
35
- }
36
- return collabContext;
37
- }
@@ -1,21 +0,0 @@
1
- import type { JSX } from 'react';
2
- import type { Doc } from 'yjs';
3
- import { InitialEditorStateType } from '@lexical/react/LexicalComposer';
4
- import { Provider } from './State';
5
- import { CursorsContainerRef } from './useCollaboration';
6
- import { SyncCursorPositionsFn } from './sync/SyncCursors';
7
- import { ExcludedProperties } from './Bindings';
8
- type Props = {
9
- id: string;
10
- providerFactory: (id: string, docMap: Map<string, Doc>) => Provider;
11
- shouldBootstrap: boolean;
12
- username?: string;
13
- cursorColor?: string;
14
- cursorsContainerRef?: CursorsContainerRef;
15
- initialEditorState?: InitialEditorStateType;
16
- excludedProperties?: ExcludedProperties;
17
- awarenessData?: object;
18
- syncCursorPositionsFn?: SyncCursorPositionsFn;
19
- };
20
- export declare function CollaborationPlugin({ id, providerFactory, shouldBootstrap, username, cursorColor, cursorsContainerRef, initialEditorState, excludedProperties, awarenessData, syncCursorPositionsFn, }: Props): JSX.Element;
21
- export {};